diff --git a/Gruntfile.js b/Gruntfile.js index 0a279f749..a7bd4fe62 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -268,7 +268,7 @@ module.exports = function ( grunt ) { overwrite: true, replacements: [ { - from: /UAGB_VER', '.*?'/g, + from: /SRFM_VER', '.*?'/g, to: "SRFM_VER', '<%= pkg.version %>'", }, ], diff --git a/README.md b/README.md index f501560fd..59f74f8e1 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ **Requires at least:** 6.4 **Tested up to:** 7.1 **Requires PHP:** 7.4 -**Stable tag:** 2.12.6 +**Stable tag:** 2.12.7 **License:** GPLv2 or later **License URI:** http://www.gnu.org/licenses/gpl-2.0.html @@ -426,6 +426,15 @@ Visit the [SureForms features page](https://sureforms.com/features/?utm_source=w You can report security issues through our [Bug Bounty Program](https://brainstormforce.com/bug-bounty-program/). We collaborate with Patchstack to validate, triage, and handle security reports. ## Changelog ## +### 2.12.7 - 12th September 2026 ### +* Improvement: Submission failure notices now offer View details, so you can read and copy the full diagnostics before contacting support. +* Improvement: The Form Checks panel now appears only when something genuinely needs attention, with clearer wording, keeping the sidebar focused. +* Fix: After-submission actions now complete reliably when a form redirects on success. +* Fix: Form pages now keep their styles and submit script on sites using page builders that buffer page output, such as Breakdance. +* Fix: Form submissions no longer drop fields when a caching plugin serves an older copy of the page, so every submitted field is saved to the entry. +* Fix: The conversion rate no longer counts submissions made by site editors while previewing a form. +* Fix: The Edit Form icon is no longer oversized in Divi. +* Fix: This update addressed a security bug. Props to nh4tvd from Patchstack for reporting it responsibly to our team. ### 2.12.6 - 2nd September 2026 ### * New: Added an Enable Logs option that records form submission failures to a downloadable file, making it easier to diagnose issues on a live site. * New: Added Views and Conversion Rate columns to the Forms list, so you can see how each form is performing at a glance. @@ -434,9 +443,6 @@ You can report security issues through our [Bug Bounty Program](https://brainsto * Fix: This update addressed a security bug. Props to Patchstack for reporting it responsibly to our team. ### 2.12.5 - 25th August 2026 ### * Fix: Form submissions now go through reliably, even on sites where a performance plugin combines or defers JavaScript. -### 2.12.4 - 19th August 2026 ### -* Improvement: Email notification images are now saved to the Media Library instead of being embedded as base64, improving email deliverability and reducing message size. -* Fix: Compatibility with WordPress 7.1. The full changelog is available [here](https://sureforms.com/whats-new/?utm_source=wordpress.org&utm_medium=whats_new). ## Upgrade Notice ## \ No newline at end of file diff --git a/admin/admin.php b/admin/admin.php index 876595ecf..25a308164 100644 --- a/admin/admin.php +++ b/admin/admin.php @@ -88,6 +88,17 @@ class Admin { */ public const THANKYOU_PROMPT_NOTICE_ID = 'srfm-thankyou-prompt'; + /** + * Where the dialog's Contact Support button goes. + * + * A form rather than an inbox: it collects the licence and site details support + * would otherwise have to ask for, and the diagnostics are already on the + * clipboard by the time someone gets here. + * + * @since 2.12.7 + */ + private const SUPPORT_CONTACT_URL = 'https://sureforms.com/form/troubleshooting-form/'; + /** * Dashboard widget entries data. * @@ -138,6 +149,23 @@ class Admin { */ private static $setup_card_cache = []; + /** + * Action items for this request, or null before the first build. + * + * Built twice on every admin page without this -- once for the localisation + * payload, once in the classic renderer -- and each open failure category reads + * a log excerpt. get_action_items() also records an impression, which running + * twice counted twice. + * + * Reset with reset_action_items_cache(). Admin is a singleton, so without that + * the first build pins the answer for the whole process and any test that + * records a failure and then asks again is testing the memo. + * + * @var array>|null + * @since 2.12.7 + */ + private static $action_items_cache = null; + /** * Class constructor. * @@ -176,6 +204,9 @@ public function __construct() { // in place before admin_enqueue_scripts localizes it. add_action( 'admin_init', [ $this, 'register_database_repair_notice' ], 5 ); add_action( 'admin_notices', [ $this, 'render_action_item_notices' ] ); + // Late priority so the items are built after anything hooking + // srfm_action_items has had a chance to register. + add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_action_item_styles' ], 20 ); add_action( 'admin_notices', [ $this, 'render_database_repair_notice' ] ); add_action( 'admin_post_srfm_repair_entries_table', [ $this, 'handle_database_repair' ] ); // Display notices on traditional WordPress admin pages. @@ -202,6 +233,7 @@ public function __construct() { add_action( 'wp_ajax_sureforms_dismiss_pointer', [ $this, 'pointer_dismissed' ] ); add_action( 'wp_ajax_sureforms_accept_cta', [ $this, 'pointer_accepted_cta' ] ); add_action( 'wp_ajax_srfm_notice_response', [ $this, 'handle_notice_response' ] ); + add_action( 'wp_ajax_srfm_action_item_details', [ $this, 'handle_action_item_details' ] ); add_action( 'wp_ajax_srfm_dismiss_action_item', [ $this, 'handle_dismiss_action_item' ] ); add_action( 'admin_post_srfm_dismiss_action_item_link', [ $this, 'handle_dismiss_action_item_link' ] ); add_action( 'wp_ajax_srfm_ai_widget_usage', [ $this, 'track_ai_widget_usage' ] ); @@ -447,6 +479,20 @@ public static function get_thankyou_prompt_forms() { return self::$thankyou_prompt_cache; } + /** + * Clear the request memo for the action items. + * + * Admin is a singleton, so the memo outlives a request in a test process. + * Anything that records or clears a failure inside one process has to call + * this, or it reads the answer from before the change. + * + * @since 2.12.7 + * @return void + */ + public static function reset_action_items_cache() { + self::$action_items_cache = null; + } + /** * Clear the request memo for the Thank You prompt (#3030). * @@ -1773,6 +1819,14 @@ public function enqueue_scripts() { 'ajax_url' => admin_url( 'admin-ajax.php' ), 'client_logs_nonce' => Helper::current_user_can() ? wp_create_nonce( 'srfm_client_logs' ) : '', 'action_items' => $this->get_action_items(), + 'details_dialog' => $this->get_details_dialog_labels(), + // Where Contact Support goes when the details fetch fails and there is + // no category-tagged URL to use. Untagged, because at that point we do + // not know which check sent them -- but still a way out: these notices + // are not dismissible and Contact Support is the only action that + // retires them. + 'support_url' => $this->get_support_contact_url( '' ), + 'action_item_details_nonce' => Helper::current_user_can() ? wp_create_nonce( 'srfm_action_item_details' ) : '', 'notice_response_nonce' => Helper::current_user_can() ? wp_create_nonce( 'srfm_notice_response' ) : '', 'dismiss_action_item_nonce' => Helper::current_user_can() ? wp_create_nonce( 'srfm_dismiss_action_item' ) : '', 'sf_plugin_manager_nonce' => wp_create_nonce( 'sf_plugin_manager_nonce' ), @@ -2764,8 +2818,87 @@ public function enqueue_notice_response_script() { 'srfm-notice-response', 'srfmNoticeResponse', [ - 'ajaxurl' => admin_url( 'admin-ajax.php' ), - 'nonce' => wp_create_nonce( 'srfm_notice_response' ), + 'ajaxurl' => admin_url( 'admin-ajax.php' ), + 'nonce' => wp_create_nonce( 'srfm_notice_response' ), + // The diagnostics are fetched when the dialog opens rather than + // shipped with every page, so the dialog needs its own nonce. + 'detailsNonce' => wp_create_nonce( 'srfm_action_item_details' ), + // Carousel chrome. Built in the browser rather than printed here so + // that with JavaScript off every notice simply stays visible, which + // is the behaviour this replaced -- controls that cannot work must + // not be what hides a warning. + 'carousel' => [ + 'previous' => __( 'Previous notice', 'sureforms' ), + 'next' => __( 'Next notice', 'sureforms' ), + /* translators: 1: current position, 2: total notices. */ + 'counter' => __( '%1$d of %2$d', 'sureforms' ), + ], + // Details modal chrome, translated here so the script carries no + // user-facing English of its own. + 'details' => $this->get_details_dialog_labels(), + // Where Contact Support goes when the fetch fails and there is no + // category-tagged URL to use. Untagged, because at that point we do + // not know which check sent them -- but still a way out: these + // notices are not dismissible and Contact Support is the only action + // that retires them. + 'supportUrl' => $this->get_support_contact_url( '' ), + ] + ); + } + + /** + * Serve one failure category's diagnostics, on demand. + * + * Hooked - wp_ajax_srfm_action_item_details. + * + * The report is built here rather than shipped with the page. Its content + * comes from the client error log, and that log is filled through a public + * REST route gated on a submit token any visitor can obtain from a form page + * rather than on a capability -- so the text is attacker-authored, and putting + * it in the localisation JSON and a hidden div on every admin screen exposed + * it far beyond the one admin who opens the dialog. + * + * Capability first, then nonce, then the category, matching the ordering of + * the sibling handlers in this class. + * + * @since 2.12.7 + * @return void + */ + public function handle_action_item_details() { + if ( ! Helper::current_user_can() ) { + wp_send_json_error( [ 'message' => __( 'Unauthorized user.', 'sureforms' ) ], 403 ); + return; + } + + if ( ! check_ajax_referer( 'srfm_action_item_details', 'nonce', false ) ) { + wp_send_json_error( [ 'message' => __( 'Invalid nonce.', 'sureforms' ) ], 403 ); + return; + } + + // sanitize_key() returns '' for anything non-scalar (formatting.php:2194), so + // a category[]= in the body arrives here as the empty string and falls into + // the refusal below rather than needing a type branch of its own. + $category = isset( $_POST['category'] ) ? sanitize_key( wp_unslash( $_POST['category'] ) ) : ''; + + // The only check the category needs, and the reason there is no separate + // allowlist above it: get_open_failures() returns nothing but keys in + // Client_Logger::CATEGORIES, so an absent category, an unrecognised one and + // a recognised one with nothing wrong all land here. Asking for a category + // with no fault must not mint a report describing one. + $open = Client_Logger::get_open_failures(); + + if ( ! isset( $open[ $category ] ) ) { + wp_send_json_error( [ 'message' => __( 'Nothing to report.', 'sureforms' ) ], 404 ); + return; + } + + $form_title = Helper::get_string_value( $open[ $category ]['form_title'] ?? '' ); + + wp_send_json_success( + [ + 'details' => $this->get_support_message( $category, $form_title ) + . "\n\n" . $this->get_support_log_block( 8000 ), + 'support_url' => $this->get_support_contact_url( $category ), ] ); } @@ -2814,14 +2947,21 @@ public function handle_notice_response() { ], // The "Finish setting up" prompt (#3030): three CTAs, plus the ✕. 'form_submission_error' => [ + 'view_details' => 'submission_failure_notice_view', + 'copy_details' => 'submission_failure_notice_copy', 'contact_support' => 'submission_failure_notice_cta', 'dismissed' => 'submission_failure_notice_dismiss', ], 'notification_error' => [ + 'view_details' => 'notification_failure_notice_view', + 'copy_details' => 'notification_failure_notice_copy', 'contact_support' => 'notification_failure_notice_cta', + 'help_me_fix' => 'notification_failure_notice_guide', 'dismissed' => 'notification_failure_notice_dismiss', ], 'integration_error' => [ + 'view_details' => 'integration_failure_notice_view', + 'copy_details' => 'integration_failure_notice_copy', 'contact_support' => 'integration_failure_notice_cta', 'dismissed' => 'integration_failure_notice_dismiss', ], @@ -2845,8 +2985,7 @@ public function handle_notice_response() { return; } - $event_name = $valid[ $notice_id ][ $button ]; - Analytics::events()->track( $event_name, $button ); + $this->track_notice_event( $valid[ $notice_id ][ $button ] ); // Reporting the failures retires the notice until something new fails. // Handled here rather than in the browser so it holds for the classic @@ -3410,9 +3549,27 @@ public function render_action_item_notices() { return; } + $items = $this->get_action_items(); + + // Only the faults reach this surface, so count those before deciding + // whether the carousel stylesheet is worth printing. + $rendered = 0; + + foreach ( $items as $item ) { + $status = Helper::get_string_value( $item['status'] ?? '' ); + + if ( 'success' !== $status && '' !== $status ) { + $rendered++; + } + } + + if ( 0 === $rendered ) { + return; + } + $this->enqueue_notice_response_script(); - foreach ( $this->get_action_items() as $item ) { + foreach ( $items as $item ) { $status = Helper::get_string_value( $item['status'] ?? '' ); // Passing checks belong in the SureForms panel, not in wp-admin. A @@ -3425,19 +3582,69 @@ public function render_action_item_notices() { // but they are not the same kind of message and should not look alike. $class = 'error' === $status ? 'notice-error' : 'notice-warning'; ?> -
-

-

+
+ +

+

+

- - > - - + + + + + + + + > + + + @@ -3475,27 +3682,57 @@ public function handle_dismiss_action_item_link() { } /** - * Whether anything is currently wrong enough to warrant a notice. - * - * Deliberately re-derives the two conditions rather than calling - * get_action_items(), which records an impression as a side effect and must not - * run from a show_if callback. + * Whether a first-party warning is currently on screen. + * + * Asked from the show_if of the rating, Getting Started and Thank You notices, + * all of which are gated on nothing being wrong. "Wrong" has to mean the same + * thing here as it does to the person looking at the screen. + * + * It used to re-state the conditions instead of reading them, and the + * restatement was narrower than the display: has_persistent_failures() reads + * the `submission` counter alone, while the notices and the Form Checks panel + * warn on any open failure in any of the three categories. So an open + * notification or integration failure left this false, and the review ask + * appeared directly beneath "We noticed a notification failure on Contact + * Form". Submission was covered only incidentally, by FAULT_THRESHOLD being 1 -- + * raise that and it would have joined them. + * + * Derived from get_first_party_action_items() now, which is the thing that + * builds those warnings, so the gate cannot drift from the display again. + * + * Two constraints kept from the previous version. It must not call + * get_action_items(): that records an impression as a side effect and must + * never run from a show_if. And it reads the first-party set specifically, so + * an item contributed through `srfm_action_items` cannot suppress notices that + * have nothing to do with it. + * + * Returns false with logging disabled, which is what makes those notices + * eligible again on a site that has turned this surface off. Intended: with the + * surface off there is nothing being reported. * * @since 2.12.6 * @return bool */ public function has_action_item_warnings() { - if ( Client_Logger::has_persistent_failures() ) { - return true; - } - - if ( '' === Helper::get_active_caching_plugin() ) { + if ( ! Client_Logger::is_enabled() ) { return false; } - $dismissed = Helper::get_array_value( Helper::get_srfm_option( 'dismissed_action_items', [] ) ); + foreach ( $this->get_first_party_action_items() as $item ) { + if ( ! is_array( $item ) ) { + continue; + } + + $status = Helper::get_string_value( $item['status'] ?? '' ); + + // Matches the renderers: 'success' is a passing check and an empty + // status is not a warning either, so neither suppresses anything. + if ( 'success' !== $status && '' !== $status ) { + return true; + } + } - return ! in_array( 'caching_plugin', $dismissed, true ); + return false; } /** @@ -3517,11 +3754,367 @@ public function get_action_items() { return []; } - $dismissed = Helper::get_array_value( Helper::get_srfm_option( 'dismissed_action_items', [] ) ); - $warnings = []; - $passing = []; + // Memoised for the request. This runs twice on every admin page -- once + // building the localisation payload and once in the classic renderer -- and + // each open category reads a log excerpt. It also records an impression, so + // running twice counted twice. Matches the $thankyou_prompt_cache and + // $setup_card_cache pattern already in this class. + if ( null !== self::$action_items_cache ) { + return self::$action_items_cache; + } - $open = Client_Logger::get_open_failures(); + // Logging off is the opt-out for this surface. Not because the counters go + // stale -- Client_Logger::record_failure() has no enabled check, and the + // notification and integration categories are written by direct calls in + // inc/form-submit.php that keep counting accurately with logging off. It is + // simply the switch a site owner has to turn these notices off, and it + // covers our own items only: the filter below still runs, because a third + // party's advisory has nothing to do with SureForms' logging toggle. + $warnings = []; + + if ( Client_Logger::is_enabled() ) { + $warnings = $this->get_first_party_action_items(); + } + + $this->track_action_item_impressions( $warnings ); + + /** + * Filter the dashboard action items. + * + * Each entry needs id, status ('warning' or 'success'), title, message, + * cta_label, cta_url and dismissible. Only ids in + * handle_dismiss_action_item()'s allowlist can actually be dismissed, so + * adding a dismissible item here also needs a line there. + * + * The details dialog is not available here: it is served by + * handle_action_item_details(), which reads SureForms' own client error log + * and knows nothing about a third-party item. Such an item's cta_url is + * followed as a link, which is what it does with JavaScript off anyway. + * + * @since 2.12.6 + * + * @param array> $items Action items. + */ + $items = Helper::apply_filters_as_array( 'srfm_action_items', $warnings ); + + // Both URLs normalised once, here, rather than trusting each renderer to do + // it. Two things are being fixed at once. + // + // The scheme: the classic notice runs esc_url() and drops anything outside + // the allowlist, while React assigns href directly and react-dom 18 leaves + // a javascript: URL intact -- its sanitizeURL() only warns, and the warning + // is compiled out of the production build. esc_url_raw() with the same + // allowlist closes both. + // + // The ampersands: Helper::get_sureforms_website_url() returns an esc_url()'d + // string, so a URL with UTM parameters arrives with & in it. In an HTML + // href the browser decodes that; React sets the property directly, so the + // entity would be sent to the server verbatim. Decoded to one raw form here, + // and each renderer escapes it for its own context. + foreach ( $items as $index => $item ) { + // A filter may hand back an object. isset() on it returns false, which + // would slip the item past both the URL normalisation and the + // sanitize_key() below without any sign that it had. + if ( ! is_array( $item ) ) { + continue; + } + + foreach ( [ 'cta_url', 'guide_url' ] as $key ) { + if ( ! isset( $item[ $key ] ) ) { + continue; + } + + $items[ $index ][ $key ] = esc_url_raw( + wp_specialchars_decode( Helper::get_string_value( $item[ $key ] ), ENT_QUOTES ), + [ 'http', 'https', 'mailto' ] + ); + } + + // The id ends up in a data attribute the dialog matches on with an + // attribute selector, and in the dismiss allowlist. sanitize_key() is + // what both dismiss paths already apply, so applying it once here means + // the value that renders is the value they compare against -- and a + // filter-contributed id carrying a quote cannot break the selector. + if ( isset( $item['id'] ) ) { + $items[ $index ]['id'] = sanitize_key( Helper::get_string_value( $item['id'] ) ); + } + } + + self::$action_items_cache = $items; + + return $items; + } + + /** + * Dismiss one action item. + * + * Hooked - wp_ajax_srfm_dismiss_action_item. + * + * Only items get_action_items() marks dismissible can be dismissed, so a + * crafted request cannot silence a genuine fault. + * + * @since 2.12.6 + * @return void + */ + public function handle_dismiss_action_item() { + if ( ! Helper::current_user_can() ) { + wp_send_json_error( [ 'message' => __( 'Unauthorized user.', 'sureforms' ) ], 403 ); + return; + } + + if ( ! check_ajax_referer( 'srfm_dismiss_action_item', 'nonce', false ) ) { + wp_send_json_error( [ 'message' => __( 'Invalid nonce.', 'sureforms' ) ], 403 ); + return; + } + + $item_id = isset( $_POST['item_id'] ) ? sanitize_key( wp_unslash( $_POST['item_id'] ) ) : ''; + + if ( ! $this->dismiss_action_item( $item_id ) ) { + wp_send_json_error( [ 'message' => __( 'Invalid parameters.', 'sureforms' ) ], 400 ); + return; + } + + wp_send_json_success(); + } + + /** + * The stylesheet for the notice carousel and the details dialog. + * + * In a stylesheet rather than inline style assignments in + * notice-response.js, so the rules use logical properties, an RTL sheet can + * override them, and a site can restyle the dialog without patching a script. + * + * Only the classic wp-admin surface needs these. The SureForms dashboard's + * dialog is force-ui's, styled by the Tailwind build, so nothing here reaches + * it -- the two surfaces share their strings, not their markup. + * + * Attached to a registered handle with no file of its own, which is the WP way + * to ship CSS tied to one script. + * + * Hooked to admin_enqueue_scripts rather than called from the renderer. + * admin_notices fires from admin-header.php after admin_print_styles has + * flushed the head, so enqueuing there reached the page only through core's + * late-styles pass in the footer -- and until that parsed, every stacked notice + * rendered expanded before collapsing to one, the carousel controls overlapped + * the notice text, and the defensive `display: none` on the hidden payload was + * inert, which is the exact window that rule exists for. + * + * The buttons are painted explicitly. They carry core's `button` classes for + * their shape and focus behaviour, and core paints those with + * `var(--wp-admin-theme-color)` -- so without this the dialog renders in + * whichever admin colour scheme the user picked, which on a default install is + * blue, on a SureForms panel that is otherwise entirely brand orange. Same + * approach and same values as print_srfm_notice_styles(). + * + * @since 2.12.7 + * @return void + */ + public function enqueue_action_item_styles() { + if ( wp_style_is( 'srfm-action-items', 'enqueued' ) ) { + return; + } + + if ( ! Helper::current_user_can() ) { + return; + } + + // Nothing to style unless the carousel is actually going to build. Cheap to + // ask: get_action_items() is memoised for the request. + // + // Two, not one: notice-response.js bails below two cards, so these rules + // have no consumer on a site with a single open fault. + $notices = 0; + + foreach ( $this->get_action_items() as $item ) { + $status = Helper::get_string_value( is_array( $item ) ? $item['status'] ?? '' : '' ); + + if ( 'success' !== $status && '' !== $status ) { + $notices++; + } + } + + if ( $notices < 2 ) { + return; + } + + wp_register_style( 'srfm-action-items', false, [], SRFM_VER ); + wp_enqueue_style( 'srfm-action-items' ); + + $css = <<<'CSS' +.srfm-action-item-carousel { position: relative; } +.srfm-action-item-carousel .srfm-action-item-notice { padding-inline-end: var(--srfm-carousel-reserve, 130px); } +/* [hidden] is only a UA rule, and WordPress sets display on .notice, so a + third-party admin sheet can otherwise put a notice the carousel has hidden back + on screen. */ +.srfm-action-item-carousel .srfm-action-item-notice[hidden] { display: none; } +.srfm-action-item-carousel-nav { + position: absolute; + top: 8px; + inset-inline-end: 12px; + margin: 0; + display: flex; + align-items: center; + gap: 8px; +} +.srfm-details-overlay { + position: fixed; + inset: 0; + z-index: 999999; + display: flex; + align-items: center; + justify-content: center; + background: rgba(0, 0, 0, .5); + padding: 16px; +} +.srfm-details-panel { + background: #fff; + border-radius: 8px; + padding: 16px; + width: 100%; + max-width: 800px; + box-shadow: 0 10px 30px rgba(0, 0, 0, .2); +} +.srfm-details-panel h2 { margin: 0 0 4px; font-size: 14px; } +.srfm-details-panel .srfm-details-description { margin: 0 0 12px; color: #50575e; } +.srfm-details-panel pre { + margin: 0; + max-height: 320px; + overflow: auto; + white-space: pre-wrap; + word-break: break-word; + background: #f6f7f7; + padding: 12px; + border-radius: 6px; + font-size: 12px; +} +.srfm-details-actions { + display: flex; + gap: 8px; + align-items: center; + flex-wrap: wrap; + justify-content: flex-end; + margin: 12px 0 0; +} +.srfm-details-hint { + margin-inline-end: auto; + font-size: 12px; + color: #4b5563; +} +/* Core paints .button with the admin colour scheme, so these say what they are + rather than inheriting whichever scheme the user picked. */ +.srfm-details-panel .srfm-details-close.button-link { + color: #50575e; + text-decoration: none; +} +.srfm-details-panel .srfm-details-close.button-link:hover, +.srfm-details-panel .srfm-details-close.button-link:focus { + color: #1e1e1e; +} +.srfm-details-panel .srfm-details-copy.button { + background: #fff; + border-color: #c3c4c7; + color: #1e1e1e; +} +.srfm-details-panel .srfm-details-copy.button:hover, +.srfm-details-panel .srfm-details-copy.button:focus { + background: #f6f7f7; + border-color: #8c8f94; + color: #1e1e1e; +} +.srfm-details-panel .srfm-details-contact.button-primary, +.srfm-details-panel .srfm-details-contact.button-primary:hover, +.srfm-details-panel .srfm-details-contact.button-primary:focus { + background: #D54407; + border-color: #D54407; + color: #fff; + box-shadow: none; + text-shadow: none; + text-decoration: none; +} +.srfm-details-panel .srfm-details-contact.button-primary:hover, +.srfm-details-panel .srfm-details-contact.button-primary:focus { + background: #C83B00; + border-color: #C83B00; +} +/* Grey rather than a dimmed orange fill. Core sets the disabled text colour with + !important, so an orange background here leaves grey on orange at 1.31:1 -- + and a control that cannot be used should not wear the primary colour anyway. + This is what core gives every other disabled button, and what force-ui renders + for the same state on the dashboard, so the two surfaces agree. */ +.srfm-details-panel .srfm-details-contact.button-primary[aria-disabled="true"], +.srfm-details-panel .srfm-details-contact.button-primary[aria-disabled="true"]:hover, +.srfm-details-panel .srfm-details-contact.button-primary[aria-disabled="true"]:focus { + background: #f6f7f7; + border-color: #dcdcde; + pointer-events: none; + box-shadow: none; +} +.srfm-details-panel .button:focus { + outline: 2px solid #D54407; + outline-offset: 1px; + box-shadow: none; +} +CSS; + + wp_add_inline_style( 'srfm-action-items', $css ); + } + + /** + * The details dialog's strings. + * + * One array, two consumers: the classic wp-admin dialog in + * notice-response.js, and the dashboard's force-ui one. Declared here rather + * than inline in each, because the same sentence written as `__()` in PHP and + * again in JSX looks identical to translators until the first edit to either, + * after which one surface silently reverts to English. + * + * @since 2.12.7 + * @return array + */ + private function get_details_dialog_labels() { + return [ + 'title' => __( 'Details', 'sureforms' ), + 'description' => __( 'What we recorded about this problem. Copy it into your support request so we can start from the cause rather than a description of it.', 'sureforms' ), + 'copy' => __( 'Copy details', 'sureforms' ), + 'copied' => __( 'Copied', 'sureforms' ), + 'contact' => __( 'Contact Support', 'sureforms' ), + 'close' => __( 'Close', 'sureforms' ), + // Shown beside the buttons rather than as a title attribute: + // pointer-events:none suppresses the native tooltip, a title + // never fires on keyboard focus, and screen readers commonly + // drop it on an unavailable control -- so the sentence saying + // why the button is inert could not be read by anyone. + 'copyFirst' => __( 'Copy the details first, so you have them to paste.', 'sureforms' ), + // The unlock changes the label, the icon and whether Contact + // Support works, none of which was announced. This goes in a + // role="status" node so it is. + 'unlocked' => __( 'Copied. Contact Support is now available.', 'sureforms' ), + 'copyFailed' => __( 'Your browser would not let us copy. Select the text above and copy it by hand.', 'sureforms' ), + // The scrollable diagnostics block is focusable, so it needs a name of + // its own. + 'logRegion' => __( 'Recorded diagnostics', 'sureforms' ), + // The dialog opens before its payload arrives -- see + // handle_action_item_details() for why the report is not shipped with + // the page. + 'loading' => __( 'Collecting the details…', 'sureforms' ), + 'unavailable' => __( 'We could not collect the details. Contact Support and describe what happened, and we will take it from there.', 'sureforms' ), + ]; + } + + /** + * SureForms' own action items, before the filter. + * + * Split out so the Enable Logs gate in get_action_items() can sit above this + * rather than above `srfm_action_items`. An item contributed through that + * filter has nothing to do with SureForms' logging toggle, and was being + * silenced by it. + * + * @since 2.12.7 + * @return array> + */ + private function get_first_party_action_items() { + $warnings = []; + $open = Client_Logger::get_open_failures(); // One item per category. They read differently to a site owner and must not // be collapsed: submissions failing means visitors cannot reach you, a @@ -3533,38 +4126,36 @@ public function get_action_items() { /* translators: %s: form title. */ 'title' => __( 'We noticed a form submission failure on %s.', 'sureforms' ), 'generic' => __( 'We noticed a form submission failure.', 'sureforms' ), - 'message' => __( 'Visitors may be unable to reach you, and those entries were not saved.', 'sureforms' ), - 'passing' => __( 'Form submissions are completing normally.', 'sureforms' ), + 'message' => __( 'Visitors may not be able to reach you, and their entries were not saved.', 'sureforms' ), ], 'notification' => [ 'id' => 'notification_error', /* translators: %s: form title. */ 'title' => __( 'We noticed a notification failure on %s.', 'sureforms' ), 'generic' => __( 'We noticed a notification failure.', 'sureforms' ), - 'message' => __( 'The entry was saved, but the email telling you about it could not be sent — so new entries may be arriving without you hearing about them.', 'sureforms' ), - 'passing' => __( 'Notification emails are sending normally.', 'sureforms' ), + 'message' => __( 'The entry was saved, but we could not send the email about it. New entries may be coming in without you knowing.', 'sureforms' ), + // Email is the one failure here a site owner can usually fix without + // us: it is almost always SMTP not being configured. Offer the guide + // alongside support rather than making them wait for a reply. + 'guide' => Helper::get_sureforms_website_url( + 'docs/troubleshooting-email-sending-in-sureforms/', + [ + 'utm_medium' => 'form_checks_notice', + 'utm_content' => 'notification_error', + ] + ), ], 'integration' => [ 'id' => 'integration_error', /* translators: %s: form title. */ 'title' => __( 'We noticed an integration failure on %s.', 'sureforms' ), 'generic' => __( 'We noticed an integration failure.', 'sureforms' ), - 'message' => __( 'The entry was saved, but it could not be passed on to a connected service.', 'sureforms' ), - 'passing' => __( 'Integrations are running normally.', 'sureforms' ), + 'message' => __( 'The entry was saved, but we could not send it to a connected service.', 'sureforms' ), ], ]; foreach ( $categories as $category => $copy ) { if ( ! isset( $open[ $category ] ) ) { - $passing[] = [ - 'id' => $copy['id'], - 'status' => 'success', - 'title' => $copy['passing'], - 'message' => '', - 'cta_label' => '', - 'cta_url' => '', - 'dismissible' => false, - ]; continue; } @@ -3572,33 +4163,63 @@ public function get_action_items() { // twenty of them, and the title is the first thing anyone asks for. $form_title = Helper::get_string_value( $open[ $category ]['form_title'] ?? '' ); - $warnings[] = [ + $warning = [ 'id' => $copy['id'], 'status' => 'error', 'title' => '' !== $form_title ? sprintf( $copy['title'], $form_title ) : $copy['generic'], 'message' => $copy['message'], - 'cta_label' => __( 'Contact Support', 'sureforms' ), - 'cta_url' => $this->get_support_mailto_url(), - 'cta_action' => 'contact_support', + // Shows what would be sent before anything is sent. Someone reporting + // a fault on their own site is entitled to read the diagnostics and + // the log first, and a support agent gets a cleaner paste than a + // screenshot of a notice. + 'cta_label' => __( 'View details', 'sureforms' ), + // Where the classic wp-admin notice sends people, since it cannot open + // the panel's dialog. The dashboard is where the details are readable. + 'cta_url' => admin_url( 'admin.php?page=sureforms_menu' ), + 'cta_action' => 'view_details', + // Not the payload itself, only that one exists. The diagnostics are + // fetched when the dialog opens -- see handle_action_item_details(). + // + // They used to ride along in the localisation JSON and in a hidden + // div on every admin page. The content is authored by whoever + // triggered the failure, and the client-error-log route is a public + // endpoint gated on a submit token rather than a capability, so an + // anonymous visitor can fill that excerpt. Broadcasting it to every + // admin screen -- read or not -- put attacker-authored text in page + // source site-wide and made any future escaping slip a + // manage_options-context problem. On demand, it reaches only the + // admin who asked for it. + 'has_details' => true, + // Which record to fetch. Not the payload, just the key. + 'category' => $category, 'dismissible' => false, ]; + + // A second, optional action. Absent keys render nothing, so a category + // without a guide needs no branch in either renderer, and neither does + // an item contributed through srfm_action_items. + if ( ! empty( $copy['guide'] ) ) { + $warning['guide_label'] = __( 'Help Me Fix', 'sureforms' ); + $warning['guide_url'] = $copy['guide']; + $warning['guide_action'] = 'help_me_fix'; + } + + $warnings[] = $warning; } $caching_plugin = Helper::get_active_caching_plugin(); if ( '' === $caching_plugin ) { - $passing[] = [ - 'id' => 'caching_plugin', - 'status' => 'success', - 'title' => __( 'No caching plugin that needs configuring was found.', 'sureforms' ), - 'message' => '', - 'cta_label' => '', - 'cta_url' => '', - 'dismissible' => false, - ]; - } elseif ( ! in_array( 'caching_plugin', $dismissed, true ) ) { + return $warnings; + } + + // Read here rather than at the top: with no caching plugin active nothing + // consults it, and this is the only dismissible item. + $dismissed = Helper::get_array_value( Helper::get_srfm_option( 'dismissed_action_items', [] ) ); + + if ( ! in_array( 'caching_plugin', $dismissed, true ) ) { $warnings[] = [ 'id' => 'caching_plugin', 'status' => 'warning', @@ -3607,65 +4228,15 @@ public function get_action_items() { __( '%s may interfere with your forms.', 'sureforms' ), $caching_plugin ), - 'message' => __( 'Caching and JavaScript optimisation can serve a stale copy of your form or load its scripts out of order.', 'sureforms' ), + 'message' => __( 'Caching can show visitors an old copy of your form, or load its scripts in the wrong order.', 'sureforms' ), 'cta_label' => __( 'Help Me Fix', 'sureforms' ), - 'cta_url' => 'https://sureforms.com/docs/how-to-set-up-sureforms-with-caching-plugins/', + 'cta_url' => Helper::get_caching_plugin_doc_url(), 'cta_action' => 'help_me_fix', 'dismissible' => true, ]; } - // Warnings first: the point of the panel is what needs attention, with the - // passing checks below as reassurance rather than as the headline. - $items = array_merge( $warnings, $passing ); - - $this->track_action_item_impressions( $warnings ); - - /** - * Filter the dashboard action items. - * - * Each entry needs id, status ('warning' or 'success'), title, message, - * cta_label, cta_url and dismissible. Only ids in - * handle_dismiss_action_item()'s allowlist can actually be dismissed, so - * adding a dismissible item here also needs a line there. - * - * @since 2.12.6 - * - * @param array> $items Action items. - */ - return Helper::apply_filters_as_array( 'srfm_action_items', $items ); - } - - /** - * Dismiss one action item. - * - * Hooked - wp_ajax_srfm_dismiss_action_item. - * - * Only items get_action_items() marks dismissible can be dismissed, so a - * crafted request cannot silence a genuine fault. - * - * @since 2.12.6 - * @return void - */ - public function handle_dismiss_action_item() { - if ( ! Helper::current_user_can() ) { - wp_send_json_error( [ 'message' => __( 'Unauthorized user.', 'sureforms' ) ], 403 ); - return; - } - - if ( ! check_ajax_referer( 'srfm_dismiss_action_item', 'nonce', false ) ) { - wp_send_json_error( [ 'message' => __( 'Invalid nonce.', 'sureforms' ) ], 403 ); - return; - } - - $item_id = isset( $_POST['item_id'] ) ? sanitize_key( wp_unslash( $_POST['item_id'] ) ) : ''; - - if ( ! $this->dismiss_action_item( $item_id ) ) { - wp_send_json_error( [ 'message' => __( 'Invalid parameters.', 'sureforms' ) ], 400 ); - return; - } - - wp_send_json_success(); + return $warnings; } /** @@ -4246,9 +4817,11 @@ private function get_dismiss_action_item_url( $item_id ) { * sites are affected. A day per user answers the question that matters -- how * many people are seeing this -- for one option write. * - * Passing checks are not counted. "Nothing is wrong" is not an impression. + * Counts SureForms' own items only. It runs before `srfm_action_items`, so a + * third party's contribution is not counted here -- SureForms has no name for + * it and no analytics key that would mean anything. * - * @param array> $warnings Warning items only. + * @param array> $warnings SureForms' own items. * @since 2.12.6 * @return void */ @@ -4300,101 +4873,387 @@ private function track_action_item_impressions( $warnings ) { } /** - * Pre-addressed support email for a run of failed submissions. + * Record one interaction with a Form Checks notice, cumulatively. + * + * Both the value and `$force` matter. Analytics_Events::track() returns early + * when the event name is already in `usage_events_pushed`, so a call with + * `$force` omitted records each name at most once per site, ever -- the report + * could then say whether a button had ever been clicked but not how often, and + * these events exist to answer the second question. Sending a running total + * with `$force = true` re-sends each new value while an identical repeat still + * short-circuits inside track(). Same reasoning as + * track_action_item_impressions(). + * + * @param string $event_name Analytics key from the allowlist. + * @since 2.12.7 + * @return void + */ + private function track_notice_event( $event_name ) { + $counts = Helper::get_array_value( Helper::get_srfm_option( 'action_item_events', [] ) ); + + $counts[ $event_name ] = Helper::get_integer_value( $counts[ $event_name ] ?? 0 ) + 1; + + Helper::update_srfm_option( 'action_item_events', $counts ); + + Analytics::events()->track( $event_name, (string) $counts[ $event_name ], [], true ); + } + + /** + * The contact form's address, tagged with where the click came from. + * + * One campaign, tagged per failure, so the report answers which check actually + * sends people to support rather than only how many arrive. A submission + * failure and a caching advisory are different problems and it is worth knowing + * which one drives the tickets. + * + * Prefilled with what SureForms already knows -- the admin's address, which + * failure it is, and the site host -- so the person reporting a fault does not + * retype it. Worth knowing that the address travels in the query string, so it + * reaches browser history and any referrer along the way; it is the site + * owner's own address going to SureForms' own form, which is the flow this + * button exists for. + * + * Built with add_query_arg rather than string concatenation, so it stays + * correct if the constant ever gains a query string of its own. + * + * @param string $category One of Client_Logger::CATEGORIES, naming the failure + * the visitor is reporting. + * @since 2.12.7 + * @return string + */ + private function get_support_contact_url( $category ) { + // Deliberately not translated. These are matched against the options on the + // troubleshooting form, so they are machine values, not copy -- a German + // site sending "E-Mail-Benachrichtigungsfehler" would arrive as an + // unrecognised subject and land in the wrong queue. + $subjects = [ + 'submission' => 'Form submission failure', + 'notification' => 'Email notification failure', + 'integration' => 'Integration failure', + ]; + + $user = wp_get_current_user(); + + $url = add_query_arg( + [ + // Prefills the form, so the person reporting a fault does not retype + // what SureForms already knows. Empty rather than absent when the + // address is unusable, so the form still opens. + 'mail' => is_email( $user->user_email ) ? $user->user_email : '', + // Falls back to "Other" for a category SureForms does not define -- + // srfm_action_items is public, so an item can carry any category or + // none. + 'subject' => $subjects[ $category ] ?? 'Other', + 'site_url' => Helper::get_string_value( wp_parse_url( home_url(), PHP_URL_HOST ) ), + 'utm_source' => 'sureforms', + 'utm_medium' => 'form_checks', + 'utm_campaign' => 'contact_support', + // Which check sent them. The one part that differs per button, and + // the reason for tagging at all. + 'utm_content' => $category, + ], + self::SUPPORT_CONTACT_URL + ); + + /** + * Filter where the Contact Support action sends people. + * + * Replaces the `srfm_support_email_address` filter, which pointed at an + * inbox and has no destination left to change now that the action opens a + * form. A white-label install wants to point this at its own support page. + * + * @since 2.12.7 + * + * @param string $url Contact form URL, already UTM-tagged. + * @param string $category The failure being reported. + */ + $filtered = Helper::get_string_value( apply_filters( 'srfm_support_contact_url', $url, $category ) ); + + // Escaped after the filter, not before: the point of escaping here is that + // neither renderer has to trust what comes back. mailto: is allowed because + // an inbox is a legitimate destination for a white-label support contact, + // and get_action_items() already allows it on the sibling item URLs. + $safe = esc_url_raw( $filtered, [ 'http', 'https', 'mailto' ] ); + + // Never empty. Contact Support is the only action that retires these + // notices and they are dismissible => false, so returning '' for a filter + // value that cannot survive escaping leaves an undismissable notice with + // nothing on it that works. Falling back to SureForms' own form is worse + // for a white-label than their own URL and better than a dead end, and the + // unfiltered URL is built here rather than supplied, so it always escapes. + return '' !== $safe ? $safe : esc_url_raw( $url, [ 'http', 'https' ] ); + } + + /** + * The log tail, formatted for pasting. * - * Carries the details support would otherwise have to ask for, so the first - * reply can be an answer rather than a questionnaire, along with the recent log - * entries inline. + * One builder, so the text someone reads before sending is the text that gets + * sent. They used to be built separately, which is how a "details" view drifts + * from what it claims to show. * - * The log is pasted into the body rather than attached because mailto has no - * attachment parameter -- browsers drop any attempt to add one -- and it is a - * tail rather than the whole file because a megabyte of JSON would exceed the - * URL length every mail client enforces. + * The budget is a parameter because nothing here is going into a URL any more. + * Client_Logger::get_tail()'s 1200-character default existed to fit a compose + * URL; a clipboard and a

 have no such limit, so the dialog asks for more
+	 * and the note below describes the real constraint rather than a mail client
+	 * that is not in this flow.
 	 *
-	 * @since 2.12.6
+	 * @param int $max_chars Characters of log to include.
+	 * @since 2.12.7
 	 * @return string
 	 */
-	private function get_support_mailto_url() {
-		$subject = sprintf(
-			/* translators: %s: site host. */
-			__( 'SureForms: form submissions are failing on %s', 'sureforms' ),
-			Helper::get_string_value( wp_parse_url( home_url(), PHP_URL_HOST ) )
-		);
-
-		$log   = Client_Logger::get_tail();
-		$body  = $this->get_support_message();
-		$body .= "\r\n\r\n" . '---' . "\r\n";
+	private function get_support_log_block( $max_chars = 1200 ) {
+		$log   = Client_Logger::get_tail( $max_chars );
+		$block = '---' . "\n";
 
 		if ( '' === $log['text'] ) {
-			$body .= __( 'Debug log: no entries recorded.', 'sureforms' );
-		} else {
-			$body .= sprintf(
-				/* translators: 1: entries shown, 2: entries recorded. */
-				__( 'Debug log (most recent %1$d of %2$d entries)', 'sureforms' ),
-				$log['shown'],
-				$log['total']
-			) . "\r\n";
-
-			// Fenced so it survives a reply and reads as data rather than prose in
-			// clients that render Markdown.
-			$body .= '```' . "\r\n" . str_replace( "\n", "\r\n", $log['text'] ) . "\r\n" . '```';
-
-			if ( $log['shown'] < $log['total'] ) {
-				$body .= "\r\n\r\n" . __( 'Older entries were left out to keep this email within the length a mail client accepts. The full log can be downloaded from SureForms → Settings → General.', 'sureforms' );
-			}
+			return $block . __( 'Debug log: no entries recorded.', 'sureforms' );
 		}
 
-		return 'mailto:support@sureforms.com?' . http_build_query(
-			[
-				'subject' => $subject,
-				'body'    => $body,
+		$block .= sprintf(
+			/* translators: 1: entries shown, 2: entries recorded. */
+			__( 'Debug log (most recent %1$d of %2$d entries)', 'sureforms' ),
+			$log['shown'],
+			$log['total']
+		) . "\n";
+
+		// Fenced so it survives a reply and reads as data rather than prose wherever
+		// Markdown is rendered.
+		$block .= '```' . "\n" . $log['text'] . "\n" . '```';
+
+		if ( $log['shown'] < $log['total'] ) {
+			$block .= "\n\n" . __( 'Older entries were left out to keep this excerpt readable. The full log can be downloaded from SureForms → Settings → General.', 'sureforms' );
+		}
+
+		return $block;
+	}
+
+	/**
+	 * Subject and countless opening line for one kind of failure.
+	 *
+	 * Both come from here so they cannot drift apart: a subject naming one problem
+	 * over a body describing another is worse than either alone. The counted form
+	 * of the opening line lives in get_support_count_sentence(), which needs
+	 * `_n()`'s literals and so cannot be an array lookup.
+	 *
+	 * An unknown or absent category gets deliberately neutral wording. The
+	 * alternative -- defaulting to the submission copy -- states something specific
+	 * that may not be true, and an item contributed through srfm_action_items has no
+	 * category at all.
+	 *
+	 * @param string $category One of Client_Logger::CATEGORIES.
+	 * @since 2.12.7
+	 * @return array{subject:string,anon:string}
+	 */
+	private function get_support_copy( $category ) {
+		$copy = [
+			'submission'   => [
+				/* translators: %s: site host. */
+				'subject' => __( 'SureForms: form submissions are failing on %s', 'sureforms' ),
+				/* translators: %s: site host. */
+				'anon'    => __( 'SureForms has recorded form submissions on %s that could not be completed.', 'sureforms' ),
 			],
-			'',
-			'&',
-			PHP_QUERY_RFC3986
-		);
+			'notification' => [
+				/* translators: %s: site host. */
+				'subject' => __( 'SureForms: notification emails are not being sent on %s', 'sureforms' ),
+				/* translators: %s: site host. */
+				'anon'    => __( 'SureForms saved entries on %s but could not send the notification emails for them.', 'sureforms' ),
+			],
+			'integration'  => [
+				/* translators: %s: site host. */
+				'subject' => __( 'SureForms: an integration is not receiving entries on %s', 'sureforms' ),
+				/* translators: %s: site host. */
+				'anon'    => __( 'SureForms saved entries on %s but could not pass them to a connected service.', 'sureforms' ),
+			],
+		];
+
+		if ( isset( $copy[ $category ] ) ) {
+			return $copy[ $category ];
+		}
+
+		return [
+			/* translators: %s: site host. */
+			'subject' => __( 'SureForms: a problem with the forms on %s', 'sureforms' ),
+			/* translators: %s: site host. */
+			'anon'    => __( 'SureForms has recorded a problem with the forms on %s.', 'sureforms' ),
+		];
 	}
 
 	/**
-	 * Diagnostics block for the support email.
+	 * The sentence that opens the support email, with the failure count in it.
+	 *
+	 * A switch with literal `_n()` calls rather than a singular/plural pair looked
+	 * up from an array. `_n()` has to see its two literals at extraction time to
+	 * emit an `msgid_plural`, and only that lets a locale supply the number of
+	 * forms it actually uses -- Polish and Russian need three, Arabic six,
+	 * Japanese one. Choosing on `1 === $count` in PHP is correct for English and
+	 * wrong everywhere with a different plural rule.
+	 *
+	 * @param string $category One of Client_Logger::CATEGORIES. Unknown or absent
+	 *                         gets neutral wording rather than a specific claim.
+	 * @param int    $count    Failures recorded for that category.
+	 * @since 2.12.7
+	 * @return string
+	 */
+	private function get_support_count_sentence( $category, $count ) {
+		switch ( $category ) {
+			case 'submission':
+				return sprintf(
+					/* translators: %d: number of failed submissions. */
+					_n(
+						'SureForms has recorded %d form submission that could not be completed.',
+						'SureForms has recorded %d form submissions that could not be completed.',
+						$count,
+						'sureforms'
+					),
+					$count
+				);
+
+			case 'notification':
+				return sprintf(
+					/* translators: %d: number of failed notifications. */
+					_n(
+						'SureForms saved %d entry but could not send the notification email for it.',
+						'SureForms saved %d entries but could not send the notification emails for them.',
+						$count,
+						'sureforms'
+					),
+					$count
+				);
+
+			case 'integration':
+				return sprintf(
+					/* translators: %d: number of failed integration hand-offs. */
+					_n(
+						'SureForms saved %d entry but could not pass it to a connected service.',
+						'SureForms saved %d entries but could not pass them to a connected service.',
+						$count,
+						'sureforms'
+					),
+					$count
+				);
+
+			default:
+				return sprintf(
+					/* translators: %d: number of recorded problems. */
+					_n(
+						'SureForms has recorded %d problem with the forms on this site.',
+						'SureForms has recorded %d problems with the forms on this site.',
+						$count,
+						'sureforms'
+					),
+					$count
+				);
+		}
+	}
+
+	/**
+	 * Diagnostics block for the support report.
 	 *
 	 * Carries what support would otherwise have to ask for, so the first reply can
 	 * be an answer rather than a questionnaire.
 	 *
+	 * The count is the one for this category, not get_fault_streak(), which reports
+	 * submissions only -- so a notification failure used to quote a number from an
+	 * unrelated counter, often zero.
+	 *
+	 * @param string $category   One of Client_Logger::CATEGORIES.
+	 * @param string $form_title Form the failure was recorded against, when known.
 	 * @since 2.12.6
 	 * @return string
 	 */
-	private function get_support_message() {
+	private function get_support_message( $category = '', $form_title = '' ) {
 		global $wp_version;
 
-		$count = Client_Logger::get_fault_streak();
+		$failures = Client_Logger::get_failures();
+		$count    = Helper::get_integer_value( $failures[ $category ]['count'] ?? 0 );
+		$copy     = $this->get_support_copy( $category );
+
+		// With nothing recorded, describe the failure without a number. The old
+		// max( 1, $count ) reported "recorded 1 problem" and "Recorded failures: 1"
+		// for a count nobody recorded -- a number support would then chase.
+		$host = Helper::get_string_value( wp_parse_url( home_url(), PHP_URL_HOST ) );
 
 		$lines = [
 			__( 'Hello SureForms support,', 'sureforms' ),
 			'',
-			sprintf(
-				/* translators: %d: number of consecutive failed submissions. */
-				_n(
-					'SureForms has recorded %d form submission in a row that could not be completed.',
-					'SureForms has recorded %d form submissions in a row that could not be completed.',
-					$count,
-					'sureforms'
-				),
-				$count
-			),
-			'',
-			'---',
-			__( 'Site details', 'sureforms' ),
-			'Site: ' . home_url(),
-			'SureForms: ' . SRFM_VER,
-			'SureForms Pro: ' . ( Helper::has_pro() && defined( 'SRFM_PRO_VER' ) ? SRFM_PRO_VER : __( 'not active', 'sureforms' ) ),
-			'WordPress: ' . Helper::get_string_value( $wp_version ),
-			'PHP: ' . PHP_VERSION,
-			'Caching: ' . ( '' !== Helper::get_active_caching_plugin() ? Helper::get_active_caching_plugin() : __( 'none detected', 'sureforms' ) ),
-			'Consecutive failures: ' . $count,
+			$count > 0
+				? $this->get_support_count_sentence( $category, $count )
+				: sprintf( $copy['anon'], $host ),
 		];
 
-		return implode( "\r\n", $lines );
+		if ( '' !== $form_title ) {
+			$lines[] = '';
+			$lines[] = sprintf(
+				/* translators: %s: form title. */
+				__( 'Form: %s', 'sureforms' ),
+				$form_title
+			);
+		}
+
+		// Once: each call reads an option and a site option.
+		$caching = Helper::get_active_caching_plugin();
+
+		$lines = array_merge(
+			$lines,
+			[
+				'',
+				'---',
+				__( 'Site details', 'sureforms' ),
+				// Labels translated, values not. The site owner reads this on screen
+				// before sending it, so the labels are copy; the values are machine
+				// data -- a version, a URL, a plugin name -- and stay verbatim. The
+				// debug log below is left alone entirely for the same reason.
+				/* translators: %s: site address. */
+				sprintf( __( 'Site: %s', 'sureforms' ), home_url() ),
+				/* translators: %s: SureForms version. */
+				sprintf( __( 'SureForms: %s', 'sureforms' ), SRFM_VER ),
+				sprintf(
+					/* translators: %s: SureForms Pro version, or a note that it is not active. */
+					__( 'SureForms Pro: %s', 'sureforms' ),
+					Helper::has_pro() && defined( 'SRFM_PRO_VER' ) ? SRFM_PRO_VER : __( 'not active', 'sureforms' )
+				),
+				/* translators: %s: WordPress version. */
+				sprintf( __( 'WordPress: %s', 'sureforms' ), Helper::get_string_value( $wp_version ) ),
+				/* translators: %s: PHP version. */
+				sprintf( __( 'PHP: %s', 'sureforms' ), PHP_VERSION ),
+				sprintf(
+					/* translators: %s: caching plugin name, or a note that none was detected. */
+					__( 'Caching: %s', 'sureforms' ),
+					'' !== $caching ? $caching : __( 'none detected', 'sureforms' )
+				),
+				sprintf(
+					/* translators: %s: number of recorded failures, or a note that none were. */
+					__( 'Recorded failures: %s', 'sureforms' ),
+					$count > 0 ? Helper::get_string_value( $count ) : __( 'none recorded', 'sureforms' )
+				),
+			]
+		);
+
+		// Only when there is one. A repeat report is worth knowing about: the same
+		// category having been reported before means the last answer did not hold,
+		// which is a different conversation from a first report. Appended with the
+		// rest of the site details rather than raised to the top, because it is
+		// context for them rather than a headline.
+		//
+		// Survives only until the next success in that category, because
+		// clear_category() unsets the whole record -- so in practice it is
+		// reachable for 'integration', which has no success signal, and transient
+		// for the other two.
+		//
+		// Stored as time(), a UTC epoch comparable with the sibling 'at', and
+		// formatted here with wp_date() so it reads in the site's timezone rather
+		// than the server's.
+		$acked_at = Helper::get_integer_value( $failures[ $category ]['acked_at'] ?? 0 );
+
+		if ( $acked_at > 0 ) {
+			$lines[] = sprintf(
+				/* translators: %s: date and time of the previous report, in the site's timezone. */
+				__( 'Previously reported: %s', 'sureforms' ),
+				Helper::get_string_value( wp_date( 'Y-m-d H:i T', $acked_at ) )
+			);
+		}
+
+		return implode( "\n", $lines );
 	}
 
 	/**
@@ -4421,7 +5280,7 @@ private function dismiss_action_item( $item_id ) {
 
 			// Recorded here rather than at each caller: both the cross in the
 			// dashboard panel and the no-JS link in the classic notice land here.
-			Analytics::events()->track( $item_id . '_notice_dismiss', 'dismissed' );
+			$this->track_notice_event( $item_id . '_notice_dismiss' );
 		}
 
 		return true;
diff --git a/admin/analytics.php b/admin/analytics.php
index d8aa4a1a4..806aaaf79 100644
--- a/admin/analytics.php
+++ b/admin/analytics.php
@@ -513,9 +513,16 @@ public function global_settings_data() {
 	/**
 	 * Total page views counted across all published forms.
 	 *
-	 * Paired with `forms_with_views` and the existing `total_entries`, this is what
-	 * makes the conversion figure interpretable in the warehouse: a site with views
-	 * but no entries reads very differently from one with neither.
+	 * Read alongside `forms_with_views`, which is what makes this figure legible: a
+	 * site with views but no forms recording any reads very differently from one
+	 * with neither.
+	 *
+	 * Not a denominator for `total_entries`, and the two must not be divided. This
+	 * total starts at the moment tracking opened and leaves out anyone who can edit
+	 * the site, while `total_entries` is an unfiltered all-time count of every
+	 * entry ever received. A rate built from the pair answers neither question and
+	 * will not match the Conversion Rate column, which measures both halves over
+	 * the same window with the same exclusion.
 	 *
 	 * Counts only published forms, so views left behind by a trashed or draft form
 	 * do not inflate the total against a denominator that no longer includes them.
diff --git a/admin/assets/js/notice-response.js b/admin/assets/js/notice-response.js
index 76bce2380..88c5fb900 100644
--- a/admin/assets/js/notice-response.js
+++ b/admin/assets/js/notice-response.js
@@ -36,6 +36,13 @@
 	}
 
 	function sendResponse( noticeId, button ) {
+		// Guarded like the carousel's read of the same global: this file is
+		// enqueued from several places and a missing localize object should not
+		// throw out of a click handler.
+		if ( typeof srfmNoticeResponse === 'undefined' ) {
+			return;
+		}
+
 		const body = new FormData();
 		body.append( 'action', 'srfm_notice_response' );
 		body.append( 'nonce', srfmNoticeResponse.nonce );
@@ -82,4 +89,787 @@
 			}
 		} );
 	} );
+
+	// ------------------------------------------------------------------
+	// Carousel for the action-item notices
+	// ------------------------------------------------------------------
+
+	/**
+	 * Show SureForms' stacked admin notices one at a time.
+	 *
+	 * Four faults at once pushed the actual page below the fold on every admin
+	 * screen, so the notices became the page. One at a time with a count keeps the
+	 * warning visible without taking over.
+	 *
+	 * Built here rather than printed by PHP so that with JavaScript off every
+	 * notice simply stays visible, exactly as before. Controls that cannot work
+	 * must not be the thing that hides a warning.
+	 *
+	 * The controls are created once, in the wrapper, and never moved. Moving them
+	 * into the newly shown card ran the DOM remove steps first, which unfocuses
+	 * whatever they contain -- so every activation dropped focus to  and a
+	 * keyboard user had to Tab in from the top of the page again, once per notice.
+	 * It also carried the aria-live counter out of and back into the document with
+	 * its text already set, which is generally not announced. Only one card is ever
+	 * visible, so the wrapper's box is the visible card's box and pinning the
+	 * controls to the wrapper looks identical.
+	 */
+	function buildNoticeCarousel() {
+		const cards = Array.prototype.slice.call(
+			document.querySelectorAll( '.srfm-action-item-notice' )
+		);
+
+		// One notice needs no chrome, and none needs nothing.
+		if ( cards.length < 2 ) {
+			return;
+		}
+
+		const labels =
+			( typeof srfmNoticeResponse !== 'undefined' &&
+				srfmNoticeResponse.carousel ) ||
+			{};
+		let index = 0;
+
+		// Wrap in place, so the cards keep the position WordPress gave them
+		// rather than being moved to the end of the screen.
+		const wrap = document.createElement( 'div' );
+		wrap.className = 'srfm-action-item-carousel';
+
+		// Positioning and spacing live in the stylesheet the renderer prints, so
+		// an RTL sheet can override them and nothing here is a magic number.
+		// Declared above adopt() because adopt() reads it and runs before the
+		// controls are assembled.
+		const nav = document.createElement( 'p' );
+		nav.className = 'srfm-action-item-carousel-nav';
+
+		/**
+		 * Put the cards inside the wrapper, wherever they currently are.
+		 *
+		 * WordPress core relocates every `.notice` into `div.wrap` on jQuery ready,
+		 * and that runs after this file's DOMContentLoaded handler -- so wrapping
+		 * once at build time left the wrapper behind, empty and zero-height, with
+		 * the controls positioned against it off the side of the screen and the
+		 * reserved padding matching nothing.
+		 *
+		 * Driven by a MutationObserver rather than from render(). Called only from
+		 * render() it could not fire for a relocation that happens after the first
+		 * paint -- reaching it needed an arrow click, and a relocation is exactly
+		 * what strands the arrows: the cards move away carrying their `hidden`
+		 * attribute while nav stays behind, leaving one notice visible, the rest
+		 * permanently hidden, and no control the user can reach to recover. On a
+		 * surface whose only job is showing faults that is worse than not having a
+		 * carousel. The every() check makes this idempotent, so the observer
+		 * seeing its own writes is harmless.
+		 */
+		function adopt() {
+			if (
+				cards.every( function ( notice ) {
+					return notice.parentNode === wrap;
+				} )
+			) {
+				return;
+			}
+
+			// Anchor on the first card still outside the wrapper. cards[0] may
+			// already be inside it, and wrap.insertBefore( wrap, … ) is a
+			// HierarchyRequestError; a card that was removed rather than moved has
+			// no parentNode at all, and dereferencing it would throw out of
+			// render() before the visibility loop ran.
+			const anchor = cards.filter( function ( notice ) {
+				return notice.parentNode && notice.parentNode !== wrap;
+			} )[ 0 ];
+
+			if ( ! anchor ) {
+				return;
+			}
+
+			// Moving the wrapper runs the DOM remove steps over its subtree, which
+			// blurs whatever inside it had focus -- and nav is inside it, so the
+			// arrow the user just pressed loses focus in exactly the case adopt()
+			// exists for.
+			const active = nav.ownerDocument.activeElement;
+			const focused = nav.contains( active ) ? active : null;
+
+			anchor.parentNode.insertBefore( wrap, anchor );
+			cards.forEach( function ( notice ) {
+				wrap.appendChild( notice );
+			} );
+
+			if ( focused ) {
+				focused.focus();
+			}
+		}
+
+		adopt();
+
+		const isRtl =
+			document.documentElement.getAttribute( 'dir' ) === 'rtl' ||
+			document.body.classList.contains( 'rtl' );
+
+		const prev = document.createElement( 'button' );
+		prev.type = 'button';
+		prev.className = 'button button-small';
+		// Previous points at the start of the reading order, which is the right in
+		// an RTL locale. Hardcoding one direction contradicts the aria-label.
+		prev.textContent = isRtl ? '\u203A' : '\u2039';
+		prev.setAttribute( 'aria-label', labels.previous || 'Previous' );
+
+		const next = document.createElement( 'button' );
+		next.type = 'button';
+		next.className = 'button button-small';
+		next.textContent = isRtl ? '\u2039' : '\u203A';
+		next.setAttribute( 'aria-label', labels.next || 'Next' );
+
+		const counter = document.createElement( 'span' );
+		// Announced, because stepping swaps the text above with no other signal.
+		// The node stays put, so the region is in the document before its text
+		// changes -- which is what makes the change announce at all.
+		counter.setAttribute( 'aria-live', 'polite' );
+
+		function render() {
+			adopt();
+
+			cards.forEach( function ( notice, i ) {
+				notice.hidden = i !== index;
+			} );
+
+			counter.textContent = ( labels.counter || '%1$d of %2$d' )
+				.replace( '%1$d', index + 1 )
+				.replace( '%2$d', cards.length );
+		}
+
+		function step( delta ) {
+			return function () {
+				// Wraps, so a run of cards can be read round without hunting for
+				// the end.
+				index = ( index + delta + cards.length ) % cards.length;
+				render();
+			};
+		}
+
+		/**
+		 * Reserve exactly the room the controls take, measured rather than assumed.
+		 *
+		 * A translated counter is wider than "1 of 4", and a fixed padding lets a
+		 * long form title run underneath the buttons.
+		 */
+		function measure() {
+			const width = Math.ceil( nav.getBoundingClientRect().width );
+
+			if ( width > 0 ) {
+				wrap.style.setProperty(
+					'--srfm-carousel-reserve',
+					width + 24 + 'px'
+				);
+			}
+		}
+
+		prev.addEventListener( 'click', step( -1 ) );
+		next.addEventListener( 'click', step( 1 ) );
+
+		nav.appendChild( prev );
+		nav.appendChild( counter );
+		nav.appendChild( next );
+		wrap.appendChild( nav );
+
+		render();
+		measure();
+
+		// Core has not finished moving notices when DOMContentLoaded handlers run,
+		// so re-run once the queue has drained. render() re-adopts; this only has
+		// to re-measure, because the controls have a box again by then.
+		window.setTimeout( function () {
+			render();
+			measure();
+		}, 0 );
+
+		// And keep watching. A plugin acting on window.load, an admin-notice
+		// manager or a screen-options re-layout can move the notices at any point,
+		// and adopt() driven only from a click cannot recover from that -- the
+		// click it needs is the thing the move breaks.
+		if ( window.MutationObserver ) {
+			new window.MutationObserver( function () {
+				adopt();
+				measure();
+			} ).observe( document.body, { childList: true, subtree: true } );
+		}
+	}
+
+	if ( document.readyState === 'loading' ) {
+		document.addEventListener( 'DOMContentLoaded', buildNoticeCarousel );
+	} else {
+		buildNoticeCarousel();
+	}
+
+	// ------------------------------------------------------------------
+	// Details modal
+	// ------------------------------------------------------------------
+
+	/**
+	 * The details as HTML, for the clipboard's text/html flavour.
+	 *
+	 * Gmail's composer is a rich-text field: it drops the newlines out of plain
+	 * text, which is what turned the diagnostics into one paragraph. Pasting HTML
+	 * instead keeps every break, and 
 keeps the log's columns lined up.
+	 *
+	 * Escaped here, not on the server, so the escaping happens once and in the same
+	 * place the markup is built. The source is a log holding whatever a server put
+	 * in an error message, so it is never trusted as markup.
+	 *
+	 * @param {string} text Plain-text details.
+	 * @return {string} Escaped HTML.
+	 */
+	function detailsAsHtml( text ) {
+		const escaped = text
+			.replace( /&/g, '&' )
+			.replace( //g, '>' );
+
+		return (
+			'
' +
+			escaped +
+			'
' + ); + } + + /** + * Put the details on the clipboard in both flavours. + * + * A rich composer takes the HTML and keeps the line breaks; a plain-text field + * takes the text. Falls back to writeText where ClipboardItem is unavailable -- + * that loses the formatting, but losing it is better than copying nothing. + * + * @param {string} text Plain-text details. + * @param {Function} done Called once the clipboard actually holds it. + * @param {Function} fail Called when it does not, including where the API is + * absent entirely -- on a plain-HTTP admin + * navigator.clipboard does not exist, and a silent + * no-op there is what left the dialog with a button + * waiting on something that could never happen. + */ + function copyDetails( text, done, fail ) { + const nope = + typeof fail === 'function' + ? fail + : function () {}; + + const supportsRich = + window.ClipboardItem && + navigator.clipboard && + navigator.clipboard.write; + + if ( supportsRich ) { + // Both of these throw synchronously, not through the promise: + // ClipboardItem's constructor on an unsupported MIME type, and + // clipboard.write() on a bad argument in Chromium or a stale user + // gesture in WebKit. Outside a try, the exception leaves copyDetails + // and the click handler with neither callback run -- so the caller + // never unlocks and the notice keeps no working action. + try { + const item = new window.ClipboardItem( { + 'text/plain': new Blob( [ text ], { type: 'text/plain' } ), + 'text/html': new Blob( [ detailsAsHtml( text ) ], { + type: 'text/html', + } ), + } ); + + navigator.clipboard.write( [ item ] ).then( done, nope ); + } catch ( e ) { + nope(); + } + + return; + } + + if ( navigator.clipboard && navigator.clipboard.writeText ) { + try { + navigator.clipboard.writeText( text ).then( done, nope ); + } catch ( e ) { + nope(); + } + + return; + } + + // No clipboard API at all. The text is on screen and selectable, so there + // is nothing to recover -- but the caller has to be told, or it waits for a + // callback that never arrives. + nope(); + } + + /** + * Show what would be sent to support, before anything is sent. + * + * The dialog for the classic wp-admin notices. The SureForms dashboard has its + * own, built on force-ui's Dialog, because there is no React on these screens + * and no force-ui bundle either -- so the two surfaces are separate + * implementations by necessity. They read their strings from one PHP array + * (Admin::get_details_dialog_labels(), reaching here as + * srfmNoticeResponse.details and the dashboard as srfm_admin.details_dialog), + * so the copy cannot drift even though the markup does. + * + * This one appends to document.body, so it is not subject to a containing + * block established by an ancestor transform or filter. + * + * The fallbacks below are English, because a plain admin script has no + * gettext runtime to fall back to; they are reached only if the localize data + * is missing entirely. + * + * Read with textContent and written with textContent, never innerHTML: the log + * contains whatever a server or a browser put in an error message, and that is + * not markup to be trusted. + * + * @param {Object} config Dialog contents. + * @param {string} config.noticeId Item id, used as the analytics key. + * @param {string} config.text Plain-text details to show and copy. + * @param {string} config.supportUrl Where Contact Support goes. Empty means + * there is nowhere to send them, so the + * button is not reachable at all. + * @param {boolean} config.pending Whether `text` is a placeholder that a + * later setText() will replace. + * @return {Object|false} Handle with setText()/setSupportUrl(), or false if + * there was nothing to open. + */ + function showDetails( config ) { + const noticeId = ( config && config.noticeId ) || ''; + const pending = !! ( config && config.pending ); + + let text = ( config && config.text ) || ''; + let supportUrl = ( config && config.supportUrl ) || ''; + + if ( ! text ) { + return false; + } + + const labels = + ( typeof srfmNoticeResponse !== 'undefined' && + srfmNoticeResponse.details ) || + {}; + + const overlay = document.createElement( 'div' ); + overlay.className = 'srfm-details-overlay'; + + // Restored on close. Without it the trigger is gone from the tab order and + // a keyboard user starts again from the top of the page (WCAG 2.4.3). + const opener = overlay.ownerDocument.activeElement; + const previousOverflow = document.body.style.overflow; + + // Whether copying is even possible here. On a plain-HTTP admin + // navigator.clipboard does not exist, so the copy step cannot be a + // precondition for anything -- see the unlock reasoning below. + const canCopy = !! ( + navigator.clipboard && + ( navigator.clipboard.write || navigator.clipboard.writeText ) + ); + + const ids = 'srfm-details-' + Math.random().toString( 36 ).slice( 2, 10 ); + + const panel = document.createElement( 'div' ); + panel.setAttribute( 'role', 'dialog' ); + panel.setAttribute( 'aria-modal', 'true' ); + // Pointed at the real heading and description rather than repeating the + // title in an aria-label, which announces it twice. + panel.setAttribute( 'aria-labelledby', ids + '-title' ); + panel.setAttribute( 'aria-describedby', ids + '-desc' ); + panel.className = 'srfm-details-panel'; + + const heading = document.createElement( 'h2' ); + heading.id = ids + '-title'; + heading.textContent = labels.title || 'Details'; + + const description = document.createElement( 'p' ); + description.id = ids + '-desc'; + description.textContent = labels.description || ''; + description.className = 'srfm-details-description'; + + // Selectable and scrollable, because clipboard access can be refused and + // then selecting by hand is the only way through. tabindex because Chromium + // and WebKit do not make a scroll container focusable on their own, so + // without it a keyboard user cannot reach the very thing the dialog exists + // to show. Firefox does, which is why this looks fine there. + const pre = document.createElement( 'pre' ); + pre.textContent = text; + pre.tabIndex = 0; + pre.setAttribute( 'role', 'region' ); + pre.setAttribute( 'aria-label', labels.logRegion || 'Diagnostics' ); + + if ( pending ) { + // Announced as busy rather than silently showing a placeholder, so a + // screen reader says the region is still filling instead of reading + // "Loading" as if it were the report. + pre.setAttribute( 'aria-busy', 'true' ); + } + + const actions = document.createElement( 'p' ); + actions.className = 'srfm-details-actions'; + + // Visible, not a title attribute. pointer-events:none suppresses the native + // tooltip, a title never fires on keyboard focus, and screen readers + // commonly drop it on an unavailable control -- so the sentence explaining + // why the button is inert could not be read by anyone. + const hint = document.createElement( 'span' ); + hint.className = 'srfm-details-hint'; + hint.textContent = canCopy ? labels.copyFirst || '' : ''; + + // Doubles as the live region for the unlock. Copying changes three things at + // once -- the label, the icon and whether Contact Support works -- and none + // of them was announced. + hint.setAttribute( 'role', 'status' ); + + const copy = document.createElement( 'button' ); + copy.type = 'button'; + copy.className = 'button srfm-details-copy'; + copy.textContent = labels.copy || 'Copy details'; + + // Locked until the details are on the clipboard. The support form asks for + // them, and arriving with nothing to paste means describing the failure + // from memory. + // + // No href while it is locked, and a click guard behind that: `disabled` on + // an
does nothing at all -- it still navigates -- so removing the + // destination is what actually locks it. + // + // Hidden, not merely href-less, until there is a destination. An empty href + // resolves to the current document, so the click used to open a duplicate + // of the admin page and still acknowledge the failure -- standing the + // notice down without anything having been reported. The destination now + // arrives with the fetched payload, so the element is built up front and + // revealed by setSupportUrl(). + const contact = document.createElement( 'a' ); + contact.className = 'button button-primary srfm-details-contact'; + contact.textContent = labels.contact || 'Contact Support'; + contact.hidden = ! supportUrl; + + function lockContact() { + // The dimming and the pointer-events block hang off aria-disabled in the + // stylesheet, so the state is declared once rather than in two places. + contact.removeAttribute( 'href' ); + contact.setAttribute( 'aria-disabled', 'true' ); + } + + function unlockContact() { + if ( ! supportUrl ) { + return; + } + + contact.href = supportUrl; + contact.removeAttribute( 'aria-disabled' ); + } + + // Locked only where copying can actually happen. Where it cannot, the copy + // step is not a step the user can take, and Contact Support is the only + // route that acknowledges the failure -- these items are not dismissible, + // and only a submission failure ever clears itself. Keeping it locked + // behind an unavailable clipboard would leave an undismissable notice with + // no working action on it. + if ( canCopy ) { + lockContact(); + } + + // Nothing to copy yet. Left focusable-but-disabled rather than hidden, so + // the control does not appear from nowhere once the payload lands. + copy.disabled = pending; + + const close = document.createElement( 'button' ); + close.type = 'button'; + close.className = 'button-link srfm-details-close'; + close.textContent = labels.close || 'Close'; + + let revert = 0; + + function dismiss() { + document.removeEventListener( 'keydown', onKey ); + window.clearTimeout( revert ); + document.body.style.overflow = previousOverflow; + overlay.remove(); + + // Back to whatever opened it, on every close path. + if ( opener && typeof opener.focus === 'function' ) { + opener.focus(); + } + } + + // aria-modal asserts that the background is unavailable; it does nothing to + // the tab sequence in any browser. Without this, Tab from the last control + // walks into the admin bar, the admin menu and the links behind the overlay. + function focusables() { + return [ pre, close, copy, contact ].filter( function ( el ) { + return ( + el && + ! el.hidden && + ! el.disabled && + ! el.hasAttribute( 'aria-disabled' ) + ); + } ); + } + + function onKey( e ) { + if ( e.key === 'Escape' ) { + dismiss(); + return; + } + + if ( e.key !== 'Tab' ) { + return; + } + + const stops = focusables(); + + if ( ! stops.length ) { + return; + } + + const at = stops.indexOf( overlay.ownerDocument.activeElement ); + const next = e.shiftKey ? at - 1 : at + 1; + + if ( at === -1 || next < 0 || next >= stops.length ) { + e.preventDefault(); + stops[ + e.shiftKey ? stops.length - 1 : 0 + ].focus(); + } + } + + copy.addEventListener( 'click', function () { + copyDetails( + text, + function () { + copy.textContent = labels.copied || 'Copied'; + // Reverts on its own: a button stuck on "Copied" says nothing + // about the next click. The unlock does not revert with it -- + // having the clipboard stays true after the label has gone back. + window.clearTimeout( revert ); + revert = window.setTimeout( function () { + copy.textContent = labels.copy || 'Copy details'; + }, 2000 ); + + unlockContact(); + hint.textContent = labels.unlocked || ''; + + // On success only, so the event means a copy happened rather + // than a copy was attempted. + sendResponse( noticeId, 'copy_details' ); + }, + function () { + // Refused: an insecure origin, a permission policy, a user + // decision. Do not claim success -- but release Contact Support + // for the reason above, and say why the text was not copied. + hint.textContent = labels.copyFailed || ''; + unlockContact(); + } + ); + } ); + + contact.addEventListener( 'click', function () { + sendResponse( noticeId, 'contact_support' ); + // The form opens in its own tab, so the dialog has nothing left to + // show. + dismiss(); + } ); + + close.addEventListener( 'click', dismiss ); + overlay.addEventListener( 'click', function ( e ) { + // Backdrop only: a click inside the panel must not close it while + // someone is selecting the text. + if ( e.target === overlay ) { + dismiss(); + } + } ); + document.addEventListener( 'keydown', onKey ); + + actions.appendChild( hint ); + actions.appendChild( close ); + actions.appendChild( copy ); + + actions.appendChild( contact ); + + panel.appendChild( heading ); + panel.appendChild( description ); + panel.appendChild( pre ); + panel.appendChild( actions ); + overlay.appendChild( panel ); + document.body.appendChild( overlay ); + + // The page behind must not scroll under the backdrop. + document.body.style.overflow = 'hidden'; + + // The diagnostics region while the payload is still coming: it carries the + // placeholder, so focusing it says what the dialog is doing. Once there is + // something to copy, the copy button is the first thing anyone wants. + ( copy.disabled ? pre : copy ).focus(); + + return { + /** + * Replace the placeholder once the payload arrives. + * + * @param {string} next The text to show and copy. + * @param {boolean} copyable Whether it is worth copying. False for an + * error message, which would otherwise unlock + * Contact Support on the strength of having + * copied the error. + * @return {void} + */ + setText( next, copyable ) { + // Dropped once this dialog is gone. Open, close, open again inside + // one round trip and the first response would otherwise write into + // the second dialog -- or into a detached node, silently. + if ( ! overlay.isConnected ) { + return; + } + + text = next || ''; + pre.textContent = text; + pre.removeAttribute( 'aria-busy' ); + + if ( false === copyable ) { + // No report to paste, so the copy-first gate has nothing to gate + // on. Contact Support is the only route that retires the notice, + // and these items are not dismissible -- leaving it locked would + // be an undismissable notice with no working action on it. + copy.hidden = true; + hint.textContent = ''; + unlockContact(); + return; + } + + copy.disabled = ! text; + }, + + /** + * Point Contact Support somewhere, once the payload names it. + * + * @param {string} next Destination. Empty keeps the button out of the + * dialog entirely. + * @return {void} + */ + setSupportUrl( next ) { + if ( ! overlay.isConnected ) { + return; + } + + supportUrl = next || ''; + contact.hidden = ! supportUrl; + + // A mailto: has no document to open, so _blank would leave a blank + // tab behind. srfm_support_contact_url can return one, and the + // notice's own links already match on this. + if ( /^mailto:/i.test( supportUrl ) ) { + contact.removeAttribute( 'target' ); + contact.removeAttribute( 'rel' ); + } else { + contact.target = '_blank'; + contact.rel = 'noopener noreferrer'; + } + + if ( supportUrl && ! contact.hasAttribute( 'aria-disabled' ) ) { + contact.href = supportUrl; + } + }, + + dismiss, + }; + } + + /** + * Open the dialog for one classic notice and fetch its payload. + * + * Fetched on open rather than printed beside every notice. The diagnostics are + * written by a public REST route, so shipping them with the page put + * attacker-authored text on every admin screen whether or not anyone opened + * the dialog. + * + * The dialog opens first, with a placeholder, and fills in when the response + * lands -- a surface whose whole job is reporting a failure must not be a + * button that does nothing until the network answers. A failed fetch says so + * in place and still offers Contact Support, which is the only action that + * retires the notice. + * + * @param {string} noticeId Item id, used as the analytics key. + * @param {string} category Failure category, sent to the handler. + * @return {boolean} Whether the payload was found and the dialog opened. + */ + function openDetails( noticeId, category ) { + if ( typeof srfmNoticeResponse === 'undefined' || ! category ) { + return false; + } + + const labels = srfmNoticeResponse.details || {}; + + const dialog = showDetails( { + noticeId, + text: labels.loading || 'Loading…', + supportUrl: '', + pending: true, + } ); + + if ( ! dialog ) { + return false; + } + + const body = new FormData(); + body.append( 'action', 'srfm_action_item_details' ); + body.append( 'nonce', srfmNoticeResponse.detailsNonce ); + body.append( 'category', category ); + + fetch( srfmNoticeResponse.ajaxurl, { method: 'POST', body } ) + .then( function ( response ) { + return response.json(); + } ) + .then( function ( json ) { + if ( ! json || ! json.success || ! json.data ) { + throw new Error( 'unavailable' ); + } + + // Same fallback as the failure path below. A successful fetch must + // not end up with less to act on than a failed one: these notices + // are not dismissible and Contact Support is the only thing that + // retires them, so an empty destination here is a dead end. + dialog.setSupportUrl( + json.data.support_url || + srfmNoticeResponse.supportUrl || + '' + ); + dialog.setText( json.data.details || '' ); + } ) + .catch( function () { + // The report is built server-side, so there is nothing to show in + // its place. Say so, and fall back to the untagged support form: + // Contact Support is the only action that retires these notices, so + // a failed fetch must not also take the way out with it. + // + // Destination set before the message, because the message releases + // the copy-first lock and that release needs somewhere to point. + dialog.setSupportUrl( srfmNoticeResponse.supportUrl || '' ); + dialog.setText( labels.unavailable || '', false ); + } ); + + return true; + } + + document.addEventListener( 'click', function ( e ) { + // A click whose target is not an Element -- text nodes, some synthetic + // events -- has no closest() and would throw out of the handler. + if ( ! e.target || typeof e.target.closest !== 'function' ) { + return; + } + + const trigger = e.target.closest( '[data-srfm-details-for]' ); + + if ( ! trigger ) { + return; + } + + // Only swallow the navigation if the dialog actually opened. If it cannot, + // the href still goes to the dashboard, which is where the same details are + // readable. + if ( + openDetails( + trigger.getAttribute( 'data-srfm-details-for' ), + trigger.getAttribute( 'data-srfm-category' ) + ) + ) { + e.preventDefault(); + } + } ); }() ); diff --git a/assets/js/unminified/form-submit.js b/assets/js/unminified/form-submit.js index 55ce53b4a..8135ce5c0 100644 --- a/assets/js/unminified/form-submit.js +++ b/assets/js/unminified/form-submit.js @@ -800,7 +800,13 @@ async function afterSubmit( formStatus, form ) { const startedAt = performance.now(); try { - const response = await fetch( afterSubmitUrl, { method: 'GET' } ); + // keepalive lets the request complete after the document starts + // unloading, which is exactly what a redirect confirmation does. The + // request is a GET with no body, so the 64KB keepalive cap does not apply. + const response = await fetch( afterSubmitUrl, { + method: 'GET', + keepalive: true, + } ); const status = response.status; const durationMs = Math.round( performance.now() - startedAt ); @@ -808,8 +814,12 @@ async function afterSubmit( formStatus, form ) { await parseRestResponse( response ); if ( ! response.ok ) { + // Its own type, not 'network'. The entry is already saved by the time + // this runs, so a failure here is the after-submission process -- + // integrations and webhooks -- not the submission. Recorded server-side + // against the integration category for that reason. srfmLog.add( { - type: 'network', + type: 'after_submission', status, duration_ms: durationMs, message: `After-submission step responded ${ status }`, @@ -826,8 +836,17 @@ async function afterSubmit( formStatus, form ) { // The submission itself succeeded, so nothing is shown to the visitor and // this would otherwise be invisible outside the console. + // + // Logged without a status, which is what keeps it out of is_fault(). We + // caught the browser abandoning the request -- the page unloading behind a + // redirect confirmation is the usual cause, and it is what keepalive above + // exists to survive -- and that says nothing about whether the server ran + // the work. It is guarded by is_after_submission_process_triggered and + // usually has. Safari spells this abort "TypeError: Load failed", and + // raising a non-dismissible "their entries were not saved" notice off it + // reported healthy sites as broken. srfmLog.add( { - type: 'error', + type: 'after_submission', duration_ms: Math.round( performance.now() - startedAt ), message: `After-submission step failed: ${ error?.name ?? 'Error' @@ -1170,6 +1189,18 @@ async function handleFormSubmission( const formStatus = await submitFormData( form ); if ( formStatus?.success ) { + // Dispatched first, before anything below can navigate away. The + // 'different page' and 'custom url' branches call redirectToUrl(), and a + // third-party listener on srfm_form_submission_success may navigate too; + // either unload cancels an in-flight fetch, and issuing this afterwards + // meant the request aborted so the after-submission process never ran. + // afterSubmit() reads only after_submit_url, so it depends on neither the + // event nor the submission-mode resolution below, and gating it here on + // after_submit alone keeps every submission mode covered. + if ( formStatus?.data?.after_submit ) { + afterSubmit( formStatus, form ); + } + /** * Emit a function to signal the successful submission of a form. */ @@ -1228,10 +1259,6 @@ async function handleFormSubmission( // Re-enable submit button after redirect. enableSubmitButton( form ); } - // Moving afterSubmit action out of specific method so it should work for all submission mode - if ( formStatus?.data?.after_submit ) { - afterSubmit( formStatus, form ); - } } else { const errorData = formStatus?.data || {}; showErrorMessage( { form, ...errorData } ); diff --git a/inc/client-logger.php b/inc/client-logger.php index ff2c2029c..6d2353c28 100644 --- a/inc/client-logger.php +++ b/inc/client-logger.php @@ -83,7 +83,7 @@ class Client_Logger { * Option holding per-category failure state, keyed by category. * * Shape: [ category => [ 'count' => int, 'form_id' => int, 'form_title' => string, - * 'at' => int, 'acked' => int ] ]. + * 'at' => int, 'acked' => int, 'acked_at' => int ] ]. * * Kept per category because the three read completely differently to a site * owner: submissions failing means visitors cannot reach you, a notification @@ -102,6 +102,18 @@ class Client_Logger { */ public const CATEGORIES = [ 'submission', 'notification', 'integration' ]; + /** + * Memoised get_tail() results for this request, keyed by character budget. + * + * A class property rather than a static inside the method so append() and + * clear() can invalidate it: a request that writes to the log and then reads a + * tail must not be handed the tail from before the write. + * + * @var array + * @since 2.12.7 + */ + private static $tail_memo = []; + /** * Whether client error logging is currently switched on. * @@ -157,7 +169,14 @@ public static function is_fault( array $entry ) { return true; } - if ( 'network' !== $type ) { + // 'after_submission' runs after the entry is already saved, so it is only a + // fault when the server said so. A browser-side failure there -- an aborted + // fetch as the page unloads, which is what a redirect confirmation does and + // what `keepalive` exists to survive -- tells us nothing about whether the + // work ran: the endpoint is guarded by is_after_submission_process_triggered + // and usually has. Safari spells that abort "TypeError: Load failed", and + // alarming on it reported healthy sites as broken. + if ( ! in_array( $type, [ 'network', 'after_submission' ], true ) ) { return false; } @@ -181,6 +200,25 @@ public static function is_fault( array $entry ) { * @return void */ public static function record_failure( $category, $form_id = 0, $form_title = '' ) { + // Logging off means nothing is recorded, not merely nothing displayed. + // + // The display side was already gated -- get_action_items() skips the + // first-party items and has_action_item_warnings() returns false -- but the + // counter kept being written, from the two call sites in form-submit.php + // that sit beside an append() the enabled check does stop. So a site with + // logging switched off still accumulated failure state, and switching + // logging on surfaced every fault recorded while it was off, behind a View + // details report whose debug log is empty because nothing was written. + // + // Gated here rather than at the call sites, for the reason append() states: + // the guard belongs on the function that writes, not on today's callers. + // clear_category() and the acknowledge helpers are deliberately left + // ungated -- they only remove state, and must keep working so nothing is + // stranded by the toggle. + if ( ! self::is_enabled() ) { + return; + } + if ( ! in_array( $category, self::CATEGORIES, true ) ) { return; } @@ -196,6 +234,11 @@ public static function record_failure( $category, $form_id = 0, $form_title = '' // Preserved: a report already made still stands until this new count // overtakes it, which is what get_open_failures() compares. 'acked' => Helper::get_integer_value( $existing['acked'] ?? 0 ), + // Carried forward too. This array is rebuilt from a fixed set of keys, so + // anything not named here is dropped -- and "when did I last report + // this" quietly disappearing on the next failure is exactly the kind of + // loss nobody notices until support asks. + 'acked_at' => Helper::get_integer_value( $existing['acked_at'] ?? 0 ), ]; update_option( self::FAILURES_OPTION, $failures, false ); @@ -254,6 +297,16 @@ public static function acknowledge_category( $category ) { $failures[ $category ]['acked'] = Helper::get_integer_value( $failures[ $category ]['count'] ?? 0 ); + // Recorded for the report -- "you told us at 14:12" is worth having when + // support reads the ticket -- but deliberately not what decides whether the + // notice comes back. The count does that. + // + // A timestamp cannot: it is written to the second, so a failure recorded in + // the same second as the acknowledgement compares equal and gets swallowed. + // That is the one moment it matters most, because a fault arriving as + // someone reports the last one is a fault still happening. + $failures[ $category ]['acked_at'] = time(); + update_option( self::FAILURES_OPTION, $failures, false ); } @@ -314,8 +367,14 @@ public static function get_acknowledgement() { } return [ - 'at' => Helper::get_integer_value( $failures['submission']['at'] ?? 0 ), - 'streak' => $acked, + // The last fault time, not the acknowledgement time. Kept under this + // key because callers already read it as "when the thing happened". + 'at' => Helper::get_integer_value( $failures['submission']['at'] ?? 0 ), + // When the owner reported it. Separate, because the two answer + // different questions and are usually seconds apart on a fresh fault + // and days apart on an old one. + 'acked_at' => Helper::get_integer_value( $failures['submission']['acked_at'] ?? 0 ), + 'streak' => $acked, ]; } @@ -347,8 +406,13 @@ public static function acknowledge_failures() { * Hooked - srfm_form_submit, which fires only on the success path. * * Only the submission category is cleared. A submission getting through says - * nothing about whether its notification email sent or its integrations ran, - * so those clear when they next succeed or when the owner reports them. + * nothing about whether its notification email sent or its integrations ran. + * Notification clears on its own path, in Form_Submit::send_email(), once every + * recipient for a submission has sent. Integration has no success signal to + * clear on yet -- the failures are recorded by pro through + * Form_Submit::log_integration_failure() and there is no matching + * "it worked" call -- so that category still clears only when the owner + * reports it. * * @since 2.12.6 * @return void @@ -392,6 +456,9 @@ public static function get_log_path( $create = true ) { * @return bool True when the line was written. */ public static function append( array $entry ) { + // Any write invalidates a memoised tail, whether or not this one lands. + self::$tail_memo = []; + // Checked here as well as at the route, so the guard sits on the function // that writes rather than only on today's single caller. Without it any // future caller writes to disk on a site that never switched logging on. @@ -408,9 +475,18 @@ public static function append( array $entry ) { // on a badly broken site those are exactly the conditions that occur. // A notification or integration failure records its own category at the call // site; everything else reaching here is the submission itself. - if ( self::is_fault( $entry ) && 'message' !== ( $entry['type'] ?? '' ) ) { + $type = Helper::get_string_value( $entry['type'] ?? '' ); + + if ( self::is_fault( $entry ) && 'message' !== $type ) { + // The after-submission step runs on an entry that is already saved and + // fires srfm_after_submission_process, which is where integrations and + // webhooks hook in. Calling that a submission failure told the site owner + // "their entries were not saved" about entries that were -- the wrong + // message on the one notice that cannot be dismissed. The category is + // derived here rather than taken from the entry: the client names what + // happened, the server decides what it means. self::record_failure( - 'submission', + 'after_submission' === $type ? 'integration' : 'submission', Helper::get_integer_value( $entry['form_id'] ?? 0 ), Helper::get_string_value( $entry['form_title'] ?? '' ) ); @@ -443,10 +519,12 @@ public static function append( array $entry ) { /** * The most recent whole log lines, up to a character budget. * - * For pasting into a support email, where the transport imposes the limit: a - * mailto URL has to survive percent-encoding and every mail client's own - * length cap, so only a tail fits. Newest entries are the ones that describe - * the failure being reported, so the tail is the useful end. + * An excerpt for reading and pasting. The budget is the caller's: the details + * dialog shows it on screen and copies it to a clipboard, neither of which has + * a length limit worth designing around, while an excerpt embedded anywhere + * length-bound needs a smaller one. Newest entries are the ones that describe + * the failure being reported, so the tail is the useful end and the oldest are + * what a smaller budget drops. * * Whole lines only -- half a JSON object helps nobody. * @@ -455,6 +533,26 @@ public static function append( array $entry ) { * @return array{text:string,shown:int,total:int} */ public static function get_tail( $max_chars = 1200 ) { + // Memoised per request and per budget. get_action_items() asks once per + // open failure category and runs twice per admin request -- building the + // localisation payload and again in the classic renderer -- so a site with + // three open failures was reading a file capped at 1 MB six times to render + // one page. + $max_chars = (int) $max_chars; + + // Keyed by blog as well as budget: get_log_path() hashes the blog id into + // the filename, so after a switch_to_blog() the same budget is a different + // file. Unreachable today; nothing switches blogs on this path. + // + // Its own variable, not $max_chars reused -- that key is a string, and the + // byte-budget comparison below coerces "1:1200" to 1, which silently + // reduces every excerpt to a single line. + $memo_key = get_current_blog_id() . ':' . $max_chars; + + if ( isset( self::$tail_memo[ $memo_key ] ) ) { + return self::$tail_memo[ $memo_key ]; + } + $empty = [ 'text' => '', 'shown' => 0, @@ -464,6 +562,8 @@ public static function get_tail( $max_chars = 1200 ) { $path = self::get_log_path( false ); if ( '' === $path || ! file_exists( $path ) ) { + self::$tail_memo[ $memo_key ] = $empty; + return $empty; } @@ -471,6 +571,8 @@ public static function get_tail( $max_chars = 1200 ) { $lines = file( $path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES ); if ( ! is_array( $lines ) || empty( $lines ) ) { + self::$tail_memo[ $memo_key ] = $empty; + return $empty; } @@ -491,11 +593,13 @@ public static function get_tail( $max_chars = 1200 ) { $used += $length; } - return [ + self::$tail_memo[ $memo_key ] = [ 'text' => implode( "\n", $kept ), 'shown' => count( $kept ), 'total' => $total, ]; + + return self::$tail_memo[ $memo_key ]; } /** @@ -533,6 +637,8 @@ public static function get_file_size() { * @return bool */ public static function clear() { + self::$tail_memo = []; + $path = self::get_log_path( false ); if ( '' === $path || ! file_exists( $path ) ) { @@ -555,7 +661,7 @@ public static function clear() { * @return array Empty when nothing usable survived. */ public static function sanitize_entry( array $raw ) { - $allowed_types = [ 'network', 'response', 'error', 'message', 'blocked' ]; + $allowed_types = [ 'network', 'response', 'error', 'message', 'blocked', 'after_submission' ]; $type = isset( $raw['type'] ) ? sanitize_key( Helper::get_string_value( $raw['type'] ) ) : ''; if ( ! in_array( $type, $allowed_types, true ) ) { @@ -594,7 +700,21 @@ public static function sanitize_entry( array $raw ) { // disabled the feature until an admin cleared it. A real key is // `srfm-input-lbl-`, far inside this bound. foreach ( array_slice( $raw['field_keys'], 0, 100 ) as $field_key ) { - $keys[] = mb_substr( sanitize_text_field( Helper::get_string_value( $field_key ) ), 0, self::MAX_KEY_LENGTH ); + // Through scrub_text() like every other free-text value. A key is + // supposed to be `srfm-input-lbl-`, but the array arrives + // from the browser and nothing server-side guarantees that, so a + // caller is free to put an address or a token in one. + // + // wp_check_invalid_utf8() is kept because scrub_text() is not a + // drop-in for sanitize_text_field(): invalid UTF-8 reaching + // wp_json_encode() in append() makes it return false and drop the + // whole line -- after record_failure() has already incremented the + // counter, leaving a banner with no log line behind it. + $keys[] = mb_substr( + self::scrub_text( wp_check_invalid_utf8( Helper::get_string_value( $field_key ) ) ), + 0, + self::MAX_KEY_LENGTH + ); } $entry['field_keys'] = $keys; @@ -615,6 +735,19 @@ public static function sanitize_entry( array $raw ) { * string. Whitespace is collapsed as a log-injection guard, matching * inc/ai-form-builder/ai-helper.php. * + * Removes, in order: JSON slash-escaping, so the rules below can see URLs at + * all; credentials in a URL's userinfo; query strings and fragments; a foreign + * URL's path past its first segment, keeping same-origin paths intact because + * those are stack frames and the path is the diagnosis; the value following a + * name that identifies a credential; email addresses; and long digit runs. + * + * A single-segment foreign path is truncated whole rather than kept, which is + * the safe direction. + * + * What it cannot remove is a name, a street address or a free-text message + * body -- those have no shape to match, so the log excerpt this produces + * should still be treated as personal data. + * * @param string $text Raw text. * @since 2.12.6 * @return string @@ -624,9 +757,74 @@ public static function scrub_text( $text ) { return ''; } + // Clamped before the rules run, not after. Without it every pattern below + // is applied to whatever the caller sent, however long that is. + $text = mb_substr( $text, 0, self::MAX_TEXT_LENGTH * 4 ); + + // A WP REST error body arrives slash-escaped -- wp_json_encode() escapes + // "/" and WP_REST_Server::serve_request() does not pass + // JSON_UNESCAPED_SLASHES -- and two of the four body sinks log the raw + // response text rather than the decoded object. Without this every URL + // rule below misses every URL in the largest sink, including the webhook + // tokens they exist for. + $text = str_replace( '\\/', '/', $text ); + + // Credentials in the userinfo position, before the host rules see them. + $text = (string) preg_replace( '#(https?://)[^\s/@]+@#i', '$1[credentials]@', $text ); + // Drop query strings and fragments wholesale rather than allowlisting // parameters. A token after # is just as sensitive as one after ?. - $text = (string) preg_replace( '#(https?://[^\s?\#]+)[?\#]\S*#i', '$1', $text ); + $text = (string) preg_replace( '#(https?://[^\s?\#]+)[?\#][^\s"\'<>,;)\]}]*#i', '$1', $text ); + + $site_host = Helper::get_string_value( wp_parse_url( home_url(), PHP_URL_HOST ) ); + + // Keep the origin and the first path segment of a foreign URL, drop the + // rest: a webhook credential sits in the path as often as in the query, + // and Slack and Discord both put theirs there. + // + // Same-origin URLs are exempt. `source` is a stack frame, not a page + // address -- assets/js/unminified/form-submit.js takes + // error.stack.split( "\n" )[1] -- so truncating our own paths deletes the + // filename, the line and column, and which plugin threw, which is the + // whole diagnosis. A third-party credential is never same-origin. + // + // The port is stripped before comparing. The pattern captures the whole + // authority, so a site served on a non-default port produced frames reading + // `example.test:8443`, while $site_host is PHP_URL_HOST and never carries a + // port -- every own frame failed the check and was truncated to /[path], + // which is the case this exemption exists for. Same host, different port is + // treated as ours: on a WordPress install that is the same site behind a dev + // server or a proxy, and the alternative is deleting the diagnosis. + $text = (string) preg_replace_callback( + '#(https?://)([^\s/]+)((?:/[^\s/]*)?)/[^\s"\'<>,;)\]}]+#i', + static function ( $matches ) use ( $site_host ) { + // Trailing :digits only, so an IPv6 literal keeps its brackets and + // its own colons -- [::1]:8080 becomes [::1], which is the form + // wp_parse_url() returns for one. + $host = (string) preg_replace( '/:\d+$/', '', $matches[2] ); + + if ( '' !== $site_host && 0 === strcasecmp( $host, $site_host ) ) { + return $matches[0]; + } + + return $matches[1] . $matches[2] . $matches[3] . '/[path]'; + }, + $text + ); + + // Credentials named in the text itself. The name is matched as a whole + // identifier, so a keyword with a prefix or suffix is still caught -- + // AWS_SECRET_ACCESS_KEY, stripe_secret_key, X-Hub-Signature. And a + // separator is required, so ordinary prose survives: "Invalid token + // provided" and "password protected" are the most common things support + // reads out of this log, and an earlier version redacted both. `bearer` + // and `basic` are the exception, because those carry the value after a + // space with no separator at all. + $text = (string) preg_replace( + '/(\b[\w.-]*(?:api[_-]?key|key|secret|token|password|passwd|pwd|auth|credential|signature)[\w.-]*["\']?\s*[:=]\s*["\']?|\b(?:bearer|basic)\s+)[^\s"\',;&]{8,}/i', + '$1[redacted]', + $text + ); // Email addresses. $text = (string) preg_replace( '/[\w.+-]+@[\w-]+\.[\w.-]+/', '[email]', $text ); diff --git a/inc/database/base.php b/inc/database/base.php index 6a9f728a4..93ad5ea39 100644 --- a/inc/database/base.php +++ b/inc/database/base.php @@ -89,7 +89,7 @@ abstract class Base { * @var array * @since 1.8.0 */ - private $allowed_where_operators = [ 'LIKE', 'IN', '=', '!=', '>', '<', '>=', '<=' ]; + private $allowed_where_operators = [ 'LIKE', 'IN', 'NOT IN', '=', '!=', '>', '<', '>=', '<=' ]; /** * Init class. @@ -829,8 +829,10 @@ public function get_results( $where_clauses = [], $columns = '*', $extra_queries $query = rtrim( trim( $query ), ';' ) . ';'; $cached_results = $this->cache_get( $query ); - if ( $cached_results ) { - // Return the cached data if exists. + if ( null !== $cached_results ) { + // Return the cached data if exists. Tested against null rather than + // truthiness: an empty result set is a real answer, and re-running the + // query for it means every no-match lookup runs once per caller. return Helper::get_array_value( $cached_results ); } @@ -918,8 +920,10 @@ public function get_total_count( $where_clauses = [] ) { $query = rtrim( trim( $query ), ';' ) . ';'; $cached_results = $this->cache_get( $query ); - if ( $cached_results ) { - // Return the cached data if exists. + if ( null !== $cached_results ) { + // Return the cached data if exists. Tested against null rather than + // truthiness: a count of zero is a real answer, and the editor exclusion + // makes zero the common case rather than the exception. return Helper::get_integer_value( $cached_results ); } @@ -1052,6 +1056,7 @@ protected function cache_reset() { * } * } * + * @since 2.12.7 -- Added support for "NOT IN" compare. * @since 1.1.1 -- Added support for "IN" compare. * @since 0.0.13 * @return string The prepared SQL WHERE clause with placeholders, or an empty string if no clauses were provided. @@ -1078,8 +1083,17 @@ protected function prepare_where_clauses( $where_clauses = [] ) { $clause_parts = []; foreach ( $value as $_key => $_value ) { if ( is_int( $_key ) ) { + // Normalised before the allowlist test. Payments' + // builder upper-cases and trims, this one compared + // strictly -- so a caller writing 'not in' was honoured + // by one and silently dropped by the other. A dropped + // condition used to be harmless; now that NOT IN is the + // exclusion primitive, dropping it disables the + // exclusion without a word. + $compare = strtoupper( trim( Helper::get_string_value( $_value['compare'] ) ) ); + // Check if the operator is allowed. - if ( ! in_array( $_value['compare'], $this->allowed_where_operators, true ) ) { + if ( ! in_array( $compare, $this->allowed_where_operators, true ) ) { continue; } @@ -1088,26 +1102,56 @@ protected function prepare_where_clauses( $where_clauses = [] ) { continue; } - switch ( $_value['compare'] ) { + switch ( $compare ) { case 'LIKE': // Single quotes to match WP core. Under a MySQL session with // ANSI_QUOTES set (not in WP's incompatible_modes list, which // only names the compound ANSI mode) a double-quoted pattern // parses as an identifier and the query hard-fails, taking out // both the listing and its COUNT(*). - $clause_parts[] = $_value['key'] . ' ' . $_value['compare'] . " '%%" . $this->get_format_by_datatype( Helper::get_string_value( $schema[ $_value['key'] ]['type'] ) ) . "%%'"; + $clause_parts[] = $_value['key'] . ' ' . $compare . " '%%" . $this->get_format_by_datatype( Helper::get_string_value( $schema[ $_value['key'] ]['type'] ) ) . "%%'"; $values[] = $_value['value']; break; case 'IN': + case 'NOT IN': + // A scalar is a caller bug, not an empty set, and it must + // surface. 'NOT IN' with value 5 -- a plausible typo for + // [ 5 ] -- would otherwise drop the condition and exclude + // nobody, with no error and a green test suite, while the + // same typo on 'IN' fails closed. On a primitive whose only + // job is scoping data, that asymmetry is a hazard. + if ( ! is_array( $_value['value'] ) ) { + _doing_it_wrong( + __METHOD__, + esc_html( "{$compare} requires an array value, received " . gettype( $_value['value'] ) . '.' ), + '2.12.7' + ); + break; + } + + // An empty list cannot be interpolated: "col IN ()" is a syntax + // error that fails the whole query, listing and COUNT alike. + // An empty IN matches nothing, so '1 = 0' says that in any + // relation. An empty NOT IN excludes nothing, but a literal + // would be '1 = 1', and that makes an enclosing OR group + // unconditionally true. Dropping the condition means the same + // thing under AND and stays fail-closed under OR. + if ( [] === $_value['value'] ) { + if ( 'IN' === $compare ) { + $clause_parts[] = '1 = 0'; + } + break; + } + // Based on the number of values and datatype, it will create WHERE clause for $wpdb::prepare method. Eg: for ID with three values column: ID IN (%d, %d, %d). $datatype = $this->get_format_by_datatype( Helper::get_string_value( $schema[ $_value['key'] ]['type'] ) ); - $clause_parts[] = $_value['key'] . ' ' . $_value['compare'] . ' (' . implode( ', ', array_fill( 0, count( $_value['value'] ), $datatype ) ) . ')'; + $clause_parts[] = $_value['key'] . ' ' . $compare . ' (' . implode( ', ', array_fill( 0, count( $_value['value'] ), $datatype ) ) . ')'; $values = array_merge( $values, $_value['value'] ); break; default: - $clause_parts[] = $_value['key'] . ' ' . $_value['compare'] . ' ' . $this->get_format_by_datatype( Helper::get_string_value( $schema[ $_value['key'] ]['type'] ) ); + $clause_parts[] = $_value['key'] . ' ' . $compare . ' ' . $this->get_format_by_datatype( Helper::get_string_value( $schema[ $_value['key'] ]['type'] ) ); $values[] = $_value['value']; break; } @@ -1135,6 +1179,14 @@ protected function prepare_where_clauses( $where_clauses = [] ) { $where = ' WHERE ' . implode( ' AND ', $groups ); + if ( [] === $values ) { + // Every branch that builds a placeholder also pushes a value, so an + // empty list here means the only conditions were constant ones. There + // is nothing for prepare() to fill, and calling it with no placeholder + // trips _doing_it_wrong. + return $where; + } + // Prepare the query with placeholders. // @phpstan-ignore-next-line -- We are already assigning non-literal string above using "get_format_by_datatype" methods. return $wpdb->prepare( $where, ...$values ); // phpcs:ignore -- We are returning prepared sql query here. We are already using necessary placeholders in $where variable. diff --git a/inc/database/tables/entries.php b/inc/database/tables/entries.php index 2de9cefd4..d3ec611d3 100644 --- a/inc/database/tables/entries.php +++ b/inc/database/tables/entries.php @@ -120,6 +120,11 @@ public function get_columns_definition() { return [ 'ID BIGINT(20) UNSIGNED AUTO_INCREMENT PRIMARY KEY', 'form_id BIGINT(20) UNSIGNED', + // NOT NULL DEFAULT 0 is load-bearing, not tidiness. An anonymous + // submission stores 0, and Forms_Data::calculate_form_metrics() excludes + // site editors with `user_id NOT IN (…)`. NOT IN never matches NULL, so + // making this column nullable would drop every anonymous entry from the + // numerator and report a conversion rate near 0% on every form. 'user_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0', 'form_data LONGTEXT', // Note: @since 0.0.13 -- We have renamed `user_data` column to `form_data`. 'logs LONGTEXT', @@ -133,6 +138,12 @@ public function get_columns_definition() { 'INDEX idx_form_id (form_id)', // Indexing for the performance improvements. 'INDEX idx_user_id (user_id)', 'INDEX idx_form_id_created_at_status (form_id, created_at, status)', // Composite index for performance improvements. + // Leads on the two columns Forms_Data::get_editing_submitter_ids() + // filters. idx_user_id alone cannot serve it -- created_at is not in it, + // and no other index leads on created_at -- so that lookup was a range + // scan with a row read per row plus a temp table for DISTINCT, on every + // Forms-list render. + 'INDEX idx_user_id_created_at (user_id, created_at)', ]; } @@ -146,6 +157,8 @@ public function get_new_columns_definition() { 'extras LONGTEXT AFTER status', 'user_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0 AFTER form_id', 'INDEX idx_user_id (user_id)', + // Note: @since 2.12.7 -- Covers the conversion rate's submitter lookup. + 'INDEX idx_user_id_created_at (user_id, created_at)', ]; } @@ -543,7 +556,7 @@ public static function has_duplicate_field_value( $form_id, $field_key, $field_v * @return array An array of form IDs. */ public static function get_form_ids_by_entries( $entry_ids ) { - if ( empty( $entry_ids ) && ! is_array( $entry_ids ) ) { + if ( empty( $entry_ids ) || ! is_array( $entry_ids ) ) { return []; } diff --git a/inc/database/tables/payments.php b/inc/database/tables/payments.php index 0e5d47ad1..1b11ca293 100644 --- a/inc/database/tables/payments.php +++ b/inc/database/tables/payments.php @@ -1285,10 +1285,40 @@ private static function build_clause_for_group( array $where_group, array &$para $column = $condition['key']; - if ( in_array( $operator, [ 'IN', 'NOT IN' ], true ) && is_array( $condition['value'] ) ) { + if ( in_array( $operator, [ 'IN', 'NOT IN' ], true ) ) { + if ( ! is_array( $condition['value'] ) ) { + // A scalar used to fall through to the else branch and emit + // `col IN %s`, which is a syntax error that fails the whole + // query. Base::prepare_where_clauses() reports this and drops + // the condition; do the same rather than leave the two builders + // disagreeing on malformed input. + _doing_it_wrong( + __METHOD__, + esc_html( "{$operator} requires an array value, received " . gettype( $condition['value'] ) . '.' ), + '2.12.7' + ); + continue; + } + $ids = array_map( 'absint', $condition['value'] ); - if ( empty( $ids ) ) { - $ids = [ 0 ]; + if ( [] === $ids ) { + // Same empty-list handling as Base::prepare_where_clauses(), so + // the two builders cannot disagree. An empty IN matches nothing. + // An empty NOT IN excludes nothing, and is dropped rather than + // written as a literal, because a literal true would make an + // enclosing OR group match every row. + // + // This builder serves the manage_options-gated admin payments + // listing only, through get_all_main_payments() and + // get_total_main_payments_by_status(). The payment-history + // shortcode's customer filter is compiled by + // Base::prepare_where_clauses() via Payments::get_all() -- that + // group is where an OR fail-open would actually leak, and it is + // covered by the change in base.php. + if ( 'IN' === $operator ) { + $sub_clauses[] = '1 = 0'; + } + continue; } $placeholders = implode( ',', array_fill( 0, count( $ids ), '%d' ) ); $sub_clauses[] = "{$column} {$operator} ({$placeholders})"; diff --git a/inc/field-validation.php b/inc/field-validation.php index 74f7530be..1de07896d 100644 --- a/inc/field-validation.php +++ b/inc/field-validation.php @@ -219,28 +219,12 @@ public static function prepared_validation_data( $current_form_id ) { * blocks could not be derived (callers should fail open). */ public static function get_known_field_block_ids( $form_id ) { - static $cache = []; - $form_id = Helper::get_integer_value( $form_id ); if ( $form_id <= 0 ) { return []; } - // Only the block walk is memoised. The filtered result deliberately is not: a - // third party returning a malformed value would otherwise poison the set for the - // rest of the request, and because the lookup short-circuits on isset() the walk - // would never be retried. - if ( ! isset( $cache[ $form_id ] ) ) { - $ids = []; - $post = get_post( $form_id ); - - if ( $post instanceof \WP_Post && ! empty( $post->post_content ) && function_exists( 'parse_blocks' ) ) { - $visited = []; - self::collect_field_block_ids( parse_blocks( $post->post_content ), $ids, $visited ); - } - - $cache[ $form_id ] = $ids; - } + $walked = self::get_field_identifiers( $form_id ); /** * Filter the set of block ids considered valid for a form during submission. @@ -256,19 +240,55 @@ public static function get_known_field_block_ids( $form_id ) { * @param array $ids Map of known block id => true. * @param int $form_id The form post id. */ - $ids = apply_filters( 'srfm_known_field_block_ids', $cache[ $form_id ], $form_id ); + $ids = apply_filters( 'srfm_known_field_block_ids', $walked['ids'], $form_id ); // Coerce defensively. A callback returning a list (`[ 'aaa', 'bbb' ]`) rather // than a map would otherwise make every real field look unknown, and a non-array // return would drop the whole allowlist — so fall back to the walked set instead // of silently turning the check off. if ( ! is_array( $ids ) ) { - return $cache[ $form_id ]; + return $walked['ids']; } return wp_is_numeric_array( $ids ) ? array_fill_keys( array_map( 'strval', $ids ), true ) : $ids; } + /** + * The slugs of every SureForms field the form defines, block_id => true style. + * + * A slug is stable across renders where a block_id is not, so it is the identifier + * used to keep a submitted field whose block_id drifted (full-page cache, an editor + * rebuild). Mirrors get_known_field_block_ids(): one memoised walk, an unmemoised + * filter pass. + * + * @param int|mixed $form_id The form post id. + * @since 2.12.7 + * @return array Map of known slug => true. + */ + public static function get_known_field_slugs( $form_id ) { + $form_id = Helper::get_integer_value( $form_id ); + if ( $form_id <= 0 ) { + return []; + } + + $walked = self::get_field_identifiers( $form_id ); + + /** + * Filter the set of field slugs considered valid for a form during submission. + * + * @since 2.12.7 + * @param array $slugs Map of known slug => true. + * @param int $form_id The form post id. + */ + $slugs = apply_filters( 'srfm_known_field_slugs', $walked['slugs'], $form_id ); + + if ( ! is_array( $slugs ) ) { + return $walked['slugs']; + } + + return wp_is_numeric_array( $slugs ) ? array_fill_keys( array_map( 'strval', $slugs ), true ) : $slugs; + } + /** * Remove submitted field keys the form does not define. * @@ -300,12 +320,14 @@ public static function strip_unknown_field_keys( $form_data, $form_id ) { return []; } - $known_block_ids = self::get_known_field_block_ids( Helper::get_integer_value( $form_id ) ); + $form_id_int = Helper::get_integer_value( $form_id ); + $known_block_ids = self::get_known_field_block_ids( $form_id_int ); + $known_slugs = self::get_known_field_slugs( $form_id_int ); - // Fail open. The set is empty only when the form's blocks could not be derived + // Fail open. The sets are empty only when the form's blocks could not be derived // (no/empty post_content, a parse failure, or a structure this walk does not // recognise). Enforcing on an empty set would strip every field. - if ( empty( $known_block_ids ) ) { + if ( empty( $known_block_ids ) && empty( $known_slugs ) ) { return $form_data; } @@ -314,14 +336,19 @@ public static function strip_unknown_field_keys( $form_data, $form_id ) { continue; } - if ( ! isset( $known_block_ids[ Helper::get_block_id_from_key( $key ) ] ) ) { + // Keep the field when EITHER its block_id OR its slug matches the form. The + // block_id can drift between the (possibly full-page-cached) HTML the visitor + // submitted and the current post_content; the slug does not, so requiring only + // a block_id match silently deleted real submissions (#1517643). A key with + // neither a known block_id nor a known slug is genuinely foreign and dropped. + if ( ! self::field_key_belongs_to_form( $key, $known_block_ids, $known_slugs ) ) { unset( $form_data[ $key ] ); continue; } // A known key whose value is an array is a repeater: walk its rows. if ( is_array( $value ) ) { - $form_data[ $key ] = self::strip_unknown_repeater_keys( $value, $known_block_ids ); + $form_data[ $key ] = self::strip_unknown_repeater_keys( $value, $known_block_ids, $known_slugs ); } } @@ -497,15 +524,109 @@ public static function get_email_char_limits() { ]; } + /** + * The walked allowlists for one form, memoised for the request. + * + * One cache, not one per getter. Both public getters need the same walk, and each + * holding its own `static $cache` meant parse_blocks() plus the recursive collect + * ran twice for every submission -- once for the ids and again for the slugs -- + * on a form whose markup can be large. + * + * Only the walk is memoised. The filtered results deliberately are not: a third + * party returning a malformed value would otherwise poison the set for the rest of + * the request, and because the lookup short-circuits on isset() the walk would + * never be retried. + * + * @param int $form_id The form post id, already normalised by the callers. + * @since 2.12.8 + * @return array{ids:array,slugs:array} + */ + private static function get_field_identifiers( $form_id ) { + static $cache = []; + + if ( ! isset( $cache[ $form_id ] ) ) { + $cache[ $form_id ] = self::walk_field_identifiers( $form_id ); + } + + return $cache[ $form_id ]; + } + + /** + * Walk a form's blocks once, returning both the block-id and slug allowlists. + * + * @param int $form_id The form post id. + * @since 2.12.7 + * @return array{ids:array,slugs:array} + */ + private static function walk_field_identifiers( $form_id ) { + $ids = []; + $slugs = []; + $post = get_post( $form_id ); + + if ( $post instanceof \WP_Post && ! empty( $post->post_content ) && function_exists( 'parse_blocks' ) ) { + $visited = []; + self::collect_field_block_ids( parse_blocks( $post->post_content ), $ids, $slugs, $visited ); + } + + return [ + 'ids' => $ids, + 'slugs' => $slugs, + ]; + } + + /** + * Whether a submitted field key belongs to the form, by block_id or by slug. + * + * @param string $key Submitted field key. + * @param array $known_block_ids Allowlisted block ids. + * @param array $known_slugs Allowlisted field slugs. + * @since 2.12.7 + * @return bool + */ + private static function field_key_belongs_to_form( $key, $known_block_ids, $known_slugs ) { + if ( isset( $known_block_ids[ Helper::get_block_id_from_key( $key ) ] ) ) { + return true; + } + + $slug = self::get_slug_from_key( $key ); + + return '' !== $slug && isset( $known_slugs[ $slug ] ); + } + + /** + * Extract a field's slug from its submitted key. + * + * A key is `srfm---lbl--`. Helper::encode() is + * padding-stripped standard base64 and never contains a hyphen, so the slug is + * everything after the first hyphen that follows `-lbl-` (the slug itself may + * contain hyphens, which is why only the first is used as the boundary). + * + * @param string $key Submitted field key. + * @since 2.12.7 + * @return string The slug, or '' when it cannot be derived. + */ + private static function get_slug_from_key( $key ) { + if ( ! is_string( $key ) || false === strpos( $key, '-lbl-' ) ) { + return ''; + } + + $parts = explode( '-lbl-', $key ); + $after = $parts[1] ?? ''; + $pos = strpos( $after, '-' ); + + return false === $pos ? '' : substr( $after, $pos + 1 ); + } + /** * Remove unknown child field keys from repeater rows. * * @param array $rows The repeater's submitted rows. * @param array $known_block_ids Map of block ids belonging to the form. + * @param array $known_slugs Map of field slugs belonging to the form. * @since 2.12.3 * @return array The rows with unknown child keys removed. */ - private static function strip_unknown_repeater_keys( $rows, $known_block_ids ) { + private static function strip_unknown_repeater_keys( $rows, $known_block_ids, $known_slugs = [] ) { foreach ( $rows as $index => $row ) { if ( ! is_array( $row ) ) { continue; @@ -516,7 +637,7 @@ private static function strip_unknown_repeater_keys( $rows, $known_block_ids ) { continue; } - if ( ! isset( $known_block_ids[ Helper::get_block_id_from_key( $child_key ) ] ) ) { + if ( ! self::field_key_belongs_to_form( $child_key, $known_block_ids, $known_slugs ) ) { unset( $row[ $child_key ] ); } } @@ -532,12 +653,13 @@ private static function strip_unknown_repeater_keys( $rows, $known_block_ids ) { * * @param array $blocks Parsed blocks from parse_blocks(). * @param array $ids Accumulator of block id => true (by reference). + * @param array $slugs Accumulator of field slug => true (by reference). * @param array $visited Expanded reusable-block post ids, guards cycles. * @param int $depth Current recursion depth, guards pathological trees. * @since 2.12.3 * @return void */ - private static function collect_field_block_ids( $blocks, &$ids, &$visited, $depth = 0 ) { + private static function collect_field_block_ids( $blocks, &$ids, &$slugs, &$visited, $depth = 0 ) { if ( ! is_array( $blocks ) || $depth > 50 ) { return; } @@ -556,8 +678,17 @@ private static function collect_field_block_ids( $blocks, &$ids, &$visited, $dep // alters under a different string than the one looked up, making a legitimate // field permanently unsubmittable. These are map keys used for comparison // only; nothing is echoed from here. - if ( 0 === strpos( $block_name, 'srfm/' ) && ! empty( $attrs['block_id'] ) && is_string( $attrs['block_id'] ) ) { - $ids[ $attrs['block_id'] ] = true; + if ( 0 === strpos( $block_name, 'srfm/' ) ) { + if ( ! empty( $attrs['block_id'] ) && is_string( $attrs['block_id'] ) ) { + $ids[ $attrs['block_id'] ] = true; + } + // Also index by slug. The block_id is rebuilt when the editor recreates a + // field and can differ between the cached HTML a visitor submitted and the + // current post_content, but the slug is the stable field identifier — so a + // slug match keeps a legitimately-submitted field whose block_id drifted. + if ( ! empty( $attrs['slug'] ) && is_string( $attrs['slug'] ) ) { + $slugs[ $attrs['slug'] ] = true; + } } // Expand reusable/synced patterns so fields living inside a pattern count as @@ -568,13 +699,13 @@ private static function collect_field_block_ids( $blocks, &$ids, &$visited, $dep $visited[ $ref ] = true; $ref_post = get_post( $ref ); if ( $ref_post instanceof \WP_Post && 'wp_block' === $ref_post->post_type && '' !== $ref_post->post_content ) { - self::collect_field_block_ids( parse_blocks( $ref_post->post_content ), $ids, $visited, $depth + 1 ); + self::collect_field_block_ids( parse_blocks( $ref_post->post_content ), $ids, $slugs, $visited, $depth + 1 ); } } } if ( ! empty( $block['innerBlocks'] ) && is_array( $block['innerBlocks'] ) ) { - self::collect_field_block_ids( $block['innerBlocks'], $ids, $visited, $depth + 1 ); + self::collect_field_block_ids( $block['innerBlocks'], $ids, $slugs, $visited, $depth + 1 ); } } } diff --git a/inc/form-submit.php b/inc/form-submit.php index 008a22d04..1b6994686 100644 --- a/inc/form-submit.php +++ b/inc/form-submit.php @@ -1030,6 +1030,12 @@ public static function parse_email_notification_template( $submission_data, $ite public static function send_email( $id, $submission_data, $form_data = [] ) { $email_notification = get_post_meta( intval( $id ), '_srfm_email_notification' ); $is_mail_sent = false; + // Any recipient failing counts as a failure for the whole submission, so + // these are set inside the loop and only read after it. + $notification_failed = false; + // Whether any recipient's "success" came from the mail() fallback, which + // reports true for a message the local MTA accepted and will bounce. + $used_mail_fallback = false; $emails = []; // Filter to determine whether the email notification should be sent. @@ -1100,9 +1106,20 @@ static function() { if ( ! $sent ) { // Fallback to default PHP mail if for some reasons wp_mail fails. $sent = mail( $parsed['to'], $parsed['subject'], $parsed['message'], $parsed['headers'] ); + + if ( $sent ) { + // Accepted by the local MTA, not delivered. Good + // enough to avoid recording a fault, not good + // enough to retire one. + $used_mail_fallback = true; + } } $email_report = ob_get_clean(); // Catch any printed notice/errors/message for reports. + if ( true !== $sent ) { + $notification_failed = true; + } + if ( is_int( $log_key ) ) { if ( true === $sent ) { $entries_db_instance->update_log( @@ -1183,6 +1200,37 @@ static function() { $entries_db_instance->reset_logs(); $entries_db_instance->add_log( __( 'No emails were sent.', 'sureforms' ) ); } + + // The notification fault clears when notifications work again. Nothing + // else retired it: Client_Logger::clear_category() had a single caller + // hardcoded to 'submission', and the notice is deliberately not + // dismissible, so a site that had fixed its SMTP kept an undismissable + // banner on every admin page until somebody opened a support ticket. + // Held until the loop is done because one recipient succeeding while + // another fails is still a failure. + // + // Scoped to the form the fault was recorded against. send_email() runs + // on the public submit path and the counter is per category, not per + // form, so without this an anonymous submission of a working form + // wipes a different form's standing fault -- once per admin page load, + // by anyone. The notice names a form, so the granularity is visible + // now that this clears as well as records. + // + // wp_mail() only. The mail() fallback above returns true when the local + // MTA merely accepts a message it will later bounce, which is the + // broken configuration rather than the fixed one. + // + // is_int( $log_key ) mirrors the recording guard: record_failure() sits + // inside it, so without it an install where add_log() returns a + // non-int would never record a notification fault but would still + // clear one. + $open_failures = Client_Logger::get_failures(); + + if ( ! empty( $emails ) && ! $notification_failed && is_int( $log_key ) + && ! $used_mail_fallback + && intval( $id ) === Helper::get_integer_value( $open_failures['notification']['form_id'] ?? 0 ) ) { + Client_Logger::clear_category( 'notification' ); + } } return [ diff --git a/inc/forms-data.php b/inc/forms-data.php index 618c1b04a..a4782a619 100644 --- a/inc/forms-data.php +++ b/inc/forms-data.php @@ -25,6 +25,26 @@ class Forms_Data { use Get_Instance; + /** + * Ids of the in-window submitters who can edit the site, keyed by blog id. + * + * Keyed on the blog rather than held as a single list because capabilities are + * per-site: after a switch_to_blog() the previous site's answer is wrong, and a + * flat cache would hand it back. + * + * A class property rather than a `static` inside the method so it can be reset, + * which the tests need: they create a user and then ask for the metrics inside + * one process. + * + * Deliberately per-request and never written to the object cache. A persistent + * cache would keep counting a newly promoted editor as a visitor until + * something invalidated it, and there is no natural invalidation point. + * + * @var array>|null + * @since 2.12.7 + */ + private static $editing_user_ids = null; + /** * Constructor * @@ -307,7 +327,12 @@ private function get_forms_sorted_by_metric( $args, $orderby, $order, $page, $pe */ $limit = Helper::get_integer_value( apply_filters( 'srfm_forms_metric_sort_limit', 500 ) ); - if ( $limit > 0 && count( $id_query->posts ) > $limit ) { + // A filter is allowed to tighten or loosen the ceiling, not to remove it. Zero + // or negative read as "no ceiling" to a `> $limit` test, which is the one + // outcome the ceiling exists to prevent, so fall back to the default. + $limit = $limit > 0 ? $limit : 500; + + if ( count( $id_query->posts ) > $limit ) { /** * Fires when the metric sort is skipped because the site has too many forms. * @@ -348,20 +373,12 @@ static function ( $post ) { foreach ( $id_query->posts as $post_id ) { $form_id = Helper::get_integer_value( $post_id ); - // Same three arguments the render path passes. Calling this with only the - // form ID left $post_date_gmt empty, so strtotime() returned false, the - // "form is younger than the window" shortcut could never be taken, and the - // windowed COUNT ran for every row — both a second query per form and, for - // any entry whose created_at predates the form's post_date (an import, a - // migration, a restored backup), a different number than the column shows. - // The comment below promises order and display can never disagree; passing - // different arguments here is what made them disagree. - $post = get_post( $form_id ); - $metrics = $this->calculate_form_metrics( - $form_id, - $post->post_date_gmt ?? '', - Helper::get_integer_value( Entries::get_total_entries_by_status( 'all', $form_id ) ) - ); + // The form id is the whole input, here and on the render path, so the two + // cannot be handed different arguments and compute different numbers. + // They once could: this took a creation date and an all-time count as + // well, the two callers passed them differently, and the column and its + // sort order disagreed. + $metrics = $this->calculate_form_metrics( $form_id ); // Same helper the column renders from, so the order always matches the // numbers on screen. An unmeasurable rate sorts as -1 rather than 0, so @@ -443,6 +460,144 @@ private static function window_boundary_sql( $window_start ) { return gmdate( 'Y-m-d H:i:s', $window_start + $offset_seconds ); } + /** + * Ids of the in-window submitters who can edit the site, cached for the request. + * + * Bounded by submitters, not by users. Asking the user table for everyone with + * `edit_posts` runs an unindexable leading-wildcard scan of capability meta with + * no LIMIT, and the answer is then interpolated into one windowed COUNT per form, + * up to the ceiling in get_forms_sorted_by_metric(). On a membership site that + * hands `contributor` to every member that is a five-figure placeholder list + * rebuilt for every row of a ten-row page. Only people who actually submitted + * inside the window can affect the rate, and that set is small. + * + * Served by `idx_user_id_created_at (user_id, created_at)`, added for this + * lookup. `idx_user_id` alone cannot: `created_at` is not in it and no other + * index leads on `created_at`, so before that index this was a range scan with + * a row read per row plus a temp table for the DISTINCT -- on a site with years + * of logged-in submissions, every entry ever recorded, to return a short list. + * The LIMIT bounds what comes back, not what is read; the index bounds the + * read. + * + * Decided with `user_can()`, the same call Form_Views::should_track() makes, so + * both halves of the rate answer one question rather than two similar ones. A + * capability granted at runtime through `user_has_cap`, a multisite super admin + * who is not a member of the subsite, and a role carrying `edit_posts` as an + * explicit denial all resolve the same way on both sides. + * + * Reflects capability as it stands now, not as it stood at submission time. On a + * site that promotes or demotes people the two halves still drift: a promoted + * subscriber's earlier views stay in the denominator while their earlier entries + * leave the numerator, and a demoted editor's earlier entries return without + * their views. Closing that means stamping the decision on the entry at submit + * time, which is a schema change this percentage does not justify. + * + * Cached because the forms listing asks once per row, and the answer cannot + * change within a request. + * + * @param int $window_start Unix timestamp the view window opened at. + * @since 2.12.7 + * @return array + */ + private static function get_editing_submitter_ids( $window_start ) { + $blog_id = get_current_blog_id(); + + if ( null === self::$editing_user_ids ) { + self::$editing_user_ids = []; + } + + if ( isset( self::$editing_user_ids[ $blog_id ] ) ) { + return self::$editing_user_ids[ $blog_id ]; + } + + /** + * Largest number of distinct in-window submitters to test for edit access. + * + * The test is bounded work per submitter, so this is a guard against a site + * where a very large share of submissions are made while logged in. Past the + * ceiling the exclusion is skipped rather than truncated: a partial exclusion + * list reports a rate that is wrong in a way nobody can see, where no + * exclusion at least reproduces the pre-existing behaviour. + * + * Two things to know before raising or lowering it. The count is of + * distinct submitters across all forms since tracking was first enabled, + * and that window never resets -- so a membership site, a store or an LMS + * reaches 500 in ordinary operation, and once passed it stays passed, with + * the rate quietly counting editor submissions again. That is why the + * settings copy says those are "normally" left out rather than promising it + * outright. And the query does not filter on status, so a user whose only + * in-window entries were trashed still lands on the list and consumes + * budget -- harmless for the count, but it brings the ceiling closer. + * + * @param int $limit Maximum submitters to test. Default 500. + * @since 2.12.7 + */ + $limit = Helper::get_integer_value( apply_filters( 'srfm_forms_metric_submitter_limit', 500 ) ); + + // Same reasoning as the sort ceiling: a filter may move it, not remove it. + $limit = $limit > 0 ? $limit : 500; + + // One row past the ceiling, so a full page is proof the ceiling was passed + // without counting the rest of the table to find out. + $rows = Entries::get_instance()->get_results( + [ + [ + [ + 'key' => 'created_at', + 'compare' => '>=', + 'value' => self::window_boundary_sql( $window_start ), + ], + [ + 'key' => 'user_id', + 'compare' => '>', + 'value' => 0, + ], + ], + ], + 'DISTINCT user_id', + [ sprintf( 'LIMIT %d', $limit + 1 ) ] + ); + + $submitters = array_values( array_unique( array_map( 'absint', array_column( $rows, 'user_id' ) ) ) ); + + if ( count( $submitters ) > $limit ) { + /** + * Fires when the editor exclusion is skipped because too many submitters + * would have to be tested. + * + * Announced rather than skipped silently, for the same reason as + * `srfm_forms_metric_sort_skipped`: a rate that quietly stops excluding + * editors reads as a wrong number, not as a deliberate ceiling. + * + * @param int $count Number of distinct submitters found, capped at $limit + 1. + * @param int $limit The ceiling in force. + * @since 2.12.7 + */ + do_action( 'srfm_forms_metric_submitter_limit_exceeded', count( $submitters ), $limit ); + + self::$editing_user_ids[ $blog_id ] = []; + + return self::$editing_user_ids[ $blog_id ]; + } + + if ( [] !== $submitters ) { + // Two queries for the whole set. Without it user_can() resolves each user + // on its own and the loop becomes one query per submitter. + cache_users( $submitters ); + } + + self::$editing_user_ids[ $blog_id ] = array_values( + array_filter( + $submitters, + static function ( $user_id ) { + return user_can( $user_id, 'edit_posts' ); + } + ) + ); + + return self::$editing_user_ids[ $blog_id ]; + } + /** * Views and conversion rate for one form. * @@ -452,20 +607,28 @@ private static function window_boundary_sql( $window_start ) { * rendering a dash sorted as though its rate were several hundred percent. * Anything needing these numbers must come through here. * + * Both halves apply the same test. Views are not counted for anyone who can + * edit the site (Form_Views::should_track()), so their submissions must not be + * counted either: testing your own form five times would otherwise add five to + * the numerator and nothing to the denominator, and report a rate several times + * the real one. The test is applied to capability as it stands now on both + * sides, so a site that promotes or demotes people still sees some drift -- + * get_editing_submitter_ids() has the detail. The Entries column is unaffected + * and stays a true all-time count of every entry received. + * * Returns `null` for the rate rather than a number whenever it cannot be - * measured — tracking off, window never opened, no views yet, or more entries - * than views. That last case is not possible in reality (every entry needs a - * view first), so it means the view count is incomplete and any percentage - * would be invented; the table renders the dash instead. `0.0` is reserved for - * a real measurement of zero. + * measured: tracking off, window never opened, no views yet, or more entries + * than views. That last case means the view count is incomplete, or that a + * submitter was promoted after submitting, and any percentage would be invented; + * the table renders the dash instead. `0.0` is reserved for a real measurement + * of zero. * - * @param int $form_id Form post ID. - * @param string $post_date_gmt Form creation date, GMT. Used to skip a redundant count. - * @param int $entries_all_time All-time entry count, when the caller already has it. + * @param int $form_id Form post ID. * @return array{views:int,conversion_rate:float|null} + * @since 2.12.7 -- Signature reduced to $form_id. * @since 2.12.6 */ - private function calculate_form_metrics( $form_id, $post_date_gmt = '', $entries_all_time = null ) { + private function calculate_form_metrics( $form_id ) { $none = [ 'views' => 0, 'conversion_rate' => null, @@ -491,33 +654,39 @@ private function calculate_form_metrics( $form_id, $post_date_gmt = '', $entries // Compare like with like. The Entries column is all-time, but views only start // accruing when tracking opens, so the rate counts entries from that same - // moment — otherwise a form that existed beforehand divides years of entries by - // days of views and reports a rate that is pure noise. - $form_created = strtotime( (string) $post_date_gmt ); - - if ( null !== $entries_all_time && $form_created && $form_created >= $window_start ) { - // The form is younger than the window, so every entry it has is already - // inside the window and the caller's all-time count is the same number. - // Skips a second COUNT per row on the listing. - $entries_since = Helper::get_integer_value( $entries_all_time ); - } else { - $entries_since = Helper::get_integer_value( - Entries::get_total_entries_by_status( - 'all', - $form_id, - [ - [ - [ - 'key' => 'created_at', - 'compare' => '>=', - 'value' => self::window_boundary_sql( $window_start ), - ], - ], - ] - ) - ); + // moment. Otherwise a form that existed beforehand divides years of entries + // by days of views and reports a rate that is pure noise. + $where = [ + [ + [ + 'key' => 'created_at', + 'compare' => '>=', + 'value' => self::window_boundary_sql( $window_start ), + ], + ], + ]; + + $editing_users = self::get_editing_submitter_ids( $window_start ); + + if ( [] !== $editing_users ) { + $where[] = [ + [ + 'key' => 'user_id', + 'compare' => 'NOT IN', + 'value' => $editing_users, + ], + ]; } + // Always counted, never taken from the caller's all-time total. That total + // includes the entries this exclusion exists to drop, so reusing it for a + // form created inside the window -- the newly built form an admin has just + // been testing, which is exactly the case that skews -- would hand back the + // unfiltered number and quietly undo the exclusion. + $entries_since = Helper::get_integer_value( + Entries::get_total_entries_by_status( 'all', $form_id, $where ) + ); + if ( $entries_since > $views ) { return [ 'views' => $views, @@ -546,7 +715,7 @@ private function prepare_form_for_listing( $post ) { // Views and conversion rate come from the same helper the sort path uses, so the // column can never order by a different number than it displays. - $metrics = $this->calculate_form_metrics( $form_id, $post->post_date_gmt, $entries_count ); + $metrics = $this->calculate_form_metrics( $form_id ); $views = $metrics['views']; $conversion_rate = $metrics['conversion_rate']; diff --git a/inc/frontend-assets.php b/inc/frontend-assets.php index 481eb629a..682ff74c0 100644 --- a/inc/frontend-assets.php +++ b/inc/frontend-assets.php @@ -548,6 +548,8 @@ public function page_template( $template ) { return $template; } + self::reset_printed_assets(); + $file_name = 'single-form.php'; $template = locate_template( $file_name ); @@ -559,4 +561,42 @@ public function page_template( $template ) { return apply_filters( 'srfm_form_template', $template ? $template : SRFM_DIR . '/templates/' . $file_name ); } + /** + * Let the Instant Form template print assets a discarded render already claimed. + * + * `page_template()` runs on `template_include` at PHP_INT_MAX and returns the + * Instant Form template regardless of what earlier filters returned. A page + * builder that renders the whole page inside its own `template_include` + * filter has therefore already run `wp_head()` and `wp_footer()` into an + * output buffer that is about to be thrown away. + * + * The buffer goes, but `WP_Styles::$done` and `WP_Scripts::$done` still hold + * every handle it claimed, so `do_items()` skips them when `single-form.php` + * calls `wp_head()` and `wp_footer()` for real. The form arrives with no + * stylesheets, and -- because `srfm-form-submit` is registered for the footer + * -- no submit handler either. + * + * Clearing both `done` lists wholesale is the right scope rather than an + * over-broad one: only the render that begins after this filter returns + * reaches the browser, so nothing recorded before it was ever delivered. The + * handles are re-enqueued by the second `wp_enqueue_scripts` pass, so they + * print normally once `done` stops shadowing them. + * + * Guarded on `wp_head` having already fired, so this is inert on the ordinary + * path where no builder rendered first and nothing has been printed yet. + * + * @since 2.12.7 + * @return void + */ + private static function reset_printed_assets() { + // No earlier wp_head() means no discarded render, so there is nothing to + // forget. Deny is the fallthrough: act only on the state this repairs. + if ( ! did_action( 'wp_head' ) ) { + return; + } + + wp_styles()->done = []; + wp_scripts()->done = []; + } + } diff --git a/inc/generate-form-markup.php b/inc/generate-form-markup.php index 32fa8aac2..87d4592a5 100644 --- a/inc/generate-form-markup.php +++ b/inc/generate-form-markup.php @@ -1483,7 +1483,7 @@ public static function render_edit_form_button( $form_id ) { ?>
- + diff --git a/inc/helper.php b/inc/helper.php index 06e75073e..3c22319ec 100644 --- a/inc/helper.php +++ b/inc/helper.php @@ -2218,51 +2218,44 @@ public static function get_block_name_from_field( $field_name ) { * the scripts a form depends on. This is what surfaces that to the site owner * before it turns into "my form stopped working". * - * Detection is by plugin path, mirroring is_any_smtp_plugin_active(), including - * the multisite network-active merge. - * * @since 2.12.6 * @return string Human-readable plugin name, or '' when none is active. */ public static function get_active_caching_plugin() { - $caching_plugins = [ - 'litespeed-cache/litespeed-cache.php' => 'LiteSpeed Cache', - 'wp-rocket/wp-rocket.php' => 'WP Rocket', - 'w3-total-cache/w3-total-cache.php' => 'W3 Total Cache', - 'wp-super-cache/wp-cache.php' => 'WP Super Cache', - 'wp-fastest-cache/wpFastestCache.php' => 'WP Fastest Cache', - 'autoptimize/autoptimize.php' => 'Autoptimize', - 'sg-cachepress/sg-cachepress.php' => 'SiteGround Optimizer', - 'wp-optimize/wp-optimize.php' => 'WP-Optimize', - 'cache-enabler/cache-enabler.php' => 'Cache Enabler', - 'comet-cache/comet-cache.php' => 'Comet Cache', - 'hummingbird-performance/wp-hummingbird.php' => 'Hummingbird', - 'breeze/breeze.php' => 'Breeze', - 'nitropack/main.php' => 'NitroPack', - 'swift-performance-lite/performance.php' => 'Swift Performance Lite', - 'wp-cloudflare-page-cache/wp-cloudflare-page-cache.php' => 'Super Page Cache', - 'flying-press/flying-press.php' => 'FlyingPress', - 'redis-cache/redis-cache.php' => 'Redis Object Cache', - 'powered-cache/powered-cache.php' => 'Powered Cache', - 'docket-cache/docket-cache.php' => 'Docket Cache', - 'seraphinite-accelerator/plugin_root.php' => 'Seraphinite Accelerator', - ]; + $entry = self::get_active_caching_plugin_entry(); - $active_plugins = (array) get_option( 'active_plugins', [] ); - - // For multisite, merge sitewide active plugins. - if ( is_multisite() ) { - $network_plugins = (array) get_site_option( 'active_sitewide_plugins', [] ); - $active_plugins = array_merge( $active_plugins, array_keys( $network_plugins ) ); - } + return null === $entry ? '' : $entry[0]; + } - foreach ( $caching_plugins as $path => $name ) { - if ( in_array( $path, $active_plugins, true ) ) { - return $name; - } - } + /** + * Setup guide for the active caching plugin. + * + * Six of the recognised plugins have a guide of their own; the rest, and any + * site with none detected, get the general one. Sending someone to a page that + * names the plugin they actually run is the difference between advice they can + * follow and advice they have to translate. + * + * Falls back to the general guide rather than returning nothing, so the notice + * always has somewhere to send them. + * + * @since 2.12.7 + * @return string Absolute documentation URL. + */ + public static function get_caching_plugin_doc_url() { + $entry = self::get_active_caching_plugin_entry(); + $slug = null === $entry || '' === $entry[1] ? 'how-to-set-up-sureforms-with-caching-plugins' : $entry[1]; - return ''; + // Through the central builder rather than hardcoding the domain, so the + // link carries the same UTM attribution as every other doc link and a + // domain change is one edit. utm_content is the slug, so the notice can be + // told which guide people actually open. + return self::get_sureforms_website_url( + 'docs/' . $slug . '/', + [ + 'utm_medium' => 'form_checks_notice', + 'utm_content' => $slug, + ] + ); } /** @@ -2796,4 +2789,77 @@ private static function get_geo_failure_ttl() { return self::get_integer_value( apply_filters( 'srfm_geo_failure_ttl', 5 * MINUTE_IN_SECONDS ) ); } + /** + * Caching plugins SureForms recognises, and the guide for each. + * + * `path => [ display name, doc slug ]`. An empty slug means there is no + * plugin-specific guide and the general one applies. Name and slug live in one + * array on purpose: keyed separately they drift, and a doc link that silently + * degrades to the generic page is the kind of regression nobody reports. + * + * Order is precedence: the first active plugin in this list wins. The six with + * their own guide are listed first on purpose, so a site running two caching + * plugins is pointed at the specific guide rather than whichever plugin the + * old alphabetical order happened to reach first. That flips the winner on a + * few pairs -- WP Fastest Cache over WP Super Cache, SiteGround Optimizer and + * Autoptimize over their partners -- and in each case the new winner is the + * one that has something to say. Reordering this array changes which guide a + * two-plugin site sees. + * + * @since 2.12.7 + * @return array + */ + private static function get_known_caching_plugins() { + return [ + 'litespeed-cache/litespeed-cache.php' => [ 'LiteSpeed Cache', 'how-to-set-up-sureforms-with-litespeed-cache' ], + 'wp-rocket/wp-rocket.php' => [ 'WP Rocket', 'how-to-set-up-sureforms-with-wp-rocket' ], + 'w3-total-cache/w3-total-cache.php' => [ 'W3 Total Cache', 'how-to-set-up-sureforms-with-w3-total-cache' ], + 'wp-fastest-cache/wpFastestCache.php' => [ 'WP Fastest Cache', 'how-to-set-up-sureforms-with-wp-fastest-cache' ], + 'sg-cachepress/sg-cachepress.php' => [ 'SiteGround Optimizer', 'how-to-set-up-sureforms-with-siteground-optimizer' ], + 'autoptimize/autoptimize.php' => [ 'Autoptimize', 'how-to-set-up-sureforms-with-autoptimize' ], + 'wp-super-cache/wp-cache.php' => [ 'WP Super Cache', '' ], + 'wp-optimize/wp-optimize.php' => [ 'WP-Optimize', '' ], + 'cache-enabler/cache-enabler.php' => [ 'Cache Enabler', '' ], + 'comet-cache/comet-cache.php' => [ 'Comet Cache', '' ], + 'hummingbird-performance/wp-hummingbird.php' => [ 'Hummingbird', '' ], + 'breeze/breeze.php' => [ 'Breeze', '' ], + 'nitropack/main.php' => [ 'NitroPack', '' ], + 'swift-performance-lite/performance.php' => [ 'Swift Performance Lite', '' ], + 'wp-cloudflare-page-cache/wp-cloudflare-page-cache.php' => [ 'Super Page Cache', '' ], + 'flying-press/flying-press.php' => [ 'FlyingPress', '' ], + 'redis-cache/redis-cache.php' => [ 'Redis Object Cache', '' ], + 'powered-cache/powered-cache.php' => [ 'Powered Cache', '' ], + 'docket-cache/docket-cache.php' => [ 'Docket Cache', '' ], + 'seraphinite-accelerator/plugin_root.php' => [ 'Seraphinite Accelerator', '' ], + ]; + } + + /** + * The active caching plugin's entry, if there is one. + * + * Detection is by plugin path, mirroring is_any_smtp_plugin_active(), including + * the multisite network-active merge. First match in + * get_known_caching_plugins() wins; that array's order is the precedence. + * + * @since 2.12.7 + * @return array{0:string,1:string}|null Name and doc slug, or null when none is active. + */ + private static function get_active_caching_plugin_entry() { + $active_plugins = (array) get_option( 'active_plugins', [] ); + + // For multisite, merge sitewide active plugins. + if ( is_multisite() ) { + $network_plugins = (array) get_site_option( 'active_sitewide_plugins', [] ); + $active_plugins = array_merge( $active_plugins, array_keys( $network_plugins ) ); + } + + foreach ( self::get_known_caching_plugins() as $path => $entry ) { + if ( in_array( $path, $active_plugins, true ) ) { + return $entry; + } + } + + return null; + } + } diff --git a/languages/sureforms-de_DE-51635fe6489fc8288d603fe596c755ca.json b/languages/sureforms-de_DE-51635fe6489fc8288d603fe596c755ca.json index cc1c8e3dd..912e97d69 100644 --- a/languages/sureforms-de_DE-51635fe6489fc8288d603fe596c755ca.json +++ b/languages/sureforms-de_DE-51635fe6489fc8288d603fe596c755ca.json @@ -1 +1 @@ -{"translation-revision-date":"2024-12-13T16:14:52+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Armaturenbrett"],"Settings":["Einstellungen"],"Entries":["Eintr\u00e4ge"],"Status":["Status"],"Form":["Formular"],"Activated":["Aktiviert"],"Activate":["Aktivieren"],"Address":["Adresse"],"Checkbox":["Kontrollk\u00e4stchen"],"Dropdown":["Dropdown-Men\u00fc"],"Email":["E-Mail"],"Number":["Zahl"],"Phone":["Telefon"],"Textarea":["Textbereich"],"Monday":["Montag"],"Forms":["Formulare"],"New Form Submission - %s":["Neue Formulareinreichung - %s"],"GitHub":["GitHub"],"(no title)":["(kein Titel)"],"General":["Allgemein"],"No tags available":["Keine Tags verf\u00fcgbar"],"Back":["Zur\u00fcck"],"Generic tags":["Allgemeine Tags"],"Other":["Andere"],"Confirm":["Best\u00e4tigen"],"Cancel":["Abbrechen"],"Install":["Installieren"],"Plugin Installation failed, Please try again later.":["Plugin-Installation fehlgeschlagen, bitte versuchen Sie es sp\u00e4ter erneut."],"Plugin activation failed, Please try again later.":["Plugin-Aktivierung fehlgeschlagen, bitte versuchen Sie es sp\u00e4ter erneut."],"Integrations":["Integrationen"],"What's New?":["Was gibt's Neues?"],"Core":["Kern"],"Unlicensed":["Ohne Lizenz"],"Connecting\u2026":["Verbinden\u2026"],"Install & Activate":["Installieren & Aktivieren"],"Compliance Settings":["Compliance-Einstellungen"],"Enable GDPR Compliance":["Aktivieren Sie die DSGVO-Konformit\u00e4t"],"Never store entry data after form submission":["Speichern Sie niemals Eingabedaten nach dem Absenden des Formulars"],"When enabled this form will never store Entries.":["Wenn aktiviert, speichert dieses Formular niemals Eintr\u00e4ge."],"Automatically delete entries":["Eintr\u00e4ge automatisch l\u00f6schen"],"When enabled this form will automatically delete entries after a certain period of time.":["Wenn aktiviert, wird dieses Formular Eintr\u00e4ge nach einer bestimmten Zeitspanne automatisch l\u00f6schen."],"Entries older than the days set will be deleted automatically.":["Eintr\u00e4ge, die \u00e4lter sind als die festgelegten Tage, werden automatisch gel\u00f6scht."],"Visual":["Visuell"],"HTML":["HTML"],"All Data":["Alle Daten"],"Add Shortcode":["Shortcode hinzuf\u00fcgen"],"Form input tags":["Formulareingabetags"],"Comma separated values are also accepted.":["Kommagetrennte Werte werden ebenfalls akzeptiert."],"Email Notification":["E-Mail-Benachrichtigung"],"Name":["Name"],"Send Email To":["E-Mail senden an"],"Subject":["Betreff"],"CC":["CC"],"BCC":["BCC"],"Reply To":["Antworten an"],"Add Key":["Schl\u00fcssel hinzuf\u00fcgen"],"Add Value":["Wert hinzuf\u00fcgen"],"Add":["Hinzuf\u00fcgen"],"Confirmation Message":["Best\u00e4tigungsnachricht"],"After Form Submission":["Nach dem Absenden des Formulars"],"Hide Form":["Formular ausblenden"],"Reset Form":["Formular zur\u00fccksetzen"],"Custom URL":["Benutzerdefinierte URL"],"Add Query Parameters":["Abfrageparameter hinzuf\u00fcgen"],"Select if you want to add key-value pairs for form fields to include in query parameters":["W\u00e4hlen Sie, ob Sie Schl\u00fcssel-Wert-Paare f\u00fcr Formularfelder hinzuf\u00fcgen m\u00f6chten, die in Abfrageparametern enthalten sein sollen"],"Query Parameters":["Abfrageparameter"],"Success Message":["Erfolgsmeldung"],"Redirect":["Weiterleiten"],"Redirect to":["Weiterleiten zu"],"Page":["Seite"],"Form Confirmation":["Formularbest\u00e4tigung"],"Confirmation Type":["Best\u00e4tigungstyp"],"Clear":["Klar"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Unsichtbar"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Validierungen"],"Spam Protection":["Spam-Schutz"],"Email Summaries":["E-Mail-Zusammenfassungen"],"Tuesday":["Dienstag"],"Wednesday":["Mittwoch"],"Thursday":["Donnerstag"],"Friday":["Freitag"],"Saturday":["Samstag"],"Sunday":["Sonntag"],"Test Email":["Test-E-Mail"],"Schedule Reports":["Berichte planen"],"IP Logging":["IP-Protokollierung"],"If this option is turned on, the user's IP address will be saved with the form data":["Wenn diese Option aktiviert ist, wird die IP-Adresse des Benutzers zusammen mit den Formulardaten gespeichert."],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s repr\u00e4sentiert die minimal erforderlichen Auswahlen. Zum Beispiel: \u201eMindestens 2 Auswahlen sind erforderlich.\u201c"],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s repr\u00e4sentiert die maximal erlaubten Auswahlen. Zum Beispiel: \u201eMaximal 4 Auswahlen sind erlaubt.\u201c"],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s repr\u00e4sentiert die minimal erforderlichen Auswahlm\u00f6glichkeiten. Zum Beispiel: \u201eMindestens 1 Auswahl ist erforderlich.\u201c"],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s repr\u00e4sentiert die maximal erlaubten Auswahlm\u00f6glichkeiten. Zum Beispiel: \u201eMaximal 3 Auswahlen sind erlaubt.\u201c"]," Error Message":["Fehlermeldung"],"Auto":["Auto"],"Light":["Licht"],"Dark":["Dunkel"],"Turnstile":["Drehkreuz"],"Honeypot":["Honigtopf"],"Get Keys":["Schl\u00fcssel holen"],"Documentation":["Dokumentation"],"Site Key":["Standortschl\u00fcssel"],"Secret Key":["Geheimer Schl\u00fcssel"],"Cloudflare Turnstile":["Cloudflare-Drehkreuz"],"Appearance Mode":["Erscheinungsmodus"],"Enable Honeypot Security":["Honeypot-Sicherheit aktivieren"],"Enable Honeypot Security for better spam protection":["Aktivieren Sie Honeypot-Sicherheit f\u00fcr besseren Spamschutz"],"Text":["Text"],"Confirmation Email Mismatch Message":["Best\u00e4tigungs-E-Mail-Unstimmigkeitsnachricht"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s repr\u00e4sentiert den minimalen Eingabewert. Zum Beispiel: \"Der Mindestwert ist 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s repr\u00e4sentiert den maximalen Eingabewert. Zum Beispiel: \"Der Maximalwert ist 100.\""],"OttoKit":["OttoKit"],"Connect with OttoKit":["Mit OttoKit verbinden"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Die aktuelle 'Von-E-Mail'-Adresse stimmt nicht mit Ihrem Website-Domainnamen (%1$s) \u00fcberein. Dies kann dazu f\u00fchren, dass Ihre Benachrichtigungs-E-Mails blockiert oder als Spam markiert werden. Alternativ versuchen Sie, eine Von-Adresse zu verwenden, die mit Ihrem Website-Domainnamen \u00fcbereinstimmt (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Die aktuelle 'Von-E-Mail'-Adresse stimmt nicht mit Ihrem Website-Domainnamen (%s) \u00fcberein. Dies kann dazu f\u00fchren, dass Ihre Benachrichtigungs-E-Mails blockiert oder als Spam markiert werden."],"We strongly recommend that you install the free ":["Wir empfehlen Ihnen dringend, die kostenlose"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["Plugin! Der Einrichtungsassistent macht es einfach, Ihre E-Mails zu reparieren."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Alternativ k\u00f6nnen Sie versuchen, eine Absenderadresse zu verwenden, die mit Ihrer Website-Domain \u00fcbereinstimmt (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Bitte geben Sie eine g\u00fcltige E-Mail-Adresse ein. Ihre Benachrichtigungen werden nicht gesendet, wenn das Feld nicht korrekt ausgef\u00fcllt ist."],"From Name":["Von Name"],"From Email":["Von E-Mail"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Die aktuelle 'Von-E-Mail'-Adresse stimmt m\u00f6glicherweise nicht mit Ihrem Website-Domainnamen (%1$s) \u00fcberein. Dies kann dazu f\u00fchren, dass Ihre Benachrichtigungs-E-Mails blockiert oder als Spam markiert werden. Alternativ versuchen Sie, eine Von-Adresse zu verwenden, die mit Ihrem Website-Domainnamen \u00fcbereinstimmt (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Die aktuelle 'Von-E-Mail'-Adresse stimmt m\u00f6glicherweise nicht mit Ihrem Website-Domainnamen (%s) \u00fcberein. Dies kann dazu f\u00fchren, dass Ihre Benachrichtigungs-E-Mails blockiert oder als Spam markiert werden."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Bereit, \u00fcber den kostenlosen Plan hinauszugehen?"],"Upgrade now":["Jetzt upgraden"],"and unlock the full power of SureForms!":["und die volle Kraft von SureForms freischalten!"],"Upgrade SureForms":["SureForms aktualisieren"],"Upgrade Now":["Jetzt upgraden"],"Entries older than the selected days will be deleted.":["Eintr\u00e4ge, die \u00e4lter als die ausgew\u00e4hlten Tage sind, werden gel\u00f6scht."],"Entries Time Period":["Eintr\u00e4ge Zeitraum"],"Notifications can use only one From Email so please enter a single address.":["Benachrichtigungen k\u00f6nnen nur eine Absender-E-Mail verwenden, daher geben Sie bitte eine einzelne Adresse ein."],"Select Page to redirect":["Seite zum Weiterleiten ausw\u00e4hlen"],"Search for a page":["Suche nach einer Seite"],"Select a page":["W\u00e4hlen Sie eine Seite aus"],"Form Validation":["Formularvalidierung"],"Required Error Messages":["Erforderliche Fehlermeldungen"],"Other Error Messages":["Andere Fehlermeldungen"],"Input Field Unique":["Eingabefeld eindeutig"],"Email Field Unique":["E-Mail-Feld eindeutig"],"Invalid URL":["Ung\u00fcltige URL"],"Phone Field Unique":["Telefonfeld eindeutig"],"Invalid Field Number Block":["Ung\u00fcltiger Feldnummernblock"],"Invalid Email":["Ung\u00fcltige E-Mail"],"Number Minimum Value":["Zahlen-Mindestwert"],"Number Maximum Value":["Zahlen Maximalwert"],"Dropdown Minimum Selections":["Dropdown Minimale Auswahlen"],"Dropdown Maximum Selections":["Dropdown Maximale Auswahlen"],"Multiple Choice Minimum Selections":["Mehrfachauswahl Mindestanzahl der Auswahlen"],"Multiple Choice Maximum Selections":["Mehrfachauswahl Maximale Auswahlm\u00f6glichkeiten"],"Input Field":["Eingabefeld"],"Email Field":["E-Mail-Feld"],"URL Field":["URL-Feld"],"Phone Field":["Telefonfeld"],"Textarea Field":["Textbereichsfeld"],"Checkbox Field":["Kontrollk\u00e4stchenfeld"],"Dropdown Field":["Dropdown-Feld"],"Multiple Choice Field":["Mehrfachauswahlfeld"],"Address Field":["Adressfeld"],"Number Field":["Zahlenfeld"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Um die reCAPTCHA-Funktion in Ihren SureForms zu aktivieren, aktivieren Sie bitte die reCAPTCHA-Option in Ihren Blockeinstellungen und w\u00e4hlen Sie die Version aus. F\u00fcgen Sie hier den Google reCAPTCHA Secret und den Site Key hinzu. reCAPTCHA wird auf der Vorderseite Ihrer Seite hinzugef\u00fcgt."],"Enter your %s here":["Geben Sie hier Ihr %s ein"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Um hCAPTCHA zu aktivieren, f\u00fcgen Sie bitte Ihren Site-Schl\u00fcssel und Geheimschl\u00fcssel hinzu. Konfigurieren Sie diese Einstellungen innerhalb des einzelnen Formulars."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Um Cloudflare Turnstile zu aktivieren, f\u00fcgen Sie bitte Ihren Site-Schl\u00fcssel und Geheimschl\u00fcssel hinzu. Konfigurieren Sie diese Einstellungen innerhalb des einzelnen Formulars."],"Save":["Speichern"],"Anonymous Analytics":["Anonyme Analysen"],"Learn More":["Mehr erfahren"],"Admin Notification":["Administratorbenachrichtigung"],"Enable Admin Notification":["Admin-Benachrichtigung aktivieren"],"Admin notifications keep you informed about new form entries since your last visit.":["Admin-Benachrichtigungen halten Sie \u00fcber neue Formulareintr\u00e4ge seit Ihrem letzten Besuch auf dem Laufenden."],"Skip":["\u00dcberspringen"],"Continue":["Fortfahren"],"Maximum Number of Entries":["Maximale Anzahl von Eintr\u00e4gen"],"Maximum Entries":["Maximale Eintr\u00e4ge"],"Response Description After Maximum Entries":["Antwortbeschreibung nach maximalen Eintr\u00e4gen"],"Get Started":["Loslegen"],"Integration":["Integration"],"Connect Native Integrations with SureForms":["Native Integrationen mit SureForms verbinden"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Schalten Sie leistungsstarke Integrationen im Premium-Plan frei, um Ihre Arbeitsabl\u00e4ufe zu automatisieren und SureForms direkt mit Ihren Lieblingstools zu verbinden."],"Send form submissions straight to CRMs, email, and marketing platforms":["Senden Sie Formulareinsendungen direkt an CRMs, E-Mail- und Marketingplattformen"],"Automate repetitive tasks with seamless data syncing":["Automatisieren Sie repetitive Aufgaben mit nahtloser Datensynchronisierung"],"Access exclusive native integrations for faster workflows":["Zugriff auf exklusive native Integrationen f\u00fcr schnellere Arbeitsabl\u00e4ufe"],"Expected format for emails - email@sureforms.com or John Doe ":["Erwartetes Format f\u00fcr E-Mails - email@sureforms.com oder John Doe "],"Payments":["Zahlungen"],"Stripe account disconnected successfully.":["Stripe-Konto erfolgreich getrennt."],"Failed to create webhook.":["Fehler beim Erstellen des Webhooks."],"Failed to connect to Stripe.":["Verbindung zu Stripe fehlgeschlagen."],"Webhook":["Webhook"],"Knowledge Base":["Wissensdatenbank"],"What\u2019s New":["Was gibt's Neues"],"out of":["aus"],"No entries found":["Keine Eintr\u00e4ge gefunden"],"delete":["l\u00f6schen"],"Please type \"%s\" in the input box":["Bitte geben Sie \"%s\" in das Eingabefeld ein"],"To confirm, type \"%s\" in the box below:":["Um zu best\u00e4tigen, geben Sie \"%s\" in das Feld unten ein:"],"Type \"%s\"":["Geben Sie \"%s\" ein"],"Go to OttoKit Settings":["Gehe zu den OttoKit-Einstellungen"],"USD - US Dollar":["USD - US-Dollar"],"Payment Mode":["Zahlungsart"],"Test Mode":["Testmodus"],"Live Mode":["Live-Modus"],"Action":["Aktion"],"General Settings":["Allgemeine Einstellungen"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Richten Sie E-Mail-Zusammenfassungen, Admin-Benachrichtigungen und Datenpr\u00e4ferenzen ein, um Ihre Formulare m\u00fchelos zu verwalten."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Passen Sie die Standardfehlermeldungen an, die angezeigt werden, wenn Benutzer ung\u00fcltige oder unvollst\u00e4ndige Formulareintr\u00e4ge \u00fcbermitteln."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Aktivieren Sie den Spam-Schutz f\u00fcr Ihre Formulare mithilfe von CAPTCHA-Diensten oder Honeypot-Sicherheit."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Verbinden und verwalten Sie Ihre Zahlungsgateways, um Transaktionen sicher \u00fcber Ihre Formulare zu akzeptieren."],"1% transaction and payment gateway fees apply.":["1% Transaktions- und Zahlungsgateway-Geb\u00fchren fallen an."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["2,9 % Transaktions- und Zahlungsgateway-Geb\u00fchren fallen an. Aktivieren Sie die Lizenz, um die Transaktionsgeb\u00fchren zu reduzieren."],"2.9% transaction and payment gateway fees apply.":["Es fallen 2,9 % Transaktions- und Zahlungs-Gateway-Geb\u00fchren an."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Bitte besuchen Sie %1$s, l\u00f6schen Sie einen ungenutzten Webhook und klicken Sie dann unten, um es erneut zu versuchen."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms konnte keinen Webhook erstellen, da Ihr Stripe-Konto keine freien Slots mehr hat. Webhooks sind erforderlich, um Updates zu Zahlungen zu erhalten."],"Stripe Dashboard":["Stripe-Dashboard"],"Creating\u2026":["Erstellen\u2026"],"Create Webhook":["Webhook erstellen"],"Successfully connected to Stripe!":["Erfolgreich mit Stripe verbunden!"],"Invalid response from server. Please try again.":["Ung\u00fcltige Antwort vom Server. Bitte versuchen Sie es erneut."],"Failed to disconnect Stripe account.":["Trennen des Stripe-Kontos fehlgeschlagen."],"Webhook created successfully!":["Webhook erfolgreich erstellt!"],"Select Currency":["W\u00e4hrung ausw\u00e4hlen"],"Select the default currency for payment forms.":["W\u00e4hlen Sie die Standardw\u00e4hrung f\u00fcr Zahlungsformulare aus."],"Connection Status":["Verbindungsstatus"],"Disconnect Stripe Account":["Stripe-Konto trennen"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["Sind Sie sicher, dass Sie Ihr Stripe-Konto trennen m\u00f6chten? Dadurch werden alle aktiven Zahlungen, Abonnements und Formulartransaktionen, die mit diesem Konto verbunden sind, gestoppt."],"Disconnect":["Trennen"],"Disconnecting\u2026":["Trennen\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook erfolgreich verbunden, alle Stripe-Ereignisse werden verfolgt."],"Connect your Stripe account to start accepting payments through your forms.":["Verbinden Sie Ihr Stripe-Konto, um Zahlungen \u00fcber Ihre Formulare zu akzeptieren."],"Connect to Stripe":["Mit Stripe verbinden"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Verbinden Sie sich sicher mit Stripe, um mit nur wenigen Klicks Zahlungen zu akzeptieren!"],"Set the total number of submissions allowed for this form.":["Legen Sie die Gesamtanzahl der zul\u00e4ssigen Einreichungen f\u00fcr dieses Formular fest."],"Payment Methods":["Zahlungsmethoden"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["Der Testmodus erm\u00f6glicht es Ihnen, Zahlungen ohne echte Belastungen zu verarbeiten. Wechseln Sie in den Live-Modus f\u00fcr tats\u00e4chliche Transaktionen."],"General Payment Settings":["Allgemeine Zahlungseinstellungen"],"These settings apply to all payment gateways.":["Diese Einstellungen gelten f\u00fcr alle Zahlungs-Gateways."],"Stripe Settings":["Stripe-Einstellungen"],"Left ($100)":["Links ($100)"],"Right (100$)":["Richtig (100$)"],"Left Space ($ 100)":["Verbleibender Platz ($ 100)"],"Right Space (100 $)":["Rechter Raum (100 $)"],"Currency Sign Position":["Position des W\u00e4hrungszeichens"],"Select the position of the currency symbol relative to the amount.":["W\u00e4hlen Sie die Position des W\u00e4hrungssymbols relativ zum Betrag aus."],"Learn":["Lernen"],"Enable email summaries":["E-Mail-Zusammenfassungen aktivieren"],"Enable IP logging":["IP-Protokollierung aktivieren"],"Turn on Admin Notification from here.":["Aktivieren Sie hier die Admin-Benachrichtigung."],"New":["Neu"],"Send entries to 100+ popular apps.":["Eintr\u00e4ge an \u00fcber 100 beliebte Apps senden."],"Build automated workflows that run instantly.":["Erstellen Sie automatisierte Workflows, die sofort ausgef\u00fchrt werden."],"Create custom app integrations using our Custom App feature.":["Erstellen Sie benutzerdefinierte App-Integrationen mit unserer benutzerdefinierten App-Funktion."],"Keep your tools in sync automatically.":["Halten Sie Ihre Werkzeuge automatisch synchron."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Dies wird OttoKit auf Ihrer WordPress-Seite installieren und aktivieren, um Automatisierungsfunktionen zu erm\u00f6glichen."],"Automate Your Forms with OttoKit":["Automatisieren Sie Ihre Formulare mit OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Jede Formular\u00fcbermittlung sollte etwas ausl\u00f6sen \u2014 eine Slack-Benachrichtigung, einen CRM-Lead, eine Follow-up-E-Mail oder eine neue Zeile in Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Konfigurieren Sie die Berechtigungen des KI-Clients und die Einstellungen des MCP-Servers."],"View documentation":["Dokumentation anzeigen"],"Copy to clipboard":["In die Zwischenablage kopieren"],"Claude Desktop":["Claude Desktop"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) oder %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["Claude-Code"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (Projekt) oder ~\/.claude.json (global)"],"Cursor":["Cursor"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (Projekt) oder settings.json > mcp.servers (global)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml oder config.json"],"Your client's MCP configuration file":["Die MCP-Konfigurationsdatei Ihres Kunden"],"Connect Your AI Client":["Verbinden Sie Ihren KI-Client"],"AI Client":["KI-Client"],"Create an Application Password \u2014 ":["Erstellen Sie ein Anwendungskennwort \u2014"],"Open Application Passwords":["Anwendungspassw\u00f6rter \u00f6ffnen"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Oder verwenden Sie diesen CLI-Befehl, um den Server schnell hinzuzuf\u00fcgen (Sie m\u00fcssen dennoch die Umgebungsvariablen festlegen):"],"Copy the JSON config below into: ":["Kopiere die JSON-Konfiguration unten in:"],"Replace \"your-application-password\" with the password from Step 1.":["Ersetzen Sie \"your-application-password\" durch das Passwort aus Schritt 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 der MCP-Endpunkt Ihrer Website. WP_API_USERNAME \u2014 Ihr WordPress-Benutzername. WP_API_PASSWORD \u2014 das Anwendungskennwort, das Sie erstellt haben."],"View setup docs":["Einrichtungsdokumente anzeigen"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["Das MCP Adapter-Plugin ist installiert, aber nicht aktiv. Aktivieren Sie es, um die MCP-Einstellungen zu konfigurieren."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["Das MCP Adapter-Plugin ist erforderlich, um AI-Clients mit Ihren Formularen zu verbinden. Laden Sie es von GitHub herunter, installieren Sie es und aktivieren Sie es dann."],"Download the latest release from":["Laden Sie die neueste Version herunter von"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Installieren Sie das Plugin \u00fcber Plugins > Neues Plugin hinzuf\u00fcgen > Plugin hochladen."],"Activate the MCP Adapter plugin.":["Aktivieren Sie das MCP Adapter-Plugin."],"Activating\u2026":["Aktivierung\u2026"],"Activate MCP Adapter":["MCP-Adapter aktivieren"],"Download MCP Adapter":["MCP-Adapter herunterladen"],"Experimental":["Experimentell"],"Enable Abilities":["F\u00e4higkeiten aktivieren"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Registriere die F\u00e4higkeiten von SureForms mit der WordPress Abilities API. Wenn aktiviert, k\u00f6nnen KI-Clients Ihre Formulare und Eintr\u00e4ge auflisten, lesen, erstellen, bearbeiten und l\u00f6schen. Wenn deaktiviert, werden keine F\u00e4higkeiten registriert und KI-Clients k\u00f6nnen keine Aktionen an Ihren Formularen durchf\u00fchren."],"Abilities API \u2014 Edit":["F\u00e4higkeiten-API \u2014 Bearbeiten"],"Enable Edit Abilities":["Bearbeitungsf\u00e4higkeiten aktivieren"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Wenn aktiviert, k\u00f6nnen KI-Clients neue Formulare erstellen, Formulartitel, Felder und Einstellungen aktualisieren, Formulare duplizieren und Eintragsstatus \u00e4ndern. Wenn deaktiviert, werden diese F\u00e4higkeiten abgemeldet und KI-Clients k\u00f6nnen nur Ihre Daten lesen."],"Abilities API \u2014 Delete":["F\u00e4higkeiten-API \u2014 L\u00f6schen"],"Enable Delete Abilities":["L\u00f6schf\u00e4higkeiten aktivieren"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Wenn aktiviert, k\u00f6nnen KI-Clients Formulare und Eintr\u00e4ge dauerhaft l\u00f6schen. Gel\u00f6schte Daten k\u00f6nnen nicht wiederhergestellt werden. Wenn deaktiviert, werden L\u00f6schf\u00e4higkeiten abgemeldet und KI-Clients k\u00f6nnen keine Daten entfernen."],"MCP Server":["MCP-Server"],"Enable MCP Server":["MCP-Server aktivieren"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Erstellt einen dedizierten SureForms MCP-Endpunkt, mit dem sich KI-Clients wie Claude verbinden k\u00f6nnen. Wenn er deaktiviert ist, wird der Endpunkt entfernt und externe KI-Clients k\u00f6nnen keine SureForms-Funktionen entdecken oder aufrufen."],"Learn more":["Mehr erfahren"],"MCP Adapter Required":["MCP-Adapter erforderlich"],"Heading 1":["\u00dcberschrift 1"],"Heading 2":["\u00dcberschrift 2"],"Heading 3":["\u00dcberschrift 3"],"Heading 4":["\u00dcberschrift 4"],"Heading 5":["\u00dcberschrift 5"],"Heading 6":["\u00dcberschrift 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Konfigurieren Sie den Google Maps API-Schl\u00fcssel f\u00fcr die Adressvervollst\u00e4ndigung und die Kartenansichtsvorschau."],"Help shape the future of SureForms":["Helfen Sie mit, die Zukunft von SureForms zu gestalten"],"Enable Google Address Autocomplete":["Google-Adress-Autovervollst\u00e4ndigung aktivieren"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Upgrade auf den SureForms Business-Plan, um Google-gest\u00fctzte Adressvervollst\u00e4ndigung mit interaktiver Kartenansicht zu Ihren Formularen hinzuzuf\u00fcgen."],"Auto-suggest addresses as users type for faster, error-free submissions":["Adressen automatisch vorschlagen, w\u00e4hrend Benutzer tippen, f\u00fcr schnellere und fehlerfreie Eingaben"],"Show an interactive map preview with draggable pin for precise locations":["Zeige eine interaktive Kartenansicht mit verschiebbarem Pin f\u00fcr pr\u00e4zise Standorte"],"Automatically populate address fields like city, state, and postal code":["Adressfelder wie Stadt, Bundesland und Postleitzahl automatisch ausf\u00fcllen"],"This form is now closed as we've received all the entries.":["Dieses Formular ist jetzt geschlossen, da wir alle Einsendungen erhalten haben."],"Thank you for contacting us! We will be in touch with you shortly.":["Vielen Dank, dass Sie uns kontaktiert haben! Wir werden uns in K\u00fcrze mit Ihnen in Verbindung setzen."],"Saving\u2026":["Speichern\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Wenn aktiviert, speichert dieses Formular die IP-Adresse des Benutzers, den Browsernamen und den Ger\u00e4tenamen nicht in den Eintr\u00e4gen."],"Form data":["Formulardaten"],"Unsaved changes":["Nicht gespeicherte \u00c4nderungen"],"Keep editing":["Weiter bearbeiten"],"Global Defaults":["Globale Standardeinstellungen"],"Form Restrictions":["Formulareinschr\u00e4nkungen"],"Configure default settings that apply to newly created forms.":["Standardm\u00e4\u00dfige Einstellungen konfigurieren, die f\u00fcr neu erstellte Formulare gelten."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Sammeln Sie nicht sensible Informationen von Ihrer Website, wie die verwendete PHP-Version und Funktionen, um uns zu helfen, Fehler schneller zu beheben, kl\u00fcgere Entscheidungen zu treffen und Funktionen zu entwickeln, die f\u00fcr Sie tats\u00e4chlich von Bedeutung sind."],"Failed to load pages. Please refresh and try again.":["Fehler beim Laden der Seiten. Bitte aktualisieren Sie die Seite und versuchen Sie es erneut."],"Failed to load settings. Please refresh and try again.":["Fehler beim Laden der Einstellungen. Bitte aktualisieren Sie die Seite und versuchen Sie es erneut."],"Form Validation fields cannot be left blank.":["Felder zur Formularvalidierung d\u00fcrfen nicht leer gelassen werden."],"Recipient email is required when email summaries are enabled.":["Die Empf\u00e4nger-E-Mail ist erforderlich, wenn E-Mail-Zusammenfassungen aktiviert sind."],"Please enter a valid recipient email.":["Bitte geben Sie eine g\u00fcltige Empf\u00e4nger-E-Mail-Adresse ein."],"Settings saved.":["Einstellungen gespeichert."],"Failed to save settings.":["Speichern der Einstellungen fehlgeschlagen."],"Some settings failed to save. Please retry.":["Einige Einstellungen konnten nicht gespeichert werden. Bitte versuchen Sie es erneut."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Einige Felder enthalten ungespeicherte \u00c4nderungen. Verwerfen Sie diese, um fortzufahren, oder bleiben Sie, um Ihre \u00c4nderungen zu speichern."],"Discard & switch":["Verwerfen & wechseln"],"Import":["Importieren"],"Migration":["Migration"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Formulare von Contact Form 7, WPForms, Gravity Forms und anderen Plugins in SureForms importieren."],"Could not generate the import preview.":["Konnte die Importvorschau nicht erstellen."],"Import failed. Please try again or check your error logs.":["Import fehlgeschlagen. Bitte versuchen Sie es erneut oder \u00fcberpr\u00fcfen Sie Ihre Fehlerprotokolle."],"Go back":["Geh zur\u00fcck"],"Update & import":["Aktualisieren & importieren"],"Confirm & import":["Best\u00e4tigen & importieren"],"Form #%s":["Formular #%s"],"%d field will import":["%d Feld wird importiert"],"Some fields can't be migrated yet":["Einige Felder k\u00f6nnen noch nicht migriert werden"],"These fields will be skipped - add them manually after the form is created:":["Diese Felder werden \u00fcbersprungen - f\u00fcgen Sie sie manuell hinzu, nachdem das Formular erstellt wurde:"],"Some forms could not be parsed":["Einige Formulare konnten nicht analysiert werden"],"Update existing":["Vorhandenes aktualisieren"],"Create a new copy":["Erstellen Sie eine neue Kopie"],"Could not load forms for this source.":["Konnte die Formulare f\u00fcr diese Quelle nicht laden."],"(untitled form)":["(unbetiteltes Formular)"],"Previously imported":["Zuvor importiert"],"Open existing SureForms form in a new tab":["Vorhandenes SureForms-Formular in einem neuen Tab \u00f6ffnen"],"On re-import":["Beim erneuten Import"],"No forms found in this plugin.":["Keine Formulare in diesem Plugin gefunden."],"%1$d of %2$d form selected":["%1$d von %2$d Formular ausgew\u00e4hlt"],"Preview update":["Vorschau-Update"],"Preview import":["Importvorschau"],"Migration complete":["Migration abgeschlossen"],"Nothing was imported":["Nichts wurde importiert"],"%d form was imported into SureForms.":["%d Formular wurde in SureForms importiert."],"None of the selected forms could be migrated. See the warnings below for details.":["Keine der ausgew\u00e4hlten Formulare konnte migriert werden. Siehe die Warnungen unten f\u00fcr Details."],"Imported forms":["Importierte Formulare"],"Edit in SureForms":["In SureForms bearbeiten"],"Some fields were skipped during import":["Einige Felder wurden beim Import \u00fcbersprungen"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["F\u00fcgen Sie diese manuell im Formular-Editor hinzu - sie haben noch kein \u00c4quivalent in SureForms:"],"Some forms failed to import":["Einige Formulare konnten nicht importiert werden"],"Import more forms":["Mehr Formulare importieren"],"Could not load the list of importable plugins.":["Konnte die Liste der importierbaren Plugins nicht laden."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Auf dieser Website sind keine unterst\u00fctzten Formular-Plugins aktiv. Aktivieren Sie eines (wie Contact Form 7) mit mindestens einem Formular, um es in SureForms zu importieren."],"Plugin":["Plugin"],"%d form":["%d Formular"],"No forms":["Keine Formulare"],"Multiple choice":["Mehrfachauswahl"],"Consent":["Zustimmung"],"The image uploaded but could not be inserted. Please try again.":["Das Bild wurde hochgeladen, konnte aber nicht eingef\u00fcgt werden. Bitte versuchen Sie es erneut."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["Das Bild konnte nicht hochgeladen werden. Es k\u00f6nnte zu gro\u00df sein, oder Sie haben m\u00f6glicherweise keine Berechtigung, Dateien hochzuladen."],"Please choose an image file.":["Bitte w\u00e4hlen Sie eine Bilddatei aus."],"Show views and conversion rate":["Ansichten und Konversionsrate anzeigen"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["F\u00fcgt die Spalten Ansichten und Konversionsrate zur Formularliste hinzu. Eine Ansicht wird einmal pro Seitenbesuch gez\u00e4hlt, wenn das Formular auf dem Bildschirm erscheint, und die Konversionsrate ist der Anteil dieser Ansichten, die in einer Einreichung endeten. Die Z\u00e4hlung beginnt, sobald Sie dies aktivieren, sodass Einreichungen, die zuvor eingegangen sind, nicht zur Rate gez\u00e4hlt werden. Wenn Sie es danach deaktivieren, werden nur die Spalten ausgeblendet \u2014 die Z\u00e4hlung geht weiter, sodass die Zahlen aktuell sind, wenn Sie es wieder einschalten."],"Log cleared.":["Protokoll gel\u00f6scht."],"Could not clear the log.":["Protokoll konnte nicht gel\u00f6scht werden."],"Enable logs":["Protokolle aktivieren"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Erfasst Formular\u00fcbermittlungsfehler, die vom Browser gemeldet werden, damit Sie das Protokoll an den Support senden k\u00f6nnen, anstatt die Konsole zu lesen. Solange Ihre Formulare funktionieren, wird nichts geschrieben, und \u00fcbermittelte Werte werden niemals gespeichert."],"Download log":["Protokoll herunterladen"],"Confirm delete":["L\u00f6schen best\u00e4tigen"],"Log is full \u2014 download and clear it to keep recording.":["Protokoll ist voll \u2014 laden Sie es herunter und l\u00f6schen Sie es, um weiter aufzuzeichnen."],"Form Views & Conversion":["Formularansichten & Konversion"],"Logs":["Protokolle"],"Quill heading picker: default paragraph style\u0004Normal":["Normal"]}}} \ No newline at end of file +{"translation-revision-date":"2024-12-13T16:14:52+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Armaturenbrett"],"Settings":["Einstellungen"],"Entries":["Eintr\u00e4ge"],"Status":["Status"],"Form":["Formular"],"Activated":["Aktiviert"],"Activate":["Aktivieren"],"Address":["Adresse"],"Checkbox":["Kontrollk\u00e4stchen"],"Dropdown":["Dropdown-Men\u00fc"],"Email":["E-Mail"],"Number":["Zahl"],"Phone":["Telefon"],"Textarea":["Textbereich"],"Monday":["Montag"],"Forms":["Formulare"],"New Form Submission - %s":["Neue Formulareinreichung - %s"],"GitHub":["GitHub"],"(no title)":["(kein Titel)"],"General":["Allgemein"],"No tags available":["Keine Tags verf\u00fcgbar"],"Back":["Zur\u00fcck"],"Generic tags":["Allgemeine Tags"],"Other":["Andere"],"Confirm":["Best\u00e4tigen"],"Cancel":["Abbrechen"],"Install":["Installieren"],"Plugin Installation failed, Please try again later.":["Plugin-Installation fehlgeschlagen, bitte versuchen Sie es sp\u00e4ter erneut."],"Plugin activation failed, Please try again later.":["Plugin-Aktivierung fehlgeschlagen, bitte versuchen Sie es sp\u00e4ter erneut."],"Integrations":["Integrationen"],"What's New?":["Was gibt's Neues?"],"Core":["Kern"],"Unlicensed":["Ohne Lizenz"],"Connecting\u2026":["Verbinden\u2026"],"Install & Activate":["Installieren & Aktivieren"],"Compliance Settings":["Compliance-Einstellungen"],"Enable GDPR Compliance":["Aktivieren Sie die DSGVO-Konformit\u00e4t"],"Never store entry data after form submission":["Speichern Sie niemals Eingabedaten nach dem Absenden des Formulars"],"When enabled this form will never store Entries.":["Wenn aktiviert, speichert dieses Formular niemals Eintr\u00e4ge."],"Automatically delete entries":["Eintr\u00e4ge automatisch l\u00f6schen"],"When enabled this form will automatically delete entries after a certain period of time.":["Wenn aktiviert, wird dieses Formular Eintr\u00e4ge nach einer bestimmten Zeitspanne automatisch l\u00f6schen."],"Entries older than the days set will be deleted automatically.":["Eintr\u00e4ge, die \u00e4lter sind als die festgelegten Tage, werden automatisch gel\u00f6scht."],"Visual":["Visuell"],"HTML":["HTML"],"All Data":["Alle Daten"],"Add Shortcode":["Shortcode hinzuf\u00fcgen"],"Form input tags":["Formulareingabetags"],"Comma separated values are also accepted.":["Kommagetrennte Werte werden ebenfalls akzeptiert."],"Email Notification":["E-Mail-Benachrichtigung"],"Name":["Name"],"Send Email To":["E-Mail senden an"],"Subject":["Betreff"],"CC":["CC"],"BCC":["BCC"],"Reply To":["Antworten an"],"Add Key":["Schl\u00fcssel hinzuf\u00fcgen"],"Add Value":["Wert hinzuf\u00fcgen"],"Add":["Hinzuf\u00fcgen"],"Confirmation Message":["Best\u00e4tigungsnachricht"],"After Form Submission":["Nach dem Absenden des Formulars"],"Hide Form":["Formular ausblenden"],"Reset Form":["Formular zur\u00fccksetzen"],"Custom URL":["Benutzerdefinierte URL"],"Add Query Parameters":["Abfrageparameter hinzuf\u00fcgen"],"Select if you want to add key-value pairs for form fields to include in query parameters":["W\u00e4hlen Sie, ob Sie Schl\u00fcssel-Wert-Paare f\u00fcr Formularfelder hinzuf\u00fcgen m\u00f6chten, die in Abfrageparametern enthalten sein sollen"],"Query Parameters":["Abfrageparameter"],"Success Message":["Erfolgsmeldung"],"Redirect":["Weiterleiten"],"Redirect to":["Weiterleiten zu"],"Page":["Seite"],"Form Confirmation":["Formularbest\u00e4tigung"],"Confirmation Type":["Best\u00e4tigungstyp"],"Clear":["Klar"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Unsichtbar"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Validierungen"],"Spam Protection":["Spam-Schutz"],"Email Summaries":["E-Mail-Zusammenfassungen"],"Tuesday":["Dienstag"],"Wednesday":["Mittwoch"],"Thursday":["Donnerstag"],"Friday":["Freitag"],"Saturday":["Samstag"],"Sunday":["Sonntag"],"Test Email":["Test-E-Mail"],"Schedule Reports":["Berichte planen"],"IP Logging":["IP-Protokollierung"],"If this option is turned on, the user's IP address will be saved with the form data":["Wenn diese Option aktiviert ist, wird die IP-Adresse des Benutzers zusammen mit den Formulardaten gespeichert."],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s repr\u00e4sentiert die minimal erforderlichen Auswahlen. Zum Beispiel: \u201eMindestens 2 Auswahlen sind erforderlich.\u201c"],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s repr\u00e4sentiert die maximal erlaubten Auswahlen. Zum Beispiel: \u201eMaximal 4 Auswahlen sind erlaubt.\u201c"],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s repr\u00e4sentiert die minimal erforderlichen Auswahlm\u00f6glichkeiten. Zum Beispiel: \u201eMindestens 1 Auswahl ist erforderlich.\u201c"],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s repr\u00e4sentiert die maximal erlaubten Auswahlm\u00f6glichkeiten. Zum Beispiel: \u201eMaximal 3 Auswahlen sind erlaubt.\u201c"]," Error Message":["Fehlermeldung"],"Auto":["Auto"],"Light":["Licht"],"Dark":["Dunkel"],"Turnstile":["Drehkreuz"],"Honeypot":["Honigtopf"],"Get Keys":["Schl\u00fcssel holen"],"Documentation":["Dokumentation"],"Site Key":["Standortschl\u00fcssel"],"Secret Key":["Geheimer Schl\u00fcssel"],"Cloudflare Turnstile":["Cloudflare-Drehkreuz"],"Appearance Mode":["Erscheinungsmodus"],"Enable Honeypot Security":["Honeypot-Sicherheit aktivieren"],"Enable Honeypot Security for better spam protection":["Aktivieren Sie Honeypot-Sicherheit f\u00fcr besseren Spamschutz"],"Text":["Text"],"Confirmation Email Mismatch Message":["Best\u00e4tigungs-E-Mail-Unstimmigkeitsnachricht"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s repr\u00e4sentiert den minimalen Eingabewert. Zum Beispiel: \"Der Mindestwert ist 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s repr\u00e4sentiert den maximalen Eingabewert. Zum Beispiel: \"Der Maximalwert ist 100.\""],"OttoKit":["OttoKit"],"Connect with OttoKit":["Mit OttoKit verbinden"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Die aktuelle 'Von-E-Mail'-Adresse stimmt nicht mit Ihrem Website-Domainnamen (%1$s) \u00fcberein. Dies kann dazu f\u00fchren, dass Ihre Benachrichtigungs-E-Mails blockiert oder als Spam markiert werden. Alternativ versuchen Sie, eine Von-Adresse zu verwenden, die mit Ihrem Website-Domainnamen \u00fcbereinstimmt (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Die aktuelle 'Von-E-Mail'-Adresse stimmt nicht mit Ihrem Website-Domainnamen (%s) \u00fcberein. Dies kann dazu f\u00fchren, dass Ihre Benachrichtigungs-E-Mails blockiert oder als Spam markiert werden."],"We strongly recommend that you install the free ":["Wir empfehlen Ihnen dringend, die kostenlose"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["Plugin! Der Einrichtungsassistent macht es einfach, Ihre E-Mails zu reparieren."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Alternativ k\u00f6nnen Sie versuchen, eine Absenderadresse zu verwenden, die mit Ihrer Website-Domain \u00fcbereinstimmt (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Bitte geben Sie eine g\u00fcltige E-Mail-Adresse ein. Ihre Benachrichtigungen werden nicht gesendet, wenn das Feld nicht korrekt ausgef\u00fcllt ist."],"From Name":["Von Name"],"From Email":["Von E-Mail"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Die aktuelle 'Von-E-Mail'-Adresse stimmt m\u00f6glicherweise nicht mit Ihrem Website-Domainnamen (%1$s) \u00fcberein. Dies kann dazu f\u00fchren, dass Ihre Benachrichtigungs-E-Mails blockiert oder als Spam markiert werden. Alternativ versuchen Sie, eine Von-Adresse zu verwenden, die mit Ihrem Website-Domainnamen \u00fcbereinstimmt (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Die aktuelle 'Von-E-Mail'-Adresse stimmt m\u00f6glicherweise nicht mit Ihrem Website-Domainnamen (%s) \u00fcberein. Dies kann dazu f\u00fchren, dass Ihre Benachrichtigungs-E-Mails blockiert oder als Spam markiert werden."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Bereit, \u00fcber den kostenlosen Plan hinauszugehen?"],"Upgrade now":["Jetzt upgraden"],"and unlock the full power of SureForms!":["und die volle Kraft von SureForms freischalten!"],"Upgrade SureForms":["SureForms aktualisieren"],"Upgrade Now":["Jetzt upgraden"],"Entries older than the selected days will be deleted.":["Eintr\u00e4ge, die \u00e4lter als die ausgew\u00e4hlten Tage sind, werden gel\u00f6scht."],"Entries Time Period":["Eintr\u00e4ge Zeitraum"],"Notifications can use only one From Email so please enter a single address.":["Benachrichtigungen k\u00f6nnen nur eine Absender-E-Mail verwenden, daher geben Sie bitte eine einzelne Adresse ein."],"Select Page to redirect":["Seite zum Weiterleiten ausw\u00e4hlen"],"Search for a page":["Suche nach einer Seite"],"Select a page":["W\u00e4hlen Sie eine Seite aus"],"Form Validation":["Formularvalidierung"],"Required Error Messages":["Erforderliche Fehlermeldungen"],"Other Error Messages":["Andere Fehlermeldungen"],"Input Field Unique":["Eingabefeld eindeutig"],"Email Field Unique":["E-Mail-Feld eindeutig"],"Invalid URL":["Ung\u00fcltige URL"],"Phone Field Unique":["Telefonfeld eindeutig"],"Invalid Field Number Block":["Ung\u00fcltiger Feldnummernblock"],"Invalid Email":["Ung\u00fcltige E-Mail"],"Number Minimum Value":["Zahlen-Mindestwert"],"Number Maximum Value":["Zahlen Maximalwert"],"Dropdown Minimum Selections":["Dropdown Minimale Auswahlen"],"Dropdown Maximum Selections":["Dropdown Maximale Auswahlen"],"Multiple Choice Minimum Selections":["Mehrfachauswahl Mindestanzahl der Auswahlen"],"Multiple Choice Maximum Selections":["Mehrfachauswahl Maximale Auswahlm\u00f6glichkeiten"],"Input Field":["Eingabefeld"],"Email Field":["E-Mail-Feld"],"URL Field":["URL-Feld"],"Phone Field":["Telefonfeld"],"Textarea Field":["Textbereichsfeld"],"Checkbox Field":["Kontrollk\u00e4stchenfeld"],"Dropdown Field":["Dropdown-Feld"],"Multiple Choice Field":["Mehrfachauswahlfeld"],"Address Field":["Adressfeld"],"Number Field":["Zahlenfeld"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Um die reCAPTCHA-Funktion in Ihren SureForms zu aktivieren, aktivieren Sie bitte die reCAPTCHA-Option in Ihren Blockeinstellungen und w\u00e4hlen Sie die Version aus. F\u00fcgen Sie hier den Google reCAPTCHA Secret und den Site Key hinzu. reCAPTCHA wird auf der Vorderseite Ihrer Seite hinzugef\u00fcgt."],"Enter your %s here":["Geben Sie hier Ihr %s ein"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Um hCAPTCHA zu aktivieren, f\u00fcgen Sie bitte Ihren Site-Schl\u00fcssel und Geheimschl\u00fcssel hinzu. Konfigurieren Sie diese Einstellungen innerhalb des einzelnen Formulars."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Um Cloudflare Turnstile zu aktivieren, f\u00fcgen Sie bitte Ihren Site-Schl\u00fcssel und Geheimschl\u00fcssel hinzu. Konfigurieren Sie diese Einstellungen innerhalb des einzelnen Formulars."],"Save":["Speichern"],"Anonymous Analytics":["Anonyme Analysen"],"Learn More":["Mehr erfahren"],"Admin Notification":["Administratorbenachrichtigung"],"Enable Admin Notification":["Admin-Benachrichtigung aktivieren"],"Admin notifications keep you informed about new form entries since your last visit.":["Admin-Benachrichtigungen halten Sie \u00fcber neue Formulareintr\u00e4ge seit Ihrem letzten Besuch auf dem Laufenden."],"Skip":["\u00dcberspringen"],"Continue":["Fortfahren"],"Maximum Number of Entries":["Maximale Anzahl von Eintr\u00e4gen"],"Maximum Entries":["Maximale Eintr\u00e4ge"],"Response Description After Maximum Entries":["Antwortbeschreibung nach maximalen Eintr\u00e4gen"],"Get Started":["Loslegen"],"Integration":["Integration"],"Connect Native Integrations with SureForms":["Native Integrationen mit SureForms verbinden"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Schalten Sie leistungsstarke Integrationen im Premium-Plan frei, um Ihre Arbeitsabl\u00e4ufe zu automatisieren und SureForms direkt mit Ihren Lieblingstools zu verbinden."],"Send form submissions straight to CRMs, email, and marketing platforms":["Senden Sie Formulareinsendungen direkt an CRMs, E-Mail- und Marketingplattformen"],"Automate repetitive tasks with seamless data syncing":["Automatisieren Sie repetitive Aufgaben mit nahtloser Datensynchronisierung"],"Access exclusive native integrations for faster workflows":["Zugriff auf exklusive native Integrationen f\u00fcr schnellere Arbeitsabl\u00e4ufe"],"Expected format for emails - email@sureforms.com or John Doe ":["Erwartetes Format f\u00fcr E-Mails - email@sureforms.com oder John Doe "],"Payments":["Zahlungen"],"Stripe account disconnected successfully.":["Stripe-Konto erfolgreich getrennt."],"Failed to create webhook.":["Fehler beim Erstellen des Webhooks."],"Failed to connect to Stripe.":["Verbindung zu Stripe fehlgeschlagen."],"Webhook":["Webhook"],"Knowledge Base":["Wissensdatenbank"],"What\u2019s New":["Was gibt's Neues"],"out of":["aus"],"No entries found":["Keine Eintr\u00e4ge gefunden"],"delete":["l\u00f6schen"],"Please type \"%s\" in the input box":["Bitte geben Sie \"%s\" in das Eingabefeld ein"],"To confirm, type \"%s\" in the box below:":["Um zu best\u00e4tigen, geben Sie \"%s\" in das Feld unten ein:"],"Type \"%s\"":["Geben Sie \"%s\" ein"],"Go to OttoKit Settings":["Gehe zu den OttoKit-Einstellungen"],"USD - US Dollar":["USD - US-Dollar"],"Payment Mode":["Zahlungsart"],"Test Mode":["Testmodus"],"Live Mode":["Live-Modus"],"Action":["Aktion"],"General Settings":["Allgemeine Einstellungen"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Richten Sie E-Mail-Zusammenfassungen, Admin-Benachrichtigungen und Datenpr\u00e4ferenzen ein, um Ihre Formulare m\u00fchelos zu verwalten."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Passen Sie die Standardfehlermeldungen an, die angezeigt werden, wenn Benutzer ung\u00fcltige oder unvollst\u00e4ndige Formulareintr\u00e4ge \u00fcbermitteln."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Aktivieren Sie den Spam-Schutz f\u00fcr Ihre Formulare mithilfe von CAPTCHA-Diensten oder Honeypot-Sicherheit."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Verbinden und verwalten Sie Ihre Zahlungsgateways, um Transaktionen sicher \u00fcber Ihre Formulare zu akzeptieren."],"1% transaction and payment gateway fees apply.":["1% Transaktions- und Zahlungsgateway-Geb\u00fchren fallen an."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["2,9 % Transaktions- und Zahlungsgateway-Geb\u00fchren fallen an. Aktivieren Sie die Lizenz, um die Transaktionsgeb\u00fchren zu reduzieren."],"2.9% transaction and payment gateway fees apply.":["Es fallen 2,9 % Transaktions- und Zahlungs-Gateway-Geb\u00fchren an."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Bitte besuchen Sie %1$s, l\u00f6schen Sie einen ungenutzten Webhook und klicken Sie dann unten, um es erneut zu versuchen."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms konnte keinen Webhook erstellen, da Ihr Stripe-Konto keine freien Slots mehr hat. Webhooks sind erforderlich, um Updates zu Zahlungen zu erhalten."],"Stripe Dashboard":["Stripe-Dashboard"],"Creating\u2026":["Erstellen\u2026"],"Create Webhook":["Webhook erstellen"],"Successfully connected to Stripe!":["Erfolgreich mit Stripe verbunden!"],"Invalid response from server. Please try again.":["Ung\u00fcltige Antwort vom Server. Bitte versuchen Sie es erneut."],"Failed to disconnect Stripe account.":["Trennen des Stripe-Kontos fehlgeschlagen."],"Webhook created successfully!":["Webhook erfolgreich erstellt!"],"Select Currency":["W\u00e4hrung ausw\u00e4hlen"],"Select the default currency for payment forms.":["W\u00e4hlen Sie die Standardw\u00e4hrung f\u00fcr Zahlungsformulare aus."],"Connection Status":["Verbindungsstatus"],"Disconnect Stripe Account":["Stripe-Konto trennen"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["Sind Sie sicher, dass Sie Ihr Stripe-Konto trennen m\u00f6chten? Dadurch werden alle aktiven Zahlungen, Abonnements und Formulartransaktionen, die mit diesem Konto verbunden sind, gestoppt."],"Disconnect":["Trennen"],"Disconnecting\u2026":["Trennen\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook erfolgreich verbunden, alle Stripe-Ereignisse werden verfolgt."],"Connect your Stripe account to start accepting payments through your forms.":["Verbinden Sie Ihr Stripe-Konto, um Zahlungen \u00fcber Ihre Formulare zu akzeptieren."],"Connect to Stripe":["Mit Stripe verbinden"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Verbinden Sie sich sicher mit Stripe, um mit nur wenigen Klicks Zahlungen zu akzeptieren!"],"Set the total number of submissions allowed for this form.":["Legen Sie die Gesamtanzahl der zul\u00e4ssigen Einreichungen f\u00fcr dieses Formular fest."],"Payment Methods":["Zahlungsmethoden"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["Der Testmodus erm\u00f6glicht es Ihnen, Zahlungen ohne echte Belastungen zu verarbeiten. Wechseln Sie in den Live-Modus f\u00fcr tats\u00e4chliche Transaktionen."],"General Payment Settings":["Allgemeine Zahlungseinstellungen"],"These settings apply to all payment gateways.":["Diese Einstellungen gelten f\u00fcr alle Zahlungs-Gateways."],"Stripe Settings":["Stripe-Einstellungen"],"Left ($100)":["Links ($100)"],"Right (100$)":["Richtig (100$)"],"Left Space ($ 100)":["Verbleibender Platz ($ 100)"],"Right Space (100 $)":["Rechter Raum (100 $)"],"Currency Sign Position":["Position des W\u00e4hrungszeichens"],"Select the position of the currency symbol relative to the amount.":["W\u00e4hlen Sie die Position des W\u00e4hrungssymbols relativ zum Betrag aus."],"Learn":["Lernen"],"Enable email summaries":["E-Mail-Zusammenfassungen aktivieren"],"Enable IP logging":["IP-Protokollierung aktivieren"],"Turn on Admin Notification from here.":["Aktivieren Sie hier die Admin-Benachrichtigung."],"New":["Neu"],"Send entries to 100+ popular apps.":["Eintr\u00e4ge an \u00fcber 100 beliebte Apps senden."],"Build automated workflows that run instantly.":["Erstellen Sie automatisierte Workflows, die sofort ausgef\u00fchrt werden."],"Create custom app integrations using our Custom App feature.":["Erstellen Sie benutzerdefinierte App-Integrationen mit unserer benutzerdefinierten App-Funktion."],"Keep your tools in sync automatically.":["Halten Sie Ihre Werkzeuge automatisch synchron."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Dies wird OttoKit auf Ihrer WordPress-Seite installieren und aktivieren, um Automatisierungsfunktionen zu erm\u00f6glichen."],"Automate Your Forms with OttoKit":["Automatisieren Sie Ihre Formulare mit OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Jede Formular\u00fcbermittlung sollte etwas ausl\u00f6sen \u2014 eine Slack-Benachrichtigung, einen CRM-Lead, eine Follow-up-E-Mail oder eine neue Zeile in Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Konfigurieren Sie die Berechtigungen des KI-Clients und die Einstellungen des MCP-Servers."],"View documentation":["Dokumentation anzeigen"],"Copy to clipboard":["In die Zwischenablage kopieren"],"Claude Desktop":["Claude Desktop"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) oder %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["Claude-Code"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (Projekt) oder ~\/.claude.json (global)"],"Cursor":["Cursor"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (Projekt) oder settings.json > mcp.servers (global)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml oder config.json"],"Your client's MCP configuration file":["Die MCP-Konfigurationsdatei Ihres Kunden"],"Connect Your AI Client":["Verbinden Sie Ihren KI-Client"],"AI Client":["KI-Client"],"Create an Application Password \u2014 ":["Erstellen Sie ein Anwendungskennwort \u2014"],"Open Application Passwords":["Anwendungspassw\u00f6rter \u00f6ffnen"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Oder verwenden Sie diesen CLI-Befehl, um den Server schnell hinzuzuf\u00fcgen (Sie m\u00fcssen dennoch die Umgebungsvariablen festlegen):"],"Copy the JSON config below into: ":["Kopiere die JSON-Konfiguration unten in:"],"Replace \"your-application-password\" with the password from Step 1.":["Ersetzen Sie \"your-application-password\" durch das Passwort aus Schritt 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 der MCP-Endpunkt Ihrer Website. WP_API_USERNAME \u2014 Ihr WordPress-Benutzername. WP_API_PASSWORD \u2014 das Anwendungskennwort, das Sie erstellt haben."],"View setup docs":["Einrichtungsdokumente anzeigen"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["Das MCP Adapter-Plugin ist installiert, aber nicht aktiv. Aktivieren Sie es, um die MCP-Einstellungen zu konfigurieren."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["Das MCP Adapter-Plugin ist erforderlich, um AI-Clients mit Ihren Formularen zu verbinden. Laden Sie es von GitHub herunter, installieren Sie es und aktivieren Sie es dann."],"Download the latest release from":["Laden Sie die neueste Version herunter von"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Installieren Sie das Plugin \u00fcber Plugins > Neues Plugin hinzuf\u00fcgen > Plugin hochladen."],"Activate the MCP Adapter plugin.":["Aktivieren Sie das MCP Adapter-Plugin."],"Activating\u2026":["Aktivierung\u2026"],"Activate MCP Adapter":["MCP-Adapter aktivieren"],"Download MCP Adapter":["MCP-Adapter herunterladen"],"Experimental":["Experimentell"],"Enable Abilities":["F\u00e4higkeiten aktivieren"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Registriere die F\u00e4higkeiten von SureForms mit der WordPress Abilities API. Wenn aktiviert, k\u00f6nnen KI-Clients Ihre Formulare und Eintr\u00e4ge auflisten, lesen, erstellen, bearbeiten und l\u00f6schen. Wenn deaktiviert, werden keine F\u00e4higkeiten registriert und KI-Clients k\u00f6nnen keine Aktionen an Ihren Formularen durchf\u00fchren."],"Abilities API \u2014 Edit":["F\u00e4higkeiten-API \u2014 Bearbeiten"],"Enable Edit Abilities":["Bearbeitungsf\u00e4higkeiten aktivieren"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Wenn aktiviert, k\u00f6nnen KI-Clients neue Formulare erstellen, Formulartitel, Felder und Einstellungen aktualisieren, Formulare duplizieren und Eintragsstatus \u00e4ndern. Wenn deaktiviert, werden diese F\u00e4higkeiten abgemeldet und KI-Clients k\u00f6nnen nur Ihre Daten lesen."],"Abilities API \u2014 Delete":["F\u00e4higkeiten-API \u2014 L\u00f6schen"],"Enable Delete Abilities":["L\u00f6schf\u00e4higkeiten aktivieren"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Wenn aktiviert, k\u00f6nnen KI-Clients Formulare und Eintr\u00e4ge dauerhaft l\u00f6schen. Gel\u00f6schte Daten k\u00f6nnen nicht wiederhergestellt werden. Wenn deaktiviert, werden L\u00f6schf\u00e4higkeiten abgemeldet und KI-Clients k\u00f6nnen keine Daten entfernen."],"MCP Server":["MCP-Server"],"Enable MCP Server":["MCP-Server aktivieren"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Erstellt einen dedizierten SureForms MCP-Endpunkt, mit dem sich KI-Clients wie Claude verbinden k\u00f6nnen. Wenn er deaktiviert ist, wird der Endpunkt entfernt und externe KI-Clients k\u00f6nnen keine SureForms-Funktionen entdecken oder aufrufen."],"Learn more":["Mehr erfahren"],"MCP Adapter Required":["MCP-Adapter erforderlich"],"Heading 1":["\u00dcberschrift 1"],"Heading 2":["\u00dcberschrift 2"],"Heading 3":["\u00dcberschrift 3"],"Heading 4":["\u00dcberschrift 4"],"Heading 5":["\u00dcberschrift 5"],"Heading 6":["\u00dcberschrift 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Konfigurieren Sie den Google Maps API-Schl\u00fcssel f\u00fcr die Adressvervollst\u00e4ndigung und die Kartenansichtsvorschau."],"Help shape the future of SureForms":["Helfen Sie mit, die Zukunft von SureForms zu gestalten"],"Enable Google Address Autocomplete":["Google-Adress-Autovervollst\u00e4ndigung aktivieren"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Upgrade auf den SureForms Business-Plan, um Google-gest\u00fctzte Adressvervollst\u00e4ndigung mit interaktiver Kartenansicht zu Ihren Formularen hinzuzuf\u00fcgen."],"Auto-suggest addresses as users type for faster, error-free submissions":["Adressen automatisch vorschlagen, w\u00e4hrend Benutzer tippen, f\u00fcr schnellere und fehlerfreie Eingaben"],"Show an interactive map preview with draggable pin for precise locations":["Zeige eine interaktive Kartenansicht mit verschiebbarem Pin f\u00fcr pr\u00e4zise Standorte"],"Automatically populate address fields like city, state, and postal code":["Adressfelder wie Stadt, Bundesland und Postleitzahl automatisch ausf\u00fcllen"],"This form is now closed as we've received all the entries.":["Dieses Formular ist jetzt geschlossen, da wir alle Einsendungen erhalten haben."],"Thank you for contacting us! We will be in touch with you shortly.":["Vielen Dank, dass Sie uns kontaktiert haben! Wir werden uns in K\u00fcrze mit Ihnen in Verbindung setzen."],"Saving\u2026":["Speichern\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Wenn aktiviert, speichert dieses Formular die IP-Adresse des Benutzers, den Browsernamen und den Ger\u00e4tenamen nicht in den Eintr\u00e4gen."],"Form data":["Formulardaten"],"Unsaved changes":["Nicht gespeicherte \u00c4nderungen"],"Keep editing":["Weiter bearbeiten"],"Global Defaults":["Globale Standardeinstellungen"],"Form Restrictions":["Formulareinschr\u00e4nkungen"],"Configure default settings that apply to newly created forms.":["Standardm\u00e4\u00dfige Einstellungen konfigurieren, die f\u00fcr neu erstellte Formulare gelten."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Sammeln Sie nicht sensible Informationen von Ihrer Website, wie die verwendete PHP-Version und Funktionen, um uns zu helfen, Fehler schneller zu beheben, kl\u00fcgere Entscheidungen zu treffen und Funktionen zu entwickeln, die f\u00fcr Sie tats\u00e4chlich von Bedeutung sind."],"Failed to load pages. Please refresh and try again.":["Fehler beim Laden der Seiten. Bitte aktualisieren Sie die Seite und versuchen Sie es erneut."],"Failed to load settings. Please refresh and try again.":["Fehler beim Laden der Einstellungen. Bitte aktualisieren Sie die Seite und versuchen Sie es erneut."],"Form Validation fields cannot be left blank.":["Felder zur Formularvalidierung d\u00fcrfen nicht leer gelassen werden."],"Recipient email is required when email summaries are enabled.":["Die Empf\u00e4nger-E-Mail ist erforderlich, wenn E-Mail-Zusammenfassungen aktiviert sind."],"Please enter a valid recipient email.":["Bitte geben Sie eine g\u00fcltige Empf\u00e4nger-E-Mail-Adresse ein."],"Settings saved.":["Einstellungen gespeichert."],"Failed to save settings.":["Speichern der Einstellungen fehlgeschlagen."],"Some settings failed to save. Please retry.":["Einige Einstellungen konnten nicht gespeichert werden. Bitte versuchen Sie es erneut."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Einige Felder enthalten ungespeicherte \u00c4nderungen. Verwerfen Sie diese, um fortzufahren, oder bleiben Sie, um Ihre \u00c4nderungen zu speichern."],"Discard & switch":["Verwerfen & wechseln"],"Import":["Importieren"],"Migration":["Migration"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Formulare von Contact Form 7, WPForms, Gravity Forms und anderen Plugins in SureForms importieren."],"Could not generate the import preview.":["Konnte die Importvorschau nicht erstellen."],"Import failed. Please try again or check your error logs.":["Import fehlgeschlagen. Bitte versuchen Sie es erneut oder \u00fcberpr\u00fcfen Sie Ihre Fehlerprotokolle."],"Go back":["Geh zur\u00fcck"],"Update & import":["Aktualisieren & importieren"],"Confirm & import":["Best\u00e4tigen & importieren"],"Form #%s":["Formular #%s"],"%d field will import":["%d Feld wird importiert"],"Some fields can't be migrated yet":["Einige Felder k\u00f6nnen noch nicht migriert werden"],"These fields will be skipped - add them manually after the form is created:":["Diese Felder werden \u00fcbersprungen - f\u00fcgen Sie sie manuell hinzu, nachdem das Formular erstellt wurde:"],"Some forms could not be parsed":["Einige Formulare konnten nicht analysiert werden"],"Update existing":["Vorhandenes aktualisieren"],"Create a new copy":["Erstellen Sie eine neue Kopie"],"Could not load forms for this source.":["Konnte die Formulare f\u00fcr diese Quelle nicht laden."],"(untitled form)":["(unbetiteltes Formular)"],"Previously imported":["Zuvor importiert"],"Open existing SureForms form in a new tab":["Vorhandenes SureForms-Formular in einem neuen Tab \u00f6ffnen"],"On re-import":["Beim erneuten Import"],"No forms found in this plugin.":["Keine Formulare in diesem Plugin gefunden."],"%1$d of %2$d form selected":["%1$d von %2$d Formular ausgew\u00e4hlt"],"Preview update":["Vorschau-Update"],"Preview import":["Importvorschau"],"Migration complete":["Migration abgeschlossen"],"Nothing was imported":["Nichts wurde importiert"],"%d form was imported into SureForms.":["%d Formular wurde in SureForms importiert."],"None of the selected forms could be migrated. See the warnings below for details.":["Keine der ausgew\u00e4hlten Formulare konnte migriert werden. Siehe die Warnungen unten f\u00fcr Details."],"Imported forms":["Importierte Formulare"],"Edit in SureForms":["In SureForms bearbeiten"],"Some fields were skipped during import":["Einige Felder wurden beim Import \u00fcbersprungen"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["F\u00fcgen Sie diese manuell im Formular-Editor hinzu - sie haben noch kein \u00c4quivalent in SureForms:"],"Some forms failed to import":["Einige Formulare konnten nicht importiert werden"],"Import more forms":["Mehr Formulare importieren"],"Could not load the list of importable plugins.":["Konnte die Liste der importierbaren Plugins nicht laden."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Auf dieser Website sind keine unterst\u00fctzten Formular-Plugins aktiv. Aktivieren Sie eines (wie Contact Form 7) mit mindestens einem Formular, um es in SureForms zu importieren."],"Plugin":["Plugin"],"%d form":["%d Formular"],"No forms":["Keine Formulare"],"Multiple choice":["Mehrfachauswahl"],"Consent":["Zustimmung"],"The image uploaded but could not be inserted. Please try again.":["Das Bild wurde hochgeladen, konnte aber nicht eingef\u00fcgt werden. Bitte versuchen Sie es erneut."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["Das Bild konnte nicht hochgeladen werden. Es k\u00f6nnte zu gro\u00df sein, oder Sie haben m\u00f6glicherweise keine Berechtigung, Dateien hochzuladen."],"Please choose an image file.":["Bitte w\u00e4hlen Sie eine Bilddatei aus."],"Show views and conversion rate":["Ansichten und Konversionsrate anzeigen"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["F\u00fcgt die Spalten Ansichten und Konversionsrate zur Formularliste hinzu. Eine Ansicht wird einmal pro Seitenbesuch gez\u00e4hlt, wenn das Formular auf dem Bildschirm erscheint, und die Konversionsrate ist der Anteil dieser Ansichten, die in einer Einreichung endeten. Die Z\u00e4hlung beginnt, sobald Sie dies aktivieren, sodass Einreichungen, die zuvor eingegangen sind, nicht zur Rate gez\u00e4hlt werden. Wenn Sie es danach deaktivieren, werden nur die Spalten ausgeblendet \u2014 die Z\u00e4hlung geht weiter, sodass die Zahlen aktuell sind, wenn Sie es wieder einschalten."],"Log cleared.":["Protokoll gel\u00f6scht."],"Could not clear the log.":["Protokoll konnte nicht gel\u00f6scht werden."],"Enable logs":["Protokolle aktivieren"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Erfasst Formular\u00fcbermittlungsfehler, die vom Browser gemeldet werden, damit Sie das Protokoll an den Support senden k\u00f6nnen, anstatt die Konsole zu lesen. Solange Ihre Formulare funktionieren, wird nichts geschrieben, und \u00fcbermittelte Werte werden niemals gespeichert."],"Download log":["Protokoll herunterladen"],"Confirm delete":["L\u00f6schen best\u00e4tigen"],"Log is full \u2014 download and clear it to keep recording.":["Protokoll ist voll \u2014 laden Sie es herunter und l\u00f6schen Sie es, um weiter aufzuzeichnen."],"Form Views & Conversion":["Formularansichten & Konversion"],"Logs":["Protokolle"],"Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures.":["Ansichten und \u00dcbermittlungen von Personen, die die Seite bearbeiten k\u00f6nnen, werden normalerweise ausgelassen, damit das Testen Ihrer eigenen Formulare diese Zahlen nicht ver\u00e4ndert."],"Quill heading picker: default paragraph style\u0004Normal":["Normal"]}}} \ No newline at end of file diff --git a/languages/sureforms-de_DE-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json b/languages/sureforms-de_DE-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json index 600e100ff..cf2f49417 100644 --- a/languages/sureforms-de_DE-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json +++ b/languages/sureforms-de_DE-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json @@ -1 +1 @@ -{"translation-revision-date":"2024-12-13T16:14:52+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Armaturenbrett"],"Settings":["Einstellungen"],"Entries":["Eintr\u00e4ge"],"Activated":["Aktiviert"],"Advanced Fields":["Erweiterte Felder"],"Select Form":["Formular ausw\u00e4hlen"],"Create New Form":["Neues Formular erstellen"],"Forms":["Formulare"],"Copy":["Kopieren"],"Business":["Gesch\u00e4ft"],"Next":["Weiter"],"Back":["Zur\u00fcck"],"Cancel":["Abbrechen"],"This is where your form views will appear":["Hier werden Ihre Formularansichten angezeigt"],"Install":["Installieren"],"Plugin Installation failed, Please try again later.":["Plugin-Installation fehlgeschlagen, bitte versuchen Sie es sp\u00e4ter erneut."],"Plugin activation failed, Please try again later.":["Plugin-Aktivierung fehlgeschlagen, bitte versuchen Sie es sp\u00e4ter erneut."],"What's New?":["Was gibt's Neues?"],"Core":["Kern"],"Unlicensed":["Ohne Lizenz"],"Upgrade":["Aktualisieren"],"Webhooks":["Webhooks"],"Install & Activate":["Installieren & Aktivieren"],"Conditional Logic":["Bedingte Logik"],"Premium":["Premium"],"Welcome to SureForms!":["Willkommen bei SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms ist ein WordPress-Plugin, das es Benutzern erm\u00f6glicht, \u00fcber eine Drag-and-Drop-Oberfl\u00e4che ansprechend aussehende Formulare zu erstellen, ohne programmieren zu m\u00fcssen. Es integriert sich in den WordPress-Blockeditor."],"Read Full Guide":["Vollst\u00e4ndige Anleitung lesen"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Benutzerdefinierte WordPress-Formulare EINFACH GEMACHT"],"No Date":["Kein Datum"],"Invalid Date":["Ung\u00fcltiges Datum"],"Ready to go beyond free plan?":["Bereit, \u00fcber den kostenlosen Plan hinauszugehen?"],"Upgrade now":["Jetzt upgraden"],"and unlock the full power of SureForms!":["und die volle Kraft von SureForms freischalten!"],"Upgrade SureForms":["SureForms aktualisieren"],"Open Support Ticket":["Support-Ticket \u00f6ffnen"],"Help Center":["Hilfezentrum"],"Join our Community on Facebook":["Trete unserer Community auf Facebook bei"],"Leave Us a Review":["Hinterlassen Sie uns eine Bewertung"],"Quick Access":["Schneller Zugriff"],"Upgrade Now":["Jetzt upgraden"],"Clear Filters":["Filter l\u00f6schen"],"Unnamed Form":["Unbenanntes Formular"],"Forms Overview":["Formular\u00fcbersicht"],"Clear Form Filters":["Formularfilter l\u00f6schen"],"Clear Date Filters":["Datumsfilter l\u00f6schen"],"Select Date Range":["Datumsbereich ausw\u00e4hlen"],"Apply":["Anwenden"],"Please wait for the data to load":["Bitte warten Sie, bis die Daten geladen sind."],"No entries to display":["Keine Eintr\u00e4ge zum Anzeigen"],"Once you create a form and start receiving submissions, the data will appear here.":["Sobald Sie ein Formular erstellen und Einsendungen erhalten, werden die Daten hier angezeigt."],"Free":["Kostenlos"],"All Forms":["Alle Formulare"],"Guided Setup":["Gef\u00fchrte Einrichtung"],"Exit Guided Setup":["Gef\u00fchrte Einrichtung beenden"],"Skip":["\u00dcberspringen"],"Build beautiful forms visually":["Erstellen Sie sch\u00f6ne Formulare visuell"],"Works perfectly on mobile":["Funktioniert perfekt auf dem Handy"],"Easy to connect with automation tools":["Einfach mit Automatisierungstools zu verbinden"],"Welcome to SureForms":["Willkommen bei SureForms"],"Smart, Quick and Powerful Forms.":["Intelligente, schnelle und leistungsstarke Formulare."],"Let's Get Started":["Lass uns anfangen"],"Build up to 10 forms using AI":["Erstellen Sie bis zu 10 Formulare mit KI"],"A secure and private connection":["Eine sichere und private Verbindung"],"Smart form drafts based on your input":["Intelligente Formularentw\u00fcrfe basierend auf Ihren Eingaben"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Von einem leeren Formular aus zu beginnen, ist nicht immer einfach. Unsere KI kann helfen, indem sie ein Entwurfsformular basierend auf dem erstellt, was Sie tun m\u00f6chten \u2013 das spart Ihnen Zeit und gibt Ihnen eine klare Richtung."],"To do this, you'll need to connect your account.":["Um dies zu tun, m\u00fcssen Sie Ihr Konto verbinden."],"Let AI Help You Build Smarter, Faster Forms":["Lassen Sie KI Ihnen helfen, intelligentere und schnellere Formulare zu erstellen"],"Here's what that gives you:":["Hier ist, was Ihnen das gibt:"],"Continue":["Fortfahren"],"Connect":["Verbinden"],"Works smoothly with forms made using SureForms":["Funktioniert reibungslos mit Formularen, die mit SureForms erstellt wurden"],"Helps your emails reach the inbox instead of spam":["Hilft Ihren E-Mails, den Posteingang statt den Spam-Ordner zu erreichen"],"Setup is straightforward, even if you're not technical":["Die Einrichtung ist einfach, auch wenn Sie nicht technisch versiert sind."],"Lightweight and easy to use without adding clutter":["Leicht und einfach zu bedienen, ohne Unordnung hinzuzuf\u00fcgen"],"Make Sure Your Emails Get Delivered":["Stellen Sie sicher, dass Ihre E-Mails zugestellt werden"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["Die meisten WordPress-Seiten haben Schwierigkeiten, E-Mails zuverl\u00e4ssig zu versenden, was bedeutet, dass Formular\u00fcbermittlungen von Ihrer Seite m\u00f6glicherweise nicht in Ihrem Posteingang ankommen oder im Spam landen."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail ist ein einfaches SMTP-Plugin, das sicherstellt, dass Ihre E-Mails tats\u00e4chlich zugestellt werden."],"What you will get:":["Was Sie erhalten werden:"],"Install SureMail":["SureMail installieren"],"AI Form Generation":["KI-Formularerstellung"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["M\u00fcde vom manuellen Erstellen von Formularen? Lassen Sie die KI die Arbeit f\u00fcr Sie erledigen. Beschreiben Sie einfach, und unsere KI erstellt Ihr perfektes Formular in Sekundenschnelle."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Teilen Sie komplexe Formulare in einfache Schritte auf, um \u00dcberforderung zu reduzieren und die Abschlussraten zu erh\u00f6hen. F\u00fchren Sie die Benutzer reibungslos durch den Prozess."],"Conditional Fields":["Bedingte Felder"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Felder basierend auf den Antworten der Benutzer ein- oder ausblenden. Stellen Sie die richtigen Fragen und zeigen Sie nur das an, was ben\u00f6tigt wird, um Formulare sauber und relevant zu halten."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Verbessern Sie Ihre Formulare mit erweiterten Feldern wie Mehrfach-Datei-Upload, Bewertungsfeldern und Datums- & Uhrzeit-Auswahl, um reichhaltigere, flexiblere Daten zu sammeln."],"Conversational Forms":["Gespr\u00e4chsformulare"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Erstellen Sie Formulare, die sich wie ein Gespr\u00e4ch anf\u00fchlen. Eine Frage nach der anderen h\u00e4lt die Benutzer engagiert und erleichtert das Ausf\u00fcllen des Formulars."],"Digital Signatures":["Digitale Signaturen"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Sammeln Sie rechtsverbindliche digitale Unterschriften direkt in Ihren Formularen f\u00fcr Vereinbarungen, Genehmigungen und Vertr\u00e4ge."],"Calculators":["Taschenrechner"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["F\u00fcgen Sie interaktive Rechner zu Ihren Formularen hinzu, um Ihren Nutzern sofortige Sch\u00e4tzungen, Angebote und Berechnungen zu erm\u00f6glichen."],"User Registration and Login":["Benutzerregistrierung und Anmeldung"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Erm\u00f6glichen Sie Besuchern, sich auf Ihrer Website zu registrieren und anzumelden. N\u00fctzlich f\u00fcr Mitgliedschaften, Gemeinschaften oder jede Website, die Benutzerzugang ben\u00f6tigt."],"PDF Generation Made Simple":["PDF-Erstellung leicht gemacht"],"Custom App":["Benutzerdefinierte App"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Erfassen Sie Daten, senden Sie sie zur Verarbeitung an externe Anwendungen und zeigen Sie die Ergebnisse sofort an \u2013 alles nahtlos integriert, um dynamische, interaktive Benutzererlebnisse zu schaffen."],"Select Your Features":["W\u00e4hlen Sie Ihre Funktionen aus"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Erhalten Sie mehr Kontrolle, schnellere Arbeitsabl\u00e4ufe und tiefere Anpassungsm\u00f6glichkeiten \u2013 alles darauf ausgelegt, Ihnen zu helfen, bessere Websites mit weniger Aufwand zu erstellen."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Ausgew\u00e4hlte Funktionen erfordern %1$s - verwenden Sie den Code %2$s, um 10 % Rabatt auf jeden Plan zu erhalten."],"Copied":["Kopiert"],"Style your form to better match your site's design":["Gestalten Sie Ihr Formular so, dass es besser zum Design Ihrer Website passt"],"Add spam protection to block common bot submissions":["F\u00fcgen Sie einen Spam-Schutz hinzu, um h\u00e4ufige Bot-Einsendungen zu blockieren"],"Get weekly email reports with a summary of form activity":["Erhalten Sie w\u00f6chentliche E-Mail-Berichte mit einer Zusammenfassung der Formularaktivit\u00e4ten"],"You're All Set! \ud83d\ude80":["Alles ist bereit! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Verwenden Sie unseren KI-Formular-Builder, um schnell loszulegen, oder erstellen Sie Ihr Formular von Grund auf neu, wenn Sie bereits wissen, was Sie ben\u00f6tigen. Ihre Formulare sind bereit, erstellt, geteilt und mit Ihren Website-Besuchern verbunden zu werden."],"Final Touches That Make a Difference:":["Letzte Schliffe, die den Unterschied machen:"],"Build Your First Form":["Erstellen Sie Ihr erstes Formular"],"File Uploads":["Datei-Uploads"],"Signature & Rating":["Unterschrift & Bewertung"],"Calculation Forms":["Berechnungsformulare"],"And Much More\u2026":["Und vieles mehr\u2026"],"Upgrade to Pro":["Auf Pro upgraden"],"Unlock Premium Features":["Premium-Funktionen freischalten"],"Build Better Forms with SureForms":["Bauen Sie bessere Formulare mit SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["F\u00fcgen Sie erweiterte Felder, konversationelle Layouts und intelligente Logik hinzu, um Formulare zu erstellen, die Benutzer ansprechen und bessere Daten erfassen."],"SureForms Video Thumbnail":["SureForms Video-Miniaturansicht"],"Payments":["Zahlungen"],"Knowledge Base":["Wissensdatenbank"],"What\u2019s New":["Was gibt's Neues"],"Importing\u2026":["Importieren\u2026"],"Learn":["Lernen"],"Unable to complete action. Please try again.":["Aktion konnte nicht abgeschlossen werden. Bitte versuchen Sie es erneut."],"Supercharge Your Workflow":["Optimieren Sie Ihren Arbeitsablauf"],"Spam protection included":["Spam-Schutz inbegriffen"],"Multistep Forms":["Mehrstufige Formulare"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Senden Sie Formulareintr\u00e4ge sofort an jedes externe System oder Endpunkt, um erweiterte Workflows zu erm\u00f6glichen."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Formulareintr\u00e4ge automatisch in saubere, downloadbereite PDFs umwandeln. Perfekt f\u00fcr Aufzeichnungen, zum Teilen, Archivieren oder um Ordnung zu halten."],"Set up confirmation messages and email notifications for each entry":["Richten Sie Best\u00e4tigungsnachrichten und E-Mail-Benachrichtigungen f\u00fcr jeden Eintrag ein"],"Something went wrong. Please try again.":["Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut."],"Payment Forms":["Zahlungsformulare"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Erhalten Sie Zahlungen direkt \u00fcber Ihre Formulare. Akzeptieren Sie einmalige und wiederkehrende Zahlungen nahtlos."],"SureForms %s":["SureForms %s"],"First name is required.":["Vorname ist erforderlich."],"Please enter a valid email address.":["Bitte geben Sie eine g\u00fcltige E-Mail-Adresse ein."],"Email address is required.":["E-Mail-Adresse ist erforderlich."],"This is required.":["Dies ist erforderlich."],"Okay, just one last step\u2026":["Okay, nur noch ein letzter Schritt\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Helfen Sie uns, Ihre SureForms-Erfahrung zu personalisieren, indem Sie ein wenig \u00fcber sich selbst erz\u00e4hlen."],"First Name":["Vorname"],"Enter your first name":["Geben Sie Ihren Vornamen ein"],"Last Name":["Nachname"],"Enter your last name":["Geben Sie Ihren Nachnamen ein"],"Email Address":["E-Mail-Adresse"],"Enter your email address":["Geben Sie Ihre E-Mail-Adresse ein"],"Privacy Policy":["Datenschutzrichtlinie"],"Finish":["Fertig"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Bleiben Sie auf dem Laufenden und helfen Sie, SureForms mitzugestalten! Erhalten Sie Funktionsaktualisierungen und unterst\u00fctzen Sie uns bei der Verbesserung von SureForms, indem Sie mitteilen, wie Sie das Plugin verwenden. Datenschutzrichtlinie<\/a>."],"%d form ready":["%d Formular bereit"],"%d already imported":["%d bereits importiert"],"(unnamed source)":["(unbenannte Quelle)"],"All forms already imported":["Alle Formulare bereits importiert"],"Import forms":["Formulare importieren"],"Import %d form":["%d Formular importieren"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Beim Importieren ist ein Fehler aufgetreten. Sie k\u00f6nnen es erneut versuchen, \u00fcberspringen oder Einstellungen \u2192 Migration \u00f6ffnen."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Keine anderen Formular-Plugins erkannt. Sie k\u00f6nnen jederzeit \u00fcber Einstellungen \u2192 Migration importieren."],"Forms imported":["Formulare importiert"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["%1$d Formular von %2$s ist jetzt in SureForms, bereit zur Ver\u00f6ffentlichung, Gestaltung und Verbindung."],"%d form imported":["%d Formular importiert"],"%d form could not be imported":["%d Formular konnte nicht importiert werden"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d Feldtyp wurde nicht unterst\u00fctzt. Sie k\u00f6nnen es manuell in SureForms neu erstellen."],"Bring your existing forms with you":["Bringen Sie Ihre vorhandenen Formulare mit"],"We detected forms in another plugin. Pick one to import into SureForms.":["Wir haben Formulare in einem anderen Plugin erkannt. W\u00e4hlen Sie eines aus, um es in SureForms zu importieren."],"Choose a form plugin to import from":["W\u00e4hlen Sie ein Formular-Plugin zum Importieren aus"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Importieren Sie mehr als ein Plugin? Sie k\u00f6nnen sp\u00e4ter zus\u00e4tzliche Quellen \u00fcber Einstellungen \u2192 Migration importieren."],"Import did not complete":["Import wurde nicht abgeschlossen"],"I'll do this later":["Ich mache das sp\u00e4ter"],"Retry":["Erneut versuchen"],"Form Checks":["Formular\u00fcberpr\u00fcfungen"],"Collapse form checks":["Formular\u00fcberpr\u00fcfungen einklappen"],"Expand form checks":["Formular\u00fcberpr\u00fcfungen ausklappen"],"Ignore":["Ignorieren"],"Working\u2026":["Arbeitet\u2026"]}}} \ No newline at end of file +{"translation-revision-date":"2024-12-13T16:14:52+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Armaturenbrett"],"Settings":["Einstellungen"],"Entries":["Eintr\u00e4ge"],"Activated":["Aktiviert"],"Advanced Fields":["Erweiterte Felder"],"Select Form":["Formular ausw\u00e4hlen"],"Create New Form":["Neues Formular erstellen"],"Forms":["Formulare"],"Copy":["Kopieren"],"Business":["Gesch\u00e4ft"],"Next":["Weiter"],"Back":["Zur\u00fcck"],"Close":["Schlie\u00dfen"],"Cancel":["Abbrechen"],"This is where your form views will appear":["Hier werden Ihre Formularansichten angezeigt"],"Install":["Installieren"],"Plugin Installation failed, Please try again later.":["Plugin-Installation fehlgeschlagen, bitte versuchen Sie es sp\u00e4ter erneut."],"Plugin activation failed, Please try again later.":["Plugin-Aktivierung fehlgeschlagen, bitte versuchen Sie es sp\u00e4ter erneut."],"What's New?":["Was gibt's Neues?"],"Core":["Kern"],"Unlicensed":["Ohne Lizenz"],"Upgrade":["Aktualisieren"],"Webhooks":["Webhooks"],"Install & Activate":["Installieren & Aktivieren"],"Contact Support":["Support kontaktieren"],"Conditional Logic":["Bedingte Logik"],"Premium":["Premium"],"Welcome to SureForms!":["Willkommen bei SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms ist ein WordPress-Plugin, das es Benutzern erm\u00f6glicht, \u00fcber eine Drag-and-Drop-Oberfl\u00e4che ansprechend aussehende Formulare zu erstellen, ohne programmieren zu m\u00fcssen. Es integriert sich in den WordPress-Blockeditor."],"Read Full Guide":["Vollst\u00e4ndige Anleitung lesen"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Benutzerdefinierte WordPress-Formulare EINFACH GEMACHT"],"No Date":["Kein Datum"],"Invalid Date":["Ung\u00fcltiges Datum"],"Ready to go beyond free plan?":["Bereit, \u00fcber den kostenlosen Plan hinauszugehen?"],"Upgrade now":["Jetzt upgraden"],"and unlock the full power of SureForms!":["und die volle Kraft von SureForms freischalten!"],"Upgrade SureForms":["SureForms aktualisieren"],"Open Support Ticket":["Support-Ticket \u00f6ffnen"],"Help Center":["Hilfezentrum"],"Join our Community on Facebook":["Trete unserer Community auf Facebook bei"],"Leave Us a Review":["Hinterlassen Sie uns eine Bewertung"],"Quick Access":["Schneller Zugriff"],"Upgrade Now":["Jetzt upgraden"],"Clear Filters":["Filter l\u00f6schen"],"Unnamed Form":["Unbenanntes Formular"],"Forms Overview":["Formular\u00fcbersicht"],"Clear Form Filters":["Formularfilter l\u00f6schen"],"Clear Date Filters":["Datumsfilter l\u00f6schen"],"Select Date Range":["Datumsbereich ausw\u00e4hlen"],"Apply":["Anwenden"],"Please wait for the data to load":["Bitte warten Sie, bis die Daten geladen sind."],"No entries to display":["Keine Eintr\u00e4ge zum Anzeigen"],"Once you create a form and start receiving submissions, the data will appear here.":["Sobald Sie ein Formular erstellen und Einsendungen erhalten, werden die Daten hier angezeigt."],"Free":["Kostenlos"],"All Forms":["Alle Formulare"],"Guided Setup":["Gef\u00fchrte Einrichtung"],"Exit Guided Setup":["Gef\u00fchrte Einrichtung beenden"],"Skip":["\u00dcberspringen"],"Build beautiful forms visually":["Erstellen Sie sch\u00f6ne Formulare visuell"],"Works perfectly on mobile":["Funktioniert perfekt auf dem Handy"],"Easy to connect with automation tools":["Einfach mit Automatisierungstools zu verbinden"],"Welcome to SureForms":["Willkommen bei SureForms"],"Smart, Quick and Powerful Forms.":["Intelligente, schnelle und leistungsstarke Formulare."],"Let's Get Started":["Lass uns anfangen"],"Build up to 10 forms using AI":["Erstellen Sie bis zu 10 Formulare mit KI"],"A secure and private connection":["Eine sichere und private Verbindung"],"Smart form drafts based on your input":["Intelligente Formularentw\u00fcrfe basierend auf Ihren Eingaben"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Von einem leeren Formular aus zu beginnen, ist nicht immer einfach. Unsere KI kann helfen, indem sie ein Entwurfsformular basierend auf dem erstellt, was Sie tun m\u00f6chten \u2013 das spart Ihnen Zeit und gibt Ihnen eine klare Richtung."],"To do this, you'll need to connect your account.":["Um dies zu tun, m\u00fcssen Sie Ihr Konto verbinden."],"Let AI Help You Build Smarter, Faster Forms":["Lassen Sie KI Ihnen helfen, intelligentere und schnellere Formulare zu erstellen"],"Here's what that gives you:":["Hier ist, was Ihnen das gibt:"],"Continue":["Fortfahren"],"Connect":["Verbinden"],"Works smoothly with forms made using SureForms":["Funktioniert reibungslos mit Formularen, die mit SureForms erstellt wurden"],"Helps your emails reach the inbox instead of spam":["Hilft Ihren E-Mails, den Posteingang statt den Spam-Ordner zu erreichen"],"Setup is straightforward, even if you're not technical":["Die Einrichtung ist einfach, auch wenn Sie nicht technisch versiert sind."],"Lightweight and easy to use without adding clutter":["Leicht und einfach zu bedienen, ohne Unordnung hinzuzuf\u00fcgen"],"Make Sure Your Emails Get Delivered":["Stellen Sie sicher, dass Ihre E-Mails zugestellt werden"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["Die meisten WordPress-Seiten haben Schwierigkeiten, E-Mails zuverl\u00e4ssig zu versenden, was bedeutet, dass Formular\u00fcbermittlungen von Ihrer Seite m\u00f6glicherweise nicht in Ihrem Posteingang ankommen oder im Spam landen."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail ist ein einfaches SMTP-Plugin, das sicherstellt, dass Ihre E-Mails tats\u00e4chlich zugestellt werden."],"What you will get:":["Was Sie erhalten werden:"],"Install SureMail":["SureMail installieren"],"AI Form Generation":["KI-Formularerstellung"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["M\u00fcde vom manuellen Erstellen von Formularen? Lassen Sie die KI die Arbeit f\u00fcr Sie erledigen. Beschreiben Sie einfach, und unsere KI erstellt Ihr perfektes Formular in Sekundenschnelle."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Teilen Sie komplexe Formulare in einfache Schritte auf, um \u00dcberforderung zu reduzieren und die Abschlussraten zu erh\u00f6hen. F\u00fchren Sie die Benutzer reibungslos durch den Prozess."],"Conditional Fields":["Bedingte Felder"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Felder basierend auf den Antworten der Benutzer ein- oder ausblenden. Stellen Sie die richtigen Fragen und zeigen Sie nur das an, was ben\u00f6tigt wird, um Formulare sauber und relevant zu halten."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Verbessern Sie Ihre Formulare mit erweiterten Feldern wie Mehrfach-Datei-Upload, Bewertungsfeldern und Datums- & Uhrzeit-Auswahl, um reichhaltigere, flexiblere Daten zu sammeln."],"Conversational Forms":["Gespr\u00e4chsformulare"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Erstellen Sie Formulare, die sich wie ein Gespr\u00e4ch anf\u00fchlen. Eine Frage nach der anderen h\u00e4lt die Benutzer engagiert und erleichtert das Ausf\u00fcllen des Formulars."],"Digital Signatures":["Digitale Signaturen"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Sammeln Sie rechtsverbindliche digitale Unterschriften direkt in Ihren Formularen f\u00fcr Vereinbarungen, Genehmigungen und Vertr\u00e4ge."],"Calculators":["Taschenrechner"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["F\u00fcgen Sie interaktive Rechner zu Ihren Formularen hinzu, um Ihren Nutzern sofortige Sch\u00e4tzungen, Angebote und Berechnungen zu erm\u00f6glichen."],"User Registration and Login":["Benutzerregistrierung und Anmeldung"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Erm\u00f6glichen Sie Besuchern, sich auf Ihrer Website zu registrieren und anzumelden. N\u00fctzlich f\u00fcr Mitgliedschaften, Gemeinschaften oder jede Website, die Benutzerzugang ben\u00f6tigt."],"PDF Generation Made Simple":["PDF-Erstellung leicht gemacht"],"Custom App":["Benutzerdefinierte App"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Erfassen Sie Daten, senden Sie sie zur Verarbeitung an externe Anwendungen und zeigen Sie die Ergebnisse sofort an \u2013 alles nahtlos integriert, um dynamische, interaktive Benutzererlebnisse zu schaffen."],"Select Your Features":["W\u00e4hlen Sie Ihre Funktionen aus"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Erhalten Sie mehr Kontrolle, schnellere Arbeitsabl\u00e4ufe und tiefere Anpassungsm\u00f6glichkeiten \u2013 alles darauf ausgelegt, Ihnen zu helfen, bessere Websites mit weniger Aufwand zu erstellen."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Ausgew\u00e4hlte Funktionen erfordern %1$s - verwenden Sie den Code %2$s, um 10 % Rabatt auf jeden Plan zu erhalten."],"Copied":["Kopiert"],"Style your form to better match your site's design":["Gestalten Sie Ihr Formular so, dass es besser zum Design Ihrer Website passt"],"Add spam protection to block common bot submissions":["F\u00fcgen Sie einen Spam-Schutz hinzu, um h\u00e4ufige Bot-Einsendungen zu blockieren"],"Get weekly email reports with a summary of form activity":["Erhalten Sie w\u00f6chentliche E-Mail-Berichte mit einer Zusammenfassung der Formularaktivit\u00e4ten"],"You're All Set! \ud83d\ude80":["Alles ist bereit! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Verwenden Sie unseren KI-Formular-Builder, um schnell loszulegen, oder erstellen Sie Ihr Formular von Grund auf neu, wenn Sie bereits wissen, was Sie ben\u00f6tigen. Ihre Formulare sind bereit, erstellt, geteilt und mit Ihren Website-Besuchern verbunden zu werden."],"Final Touches That Make a Difference:":["Letzte Schliffe, die den Unterschied machen:"],"Build Your First Form":["Erstellen Sie Ihr erstes Formular"],"File Uploads":["Datei-Uploads"],"Signature & Rating":["Unterschrift & Bewertung"],"Calculation Forms":["Berechnungsformulare"],"And Much More\u2026":["Und vieles mehr\u2026"],"Upgrade to Pro":["Auf Pro upgraden"],"Unlock Premium Features":["Premium-Funktionen freischalten"],"Build Better Forms with SureForms":["Bauen Sie bessere Formulare mit SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["F\u00fcgen Sie erweiterte Felder, konversationelle Layouts und intelligente Logik hinzu, um Formulare zu erstellen, die Benutzer ansprechen und bessere Daten erfassen."],"SureForms Video Thumbnail":["SureForms Video-Miniaturansicht"],"Payments":["Zahlungen"],"Knowledge Base":["Wissensdatenbank"],"What\u2019s New":["Was gibt's Neues"],"Importing\u2026":["Importieren\u2026"],"Learn":["Lernen"],"Unable to complete action. Please try again.":["Aktion konnte nicht abgeschlossen werden. Bitte versuchen Sie es erneut."],"Supercharge Your Workflow":["Optimieren Sie Ihren Arbeitsablauf"],"Spam protection included":["Spam-Schutz inbegriffen"],"Multistep Forms":["Mehrstufige Formulare"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Senden Sie Formulareintr\u00e4ge sofort an jedes externe System oder Endpunkt, um erweiterte Workflows zu erm\u00f6glichen."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Formulareintr\u00e4ge automatisch in saubere, downloadbereite PDFs umwandeln. Perfekt f\u00fcr Aufzeichnungen, zum Teilen, Archivieren oder um Ordnung zu halten."],"Set up confirmation messages and email notifications for each entry":["Richten Sie Best\u00e4tigungsnachrichten und E-Mail-Benachrichtigungen f\u00fcr jeden Eintrag ein"],"Something went wrong. Please try again.":["Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut."],"Payment Forms":["Zahlungsformulare"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Erhalten Sie Zahlungen direkt \u00fcber Ihre Formulare. Akzeptieren Sie einmalige und wiederkehrende Zahlungen nahtlos."],"SureForms %s":["SureForms %s"],"First name is required.":["Vorname ist erforderlich."],"Please enter a valid email address.":["Bitte geben Sie eine g\u00fcltige E-Mail-Adresse ein."],"Email address is required.":["E-Mail-Adresse ist erforderlich."],"This is required.":["Dies ist erforderlich."],"Okay, just one last step\u2026":["Okay, nur noch ein letzter Schritt\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Helfen Sie uns, Ihre SureForms-Erfahrung zu personalisieren, indem Sie ein wenig \u00fcber sich selbst erz\u00e4hlen."],"First Name":["Vorname"],"Enter your first name":["Geben Sie Ihren Vornamen ein"],"Last Name":["Nachname"],"Enter your last name":["Geben Sie Ihren Nachnamen ein"],"Email Address":["E-Mail-Adresse"],"Enter your email address":["Geben Sie Ihre E-Mail-Adresse ein"],"Privacy Policy":["Datenschutzrichtlinie"],"Finish":["Fertig"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Bleiben Sie auf dem Laufenden und helfen Sie, SureForms mitzugestalten! Erhalten Sie Funktionsaktualisierungen und unterst\u00fctzen Sie uns bei der Verbesserung von SureForms, indem Sie mitteilen, wie Sie das Plugin verwenden. Datenschutzrichtlinie<\/a>."],"%d form ready":["%d Formular bereit"],"%d already imported":["%d bereits importiert"],"(unnamed source)":["(unbenannte Quelle)"],"All forms already imported":["Alle Formulare bereits importiert"],"Import forms":["Formulare importieren"],"Import %d form":["%d Formular importieren"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Beim Importieren ist ein Fehler aufgetreten. Sie k\u00f6nnen es erneut versuchen, \u00fcberspringen oder Einstellungen \u2192 Migration \u00f6ffnen."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Keine anderen Formular-Plugins erkannt. Sie k\u00f6nnen jederzeit \u00fcber Einstellungen \u2192 Migration importieren."],"Forms imported":["Formulare importiert"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["%1$d Formular von %2$s ist jetzt in SureForms, bereit zur Ver\u00f6ffentlichung, Gestaltung und Verbindung."],"%d form imported":["%d Formular importiert"],"%d form could not be imported":["%d Formular konnte nicht importiert werden"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d Feldtyp wurde nicht unterst\u00fctzt. Sie k\u00f6nnen es manuell in SureForms neu erstellen."],"Bring your existing forms with you":["Bringen Sie Ihre vorhandenen Formulare mit"],"We detected forms in another plugin. Pick one to import into SureForms.":["Wir haben Formulare in einem anderen Plugin erkannt. W\u00e4hlen Sie eines aus, um es in SureForms zu importieren."],"Choose a form plugin to import from":["W\u00e4hlen Sie ein Formular-Plugin zum Importieren aus"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Importieren Sie mehr als ein Plugin? Sie k\u00f6nnen sp\u00e4ter zus\u00e4tzliche Quellen \u00fcber Einstellungen \u2192 Migration importieren."],"Import did not complete":["Import wurde nicht abgeschlossen"],"I'll do this later":["Ich mache das sp\u00e4ter"],"Retry":["Erneut versuchen"],"Form Checks":["Formular\u00fcberpr\u00fcfungen"],"Collapse form checks":["Formular\u00fcberpr\u00fcfungen einklappen"],"Expand form checks":["Formular\u00fcberpr\u00fcfungen ausklappen"],"Ignore":["Ignorieren"],"Working\u2026":["Arbeitet\u2026"],"Details":["Details"],"Copy details":["Details kopieren"]}}} \ No newline at end of file diff --git a/languages/sureforms-de_DE.mo b/languages/sureforms-de_DE.mo index 3e0968150..a7e76d0c3 100644 Binary files a/languages/sureforms-de_DE.mo and b/languages/sureforms-de_DE.mo differ diff --git a/languages/sureforms-de_DE.po b/languages/sureforms-de_DE.po index 14eb4d524..d918b6498 100644 --- a/languages/sureforms-de_DE.po +++ b/languages/sureforms-de_DE.po @@ -14,9 +14,9 @@ msgstr "" #. Plugin Name of the plugin #. Author of the plugin #: sureforms.php -#: admin/admin.php:1152 -#: admin/admin.php:1153 -#: admin/admin.php:3021 +#: admin/admin.php:1198 +#: admin/admin.php:1199 +#: admin/admin.php:3185 #: inc/abilities/abilities-registrar.php:139 #: inc/gutenberg-hooks.php:109 #: inc/page-builders/bricks/elements/form-widget.php:67 @@ -43,8 +43,8 @@ msgstr "Eine einfache, aber leistungsstarke Möglichkeit, moderne Formulare für msgid "https://sureforms.com/" msgstr "https://sureforms.com/" -#: admin/admin.php:1165 -#: admin/admin.php:1166 +#: admin/admin.php:1211 +#: admin/admin.php:1212 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -59,9 +59,9 @@ msgstr "https://sureforms.com/" msgid "Dashboard" msgstr "Armaturenbrett" -#: admin/admin.php:1183 -#: admin/admin.php:1184 -#: admin/admin.php:1616 +#: admin/admin.php:1229 +#: admin/admin.php:1230 +#: admin/admin.php:1662 #: inc/compatibility/multilingual/string-collector.php:236 #: inc/compatibility/multilingual/string-collector.php:245 #: inc/compatibility/multilingual/string-collector.php:313 @@ -79,15 +79,15 @@ msgstr "Armaturenbrett" msgid "Settings" msgstr "Einstellungen" -#: admin/admin.php:1452 -#: admin/admin.php:1453 +#: admin/admin.php:1498 +#: admin/admin.php:1499 #: inc/post-types.php:270 msgid "New Form" msgstr "Neues Formular" -#: admin/admin.php:1461 -#: admin/admin.php:1462 -#: admin/admin.php:3340 +#: admin/admin.php:1507 +#: admin/admin.php:1508 +#: admin/admin.php:3504 #: inc/generate-form-markup.php:211 #: inc/generate-form-markup.php:224 #: inc/global-settings/email-summary.php:225 @@ -105,7 +105,7 @@ msgid "Entries" msgstr "Einträge" #. Translators: Post Title. -#: admin/admin.php:1704 +#: admin/admin.php:1750 #, php-format msgid "Edit %1$s" msgstr "%1$s bearbeiten" @@ -118,7 +118,7 @@ msgstr "%1$s bearbeiten" #: inc/duplicate-form.php:191 #: inc/export.php:126 #: inc/export.php:184 -#: inc/forms-data.php:88 +#: inc/forms-data.php:108 #: inc/global-settings/global-settings.php:89 #: inc/global-settings/global-settings.php:639 #: inc/rest-api.php:203 @@ -126,18 +126,18 @@ msgid "Nonce verification failed." msgstr "Überprüfung des Nonce ist fehlgeschlagen." #. translators: %1$s: Opening anchor tag with URL, %2$s: Closing anchor tag, %3$s: SureForms Pro Plugin Name. -#: admin/admin.php:2572 +#: admin/admin.php:2626 #, php-format msgid "Please %1$sactivate%2$s your copy of %3$s to get new features, access support, receive update notifications, and more." msgstr "Bitte %1$saktivieren%2$s Sie Ihre Kopie von %3$s, um neue Funktionen zu erhalten, Support zu nutzen, Update-Benachrichtigungen zu erhalten und mehr." #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version, %4$s: Anchor tag open, %5$s: Closing anchor tag. -#: admin/admin.php:2590 +#: admin/admin.php:2644 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version from %4$shere%5$s." msgstr "SureForms %1$s erfordert mindestens %2$s %3$s, um ordnungsgemäß zu funktionieren. Bitte aktualisieren Sie auf die neueste Version von %4$shier%5$s." -#: admin/admin.php:3339 +#: admin/admin.php:3503 #: inc/global-settings/email-summary.php:224 #: assets/build/entries.js:172 #: assets/build/payments.js:172 @@ -207,7 +207,7 @@ msgstr "Müll" msgid "Published" msgstr "Veröffentlicht" -#: admin/admin.php:3331 +#: admin/admin.php:3495 msgid "View" msgstr "Ansehen" @@ -299,11 +299,11 @@ msgstr "Kein Plugin angegeben" msgid "Plugin Successfully Activated" msgstr "Plugin erfolgreich aktiviert" -#: admin/admin.php:1780 +#: admin/admin.php:1834 msgid "Activating..." msgstr "Aktivieren..." -#: admin/admin.php:1781 +#: admin/admin.php:1835 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/formEditor.js:172 @@ -318,17 +318,17 @@ msgstr "Aktivieren..." msgid "Activated" msgstr "Aktiviert" -#: admin/admin.php:1782 +#: admin/admin.php:1836 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Activate" msgstr "Aktivieren" -#: admin/admin.php:1783 +#: admin/admin.php:1837 msgid "Installing..." msgstr "Installation läuft..." -#: admin/admin.php:1784 +#: admin/admin.php:1838 msgid "Installed" msgstr "Installiert" @@ -336,12 +336,13 @@ msgstr "Installiert" msgid "You do not have permission to access this page." msgstr "Sie haben keine Berechtigung, auf diese Seite zuzugreifen." -#: admin/admin.php:2784 -#: admin/admin.php:2912 -#: admin/admin.php:2950 -#: admin/admin.php:2971 -#: admin/admin.php:3294 -#: admin/admin.php:3601 +#: admin/admin.php:2874 +#: admin/admin.php:2917 +#: admin/admin.php:3076 +#: admin/admin.php:3114 +#: admin/admin.php:3135 +#: admin/admin.php:3458 +#: admin/admin.php:3847 #: inc/admin-ajax.php:164 #: inc/payments/admin/admin-handler.php:638 #: inc/payments/stripe/admin-stripe-handler.php:80 @@ -354,7 +355,7 @@ msgid "Form ID is required." msgstr "Formular-ID ist erforderlich." #: inc/admin-ajax.php:184 -#: inc/form-submit.php:1153 +#: inc/form-submit.php:1261 msgid "Invalid form ID." msgstr "Ungültige Formular-ID." @@ -593,28 +594,28 @@ msgstr "Telefon" msgid "Textarea" msgstr "Textbereich" -#: inc/form-submit.php:231 +#: inc/form-submit.php:281 msgid "Cloudflare Turnstile secret key is invalid." msgstr "Der geheime Schlüssel von Cloudflare Turnstile ist ungültig." -#: inc/form-submit.php:238 +#: inc/form-submit.php:288 msgid "Cloudflare Turnstile response is missing." msgstr "Cloudflare Turnstile-Antwort fehlt." -#: inc/form-submit.php:282 +#: inc/form-submit.php:332 msgid "hCaptcha secret key is invalid." msgstr "Der hCaptcha-Geheimschlüssel ist ungültig." -#: inc/form-submit.php:289 +#: inc/form-submit.php:339 msgid "hCaptcha response is missing." msgstr "hCaptcha-Antwort fehlt." -#: inc/form-submit.php:330 -#: inc/form-submit.php:589 +#: inc/form-submit.php:380 +#: inc/form-submit.php:639 msgid "Form data is not found." msgstr "Formulardaten wurden nicht gefunden." -#: inc/forms-data.php:68 +#: inc/forms-data.php:88 msgid "Sorry, you are not allowed to view the form." msgstr "Entschuldigung, Sie dürfen das Formular nicht ansehen." @@ -724,7 +725,7 @@ msgstr "Formular bearbeiten" msgid "Edit" msgstr "Bearbeiten" -#: admin/admin.php:3072 +#: admin/admin.php:3236 #: inc/page-builders/elementor/form-widget.php:346 #: assets/build/dashboard.js:2 msgid "Create New Form" @@ -761,8 +762,8 @@ msgstr "Formular anzeigen" msgid "View Forms" msgstr "Formulare anzeigen" -#: admin/admin.php:1443 -#: admin/admin.php:1444 +#: admin/admin.php:1489 +#: admin/admin.php:1490 #: inc/post-types.php:274 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -8276,7 +8277,7 @@ msgstr "Sozial" msgid "Travel" msgstr "Reise" -#: inc/helper.php:2375 +#: inc/helper.php:2368 msgid "Blank Form" msgstr "Leeres Formular" @@ -8595,7 +8596,9 @@ msgstr "Bitte fügen Sie eine Option props zu MultiButtonsControl hinzu" msgid "Icon Library" msgstr "Icon-Bibliothek" +#: admin/admin.php:4062 #: assets/build/blocks.js:172 +#: assets/build/dashboard.js:172 #: modules/gutenberg/build/blocks.js:4 msgid "Close" msgstr "Schließen" @@ -8884,9 +8887,9 @@ msgstr "Blöcke zur Schnellzugriffsleiste hinzufügen" msgid "Re-arrange block inside Quick Action Bar" msgstr "Block im Schnellaktionsbereich neu anordnen" -#: admin/admin.php:1236 -#: admin/admin.php:1237 -#: admin/admin.php:4129 +#: admin/admin.php:1282 +#: admin/admin.php:1283 +#: admin/admin.php:4737 #: assets/build/blocks.js:172 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -9259,7 +9262,7 @@ msgstr "Zentrum" msgid "Right" msgstr "Richtig" -#: inc/form-submit.php:1344 +#: inc/form-submit.php:1452 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Google reCAPTCHA" @@ -9269,7 +9272,7 @@ msgstr "Google reCAPTCHA" msgid "CloudFlare Turnstile" msgstr "CloudFlare Turnstile" -#: inc/form-submit.php:1348 +#: inc/form-submit.php:1456 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "hCaptcha" @@ -9551,7 +9554,7 @@ msgstr "Standortschlüssel" msgid "Secret Key" msgstr "Geheimer Schlüssel" -#: inc/form-submit.php:1352 +#: inc/form-submit.php:1460 #: assets/build/settings.js:172 msgid "Cloudflare Turnstile" msgstr "Cloudflare-Drehkreuz" @@ -9576,7 +9579,8 @@ msgstr "Jetzt verbinden" msgid "Authentication Failed" msgstr "Authentifizierung fehlgeschlagen" -#: admin/admin.php:3516 +#: admin/admin.php:4061 +#: assets/build/dashboard.js:172 #: assets/build/templatePicker.js:172 msgid "Contact Support" msgstr "Support kontaktieren" @@ -10510,7 +10514,7 @@ msgstr "Fügen Sie Ihrer Website atemberaubende anpassbare Symbole hinzu." msgid "icon" msgstr "Symbol" -#: admin/admin.php:2639 +#: admin/admin.php:2693 msgid "Rate SureForms" msgstr "Bewerten Sie SureForms" @@ -10566,18 +10570,18 @@ msgstr "Notiz hinzufügen entsperren" msgid "With the SureForms Starter plan, enhance your submitted form entries by adding personalized notes for better clarity and tracking." msgstr "Mit dem SureForms Starter-Plan verbessern Sie Ihre eingereichten Formulareinträge, indem Sie personalisierte Notizen für bessere Klarheit und Nachverfolgung hinzufügen." -#: inc/form-submit.php:990 +#: inc/form-submit.php:1046 msgid "Email notification passed to the sending server" msgstr "E-Mail-Benachrichtigung an den sendenden Server übermittelt" #. translators: Here, %s is the comma separated emails list. -#: inc/form-submit.php:1063 +#: inc/form-submit.php:1130 #, php-format msgid "Email notification recipient: %s" msgstr "E-Mail-Benachrichtigungsempfänger: %s" #. translators: Here, %1$s is the comma separated emails list and %2$s is error report ( if any ). -#: inc/form-submit.php:1080 +#: inc/form-submit.php:1147 #, php-format msgid "Email server was unable to send the email notification. Recipient: %1$s. Reason: %2$s" msgstr "E-Mail-Server konnte die E-Mail-Benachrichtigung nicht senden. Empfänger: %1$s. Grund: %2$s" @@ -10620,7 +10624,7 @@ msgstr "Konversationelle Formulare freischalten" msgid "With the SureForms Pro Plan, you can transform your forms into engaging conversational layouts for a seamless user experience." msgstr "Mit dem SureForms Pro Plan können Sie Ihre Formulare in ansprechende, dialogorientierte Layouts verwandeln, um ein nahtloses Benutzererlebnis zu schaffen." -#: admin/admin.php:1075 +#: admin/admin.php:1121 msgid "Get SureForms Pro" msgstr "Holen Sie sich SureForms Pro" @@ -10832,24 +10836,24 @@ msgstr "Gradient auswählen" msgid "reCAPTCHA" msgstr "reCAPTCHA" -#: inc/form-submit.php:1288 +#: inc/form-submit.php:1396 msgid "Captcha validation failed. No error code provided." msgstr "Captcha-Überprüfung fehlgeschlagen. Kein Fehlercode angegeben." -#: inc/form-submit.php:1289 +#: inc/form-submit.php:1397 msgid "Captcha validation failed." msgstr "Captcha-Überprüfung fehlgeschlagen." -#: inc/form-submit.php:1356 +#: inc/form-submit.php:1464 msgid "Unknown Captcha" msgstr "Unbekanntes Captcha" -#: inc/form-submit.php:1357 +#: inc/form-submit.php:1465 msgid "Invalid captcha type." msgstr "Ungültiger Captcha-Typ." #. translators: %s is the captcha title. -#: inc/form-submit.php:1370 +#: inc/form-submit.php:1478 #, php-format msgid "%s verification failed. Please contact your site administrator." msgstr "%s-Verifizierung fehlgeschlagen. Bitte wenden Sie sich an Ihren Website-Administrator." @@ -11246,8 +11250,8 @@ msgstr "Beschreiben Sie das Formular, das Sie erstellen möchten" msgid "We are building your form…" msgstr "Wir erstellen Ihr Formular…" -#: admin/admin.php:1351 -#: admin/admin.php:1352 +#: admin/admin.php:1397 +#: admin/admin.php:1398 msgid "SMTP" msgstr "SMTP" @@ -11379,31 +11383,32 @@ msgstr "Admin-Benachrichtigung aktivieren" msgid "Admin notifications keep you informed about new form entries since your last visit." msgstr "Admin-Benachrichtigungen halten Sie über neue Formulareinträge seit Ihrem letzten Besuch auf dem Laufenden." -#: admin/admin.php:2789 -#: admin/admin.php:2908 -#: admin/admin.php:2946 -#: admin/admin.php:2967 -#: admin/admin.php:3298 -#: admin/admin.php:3596 +#: admin/admin.php:2869 +#: admin/admin.php:2922 +#: admin/admin.php:3072 +#: admin/admin.php:3110 +#: admin/admin.php:3131 +#: admin/admin.php:3462 +#: admin/admin.php:3842 msgid "Unauthorized user." msgstr "Unbefugter Benutzer." #. translators: 1: opening span, 2: opening strong (inline), 3: closing strong, 4: closing span, 5: opening strong (block), 6: closing strong -#: admin/admin.php:2917 +#: admin/admin.php:3081 #, php-format msgid "%1$sGet started by %2$sbuilding your first form%3$s.%4$s%5$sExperience the power of our intuitive AI Form Builder%6$s" msgstr "%1$sBeginnen Sie damit, %2$sIhr erstes Formular zu erstellen%3$s.%4$s%5$sErleben Sie die Leistungsfähigkeit unseres intuitiven KI-Formularerstellers%6$s" -#: admin/admin.php:2928 +#: admin/admin.php:3092 msgid "SureForms is waiting for you!" msgstr "SureForms wartet auf Sie!" -#: admin/admin.php:2930 +#: admin/admin.php:3094 msgid "Build My First Form" msgstr "Erstelle mein erstes Formular" -#: admin/admin.php:2931 -#: admin/admin.php:3418 +#: admin/admin.php:3095 +#: admin/admin.php:3650 msgid "Dismiss" msgstr "Verwerfen" @@ -11423,51 +11428,51 @@ msgstr "Anmelden" msgid "Register" msgstr "Registrieren" -#: admin/admin.php:3327 +#: admin/admin.php:3491 msgid "Recent Entries" msgstr "Neueste Einträge" -#: admin/admin.php:3328 +#: admin/admin.php:3492 msgid "( Last 7 days )" msgstr "( Letzte 7 Tage )" -#: admin/admin.php:4070 +#: admin/admin.php:4678 msgid "Use Conditional Logic to show only what matters" msgstr "Verwenden Sie bedingte Logik, um nur das Wichtige anzuzeigen" -#: admin/admin.php:4071 +#: admin/admin.php:4679 msgid "Split your form into steps to keep it easy" msgstr "Teilen Sie Ihr Formular in Schritte auf, um es einfach zu halten." -#: admin/admin.php:4072 +#: admin/admin.php:4680 msgid "Let people upload files directly to your form" msgstr "Lassen Sie Personen Dateien direkt in Ihr Formular hochladen" -#: admin/admin.php:4073 +#: admin/admin.php:4681 msgid "Turn responses into downloadable PDFs automatically" msgstr "Antworten automatisch in herunterladbare PDFs umwandeln" -#: admin/admin.php:4074 +#: admin/admin.php:4682 msgid "Let users sign with a simple signature field" msgstr "Lassen Sie Benutzer mit einem einfachen Unterschriftsfeld unterschreiben" -#: admin/admin.php:4075 +#: admin/admin.php:4683 msgid "Connect your form to other tools using webhooks" msgstr "Verbinden Sie Ihr Formular mit anderen Tools über Webhooks" -#: admin/admin.php:4076 +#: admin/admin.php:4684 msgid "Use Conversational Forms for a chat-like experience" msgstr "Verwenden Sie Konversationsformulare für ein chatähnliches Erlebnis" -#: admin/admin.php:4077 +#: admin/admin.php:4685 msgid "Let users register or log in through your form" msgstr "Lassen Sie Benutzer sich über Ihr Formular registrieren oder anmelden" -#: admin/admin.php:4078 +#: admin/admin.php:4686 msgid "Build forms that create WordPress user accounts" msgstr "Erstellen Sie Formulare, die WordPress-Benutzerkonten erstellen" -#: admin/admin.php:4079 +#: admin/admin.php:4687 msgid "Add calculations to auto-total scores or prices" msgstr "Berechnungen hinzufügen, um die Punktzahlen oder Preise automatisch zu summieren" @@ -11666,6 +11671,7 @@ msgstr "Erhalten Sie mehr Kontrolle, schnellere Arbeitsabläufe und tiefere Anpa msgid "Selected features require %1$s - use code %2$s to get 10% off on any plan." msgstr "Ausgewählte Funktionen erfordern %1$s - verwenden Sie den Code %2$s, um 10 % Rabatt auf jeden Plan zu erhalten." +#: admin/admin.php:4060 #: assets/build/dashboard.js:172 msgid "Copied" msgstr "Kopiert" @@ -11889,7 +11895,7 @@ msgstr "Erkunde SureDash" msgid "Something went wrong. We have logged the error for further investigation" msgstr "Etwas ist schiefgelaufen. Wir haben den Fehler zur weiteren Untersuchung protokolliert." -#: inc/field-validation.php:413 +#: inc/field-validation.php:452 msgid "Field is not valid." msgstr "Feld ist nicht gültig." @@ -11957,8 +11963,8 @@ msgstr "SureForms Video-Miniaturansicht" msgid "Expected format for emails - email@sureforms.com or John Doe " msgstr "Erwartetes Format für E-Mails - email@sureforms.com oder John Doe " -#: admin/admin.php:1471 -#: admin/admin.php:1472 +#: admin/admin.php:1517 +#: admin/admin.php:1518 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -12173,7 +12179,7 @@ msgstr "Verbessern Sie Ihr SEO und steigen Sie mühelos in den Suchergebnissen a msgid "Boost your website's visibility with smart SEO automation. Optimize content, track keyword performance, and get actionable insights, all inside WordPress." msgstr "Steigern Sie die Sichtbarkeit Ihrer Website mit intelligenter SEO-Automatisierung. Optimieren Sie Inhalte, verfolgen Sie die Leistung von Schlüsselwörtern und erhalten Sie umsetzbare Einblicke, alles innerhalb von WordPress." -#: inc/form-submit.php:129 +#: inc/form-submit.php:174 #: inc/form-views.php:205 #: inc/payments/admin/admin-handler.php:99 #: inc/payments/admin/admin-handler.php:183 @@ -15372,12 +15378,12 @@ msgid "Stripe Settings" msgstr "Stripe-Einstellungen" #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version. -#: admin/admin.php:2281 +#: admin/admin.php:2335 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version." msgstr "SureForms %1$s erfordert mindestens %2$s %3$s, um ordnungsgemäß zu funktionieren. Bitte aktualisieren Sie auf die neueste Version." -#: admin/admin.php:2294 +#: admin/admin.php:2348 msgid "Update Now" msgstr "Jetzt aktualisieren" @@ -15425,8 +15431,8 @@ msgstr "Position des Währungszeichens" msgid "Select the position of the currency symbol relative to the amount." msgstr "Wählen Sie die Position des Währungssymbols relativ zum Betrag aus." -#: admin/admin.php:1414 -#: admin/admin.php:1415 +#: admin/admin.php:1460 +#: admin/admin.php:1461 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -15440,41 +15446,41 @@ msgstr "Wählen Sie die Position des Währungssymbols relativ zum Betrag aus." msgid "Learn" msgstr "Lernen" -#: admin/admin.php:2635 +#: admin/admin.php:2689 msgid "Amazing! SureForms is powering your forms and submissions - let's keep growing together!" msgstr "Erstaunlich! SureForms treibt Ihre Formulare und Einsendungen an - lassen Sie uns gemeinsam weiter wachsen!" -#: admin/admin.php:2636 +#: admin/admin.php:2690 msgid "If SureForms has been helpful, would you mind taking a moment to leave a 5-star review on WordPress.org?" msgstr "Wenn SureForms hilfreich war, würden Sie sich einen Moment Zeit nehmen, um eine 5-Sterne-Bewertung auf WordPress.org zu hinterlassen?" -#: admin/admin.php:2647 -#: admin/admin.php:2711 +#: admin/admin.php:2701 +#: admin/admin.php:2765 msgid "Maybe later" msgstr "Vielleicht später" -#: admin/admin.php:2653 +#: admin/admin.php:2707 msgid "I already did" msgstr "Ich habe es bereits getan" -#: admin/admin.php:2702 +#: admin/admin.php:2756 msgid "SureForms is ready to power your forms — explore what's possible!" msgstr "SureForms ist bereit, Ihre Formulare zu unterstützen — entdecken Sie, was möglich ist!" -#: admin/admin.php:2703 +#: admin/admin.php:2757 msgid "Manage your forms, track submissions, and discover features like AI Form Builder, payment integrations, and more from the SureForms dashboard." msgstr "Verwalten Sie Ihre Formulare, verfolgen Sie Einsendungen und entdecken Sie Funktionen wie den AI Form Builder, Zahlungsintegrationen und mehr im SureForms-Dashboard." -#: admin/admin.php:2706 +#: admin/admin.php:2760 msgid "Go to Dashboard" msgstr "Zum Dashboard gehen" -#: admin/admin.php:2717 +#: admin/admin.php:2771 msgid "I already know" msgstr "Ich weiß schon" -#: admin/admin.php:2833 -#: admin/admin.php:3608 +#: admin/admin.php:2981 +#: admin/admin.php:3854 msgid "Invalid parameters." msgstr "Ungültige Parameter." @@ -15858,10 +15864,10 @@ msgid "This form is not yet available. Check back after the scheduled start time msgstr "Dieses Formular ist noch nicht verfügbar. Schauen Sie nach der geplanten Startzeit wieder vorbei." #: inc/admin/html-form-detector.php:268 -#: inc/form-submit.php:197 -#: inc/form-submit.php:503 -#: inc/form-submit.php:548 -#: inc/form-submit.php:1149 +#: inc/form-submit.php:247 +#: inc/form-submit.php:553 +#: inc/form-submit.php:598 +#: inc/form-submit.php:1257 #: inc/migrator/bootstrap.php:357 #: inc/payments/front-end.php:79 #: inc/payments/front-end.php:265 @@ -15884,48 +15890,48 @@ msgstr "Dieses Formular ist noch nicht verfügbar. Schauen Sie nach der geplante msgid "Security verification failed. Please refresh the page and try again." msgstr "Sicherheitsüberprüfung fehlgeschlagen. Bitte aktualisieren Sie die Seite und versuchen Sie es erneut." -#: inc/form-submit.php:582 +#: inc/form-submit.php:632 msgid "Form data was not found." msgstr "Formulardaten wurden nicht gefunden." -#: inc/form-submit.php:336 +#: inc/form-submit.php:386 msgid "Form ID is missing." msgstr "Formular-ID fehlt." -#: inc/form-submit.php:213 +#: inc/form-submit.php:263 msgid "Sorry, you do not have permission to access this resource." msgstr "Entschuldigung, Sie haben keine Berechtigung, auf diese Ressource zuzugreifen." -#: inc/form-submit.php:368 +#: inc/form-submit.php:418 msgid "You do not have permission to submit this form." msgstr "Sie haben keine Berechtigung, dieses Formular einzureichen." -#: inc/form-submit.php:378 +#: inc/form-submit.php:428 msgid "This form is no longer available." msgstr "Dieses Formular ist nicht mehr verfügbar." -#: inc/form-submit.php:396 +#: inc/form-submit.php:446 msgid "Please check the form for errors." msgstr "Bitte überprüfen Sie das Formular auf Fehler." -#: inc/form-submit.php:523 -#: inc/form-submit.php:564 +#: inc/form-submit.php:573 +#: inc/form-submit.php:614 msgid "Your submission was flagged as spam. Please try again." msgstr "Ihre Einsendung wurde als Spam markiert. Bitte versuchen Sie es erneut." -#: inc/form-submit.php:818 +#: inc/form-submit.php:868 msgid "Unable to submit form. Please try again." msgstr "Formular kann nicht übermittelt werden. Bitte versuchen Sie es erneut." -#: inc/form-submit.php:1070 +#: inc/form-submit.php:1137 msgid "No SMTP plugin detected. Please configure an SMTP plugin to enable email sending." msgstr "Kein SMTP-Plugin erkannt. Bitte konfigurieren Sie ein SMTP-Plugin, um das Senden von E-Mails zu ermöglichen." -#: inc/form-submit.php:1071 +#: inc/form-submit.php:1138 msgid "Email sending failed for an unknown reason." msgstr "Das Senden der E-Mail ist aus einem unbekannten Grund fehlgeschlagen." -#: inc/form-submit.php:1124 +#: inc/form-submit.php:1201 msgid "No emails were sent." msgstr "Es wurden keine E-Mails gesendet." @@ -16438,7 +16444,7 @@ msgid "Duplicate form?" msgstr "Formular duplizieren?" #: assets/build/formSubmit.js:2 -#: assets/js/unminified/form-submit.js:917 +#: assets/js/unminified/form-submit.js:938 msgid "An error occurred while submitting your form. Please try again." msgstr "Beim Absenden Ihres Formulars ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut." @@ -16815,28 +16821,28 @@ msgstr "Webhook-Geheimnis nicht konfiguriert." msgid "Invalid webhook signature." msgstr "Ungültige Webhook-Signatur." -#: admin/admin.php:1253 -#: admin/admin.php:1851 +#: admin/admin.php:1299 +#: admin/admin.php:1905 #: assets/build/formEditor.js:172 msgid "Quizzes" msgstr "Quizze" -#: admin/admin.php:1252 +#: admin/admin.php:1298 msgid "Quiz Entries" msgstr "Quiz-Einträge" -#: admin/admin.php:1255 -#: admin/admin.php:1288 -#: admin/admin.php:1321 +#: admin/admin.php:1301 +#: admin/admin.php:1334 +#: admin/admin.php:1367 #: assets/build/settings.js:172 msgid "New" msgstr "Neu" -#: inc/form-submit.php:1158 +#: inc/form-submit.php:1266 msgid "Invalid form." msgstr "Ungültiges Formular." -#: inc/form-submit.php:1163 +#: inc/form-submit.php:1271 msgid "Too many requests. Please try again shortly." msgstr "Zu viele Anfragen. Bitte versuchen Sie es in Kürze erneut." @@ -17345,9 +17351,9 @@ msgstr "Perfekt für Bildung, Schulungen und unterhaltsame Quizfragen" msgid "Select this to create a quiz with scored questions and graded results." msgstr "Wählen Sie dies, um ein Quiz mit bewerteten Fragen und benoteten Ergebnissen zu erstellen." -#: admin/admin.php:1285 -#: admin/admin.php:1286 -#: admin/admin.php:1856 +#: admin/admin.php:1331 +#: admin/admin.php:1332 +#: admin/admin.php:1910 msgid "Survey Reports" msgstr "Umfrageberichte" @@ -17753,7 +17759,7 @@ msgid "Error creating SureForms Form." msgstr "Fehler beim Erstellen des SureForms-Formulars." #. translators: %s represents the minimum number of characters required -#: inc/field-validation.php:426 +#: inc/field-validation.php:465 #: inc/translatable.php:94 #, php-format msgid "Please enter at least %s characters." @@ -17911,9 +17917,9 @@ msgstr "Die KI-Antwort war leer. Bitte verfeinern Sie Ihre Eingabeaufforderung u msgid "Unable to build form fields from the AI response." msgstr "Formularfelder können nicht aus der KI-Antwort erstellt werden." -#: admin/admin.php:1318 -#: admin/admin.php:1319 -#: admin/admin.php:1861 +#: admin/admin.php:1364 +#: admin/admin.php:1365 +#: admin/admin.php:1915 msgid "Partial Entries" msgstr "Teilweise Einträge" @@ -18784,23 +18790,23 @@ msgstr "Der Zahlungsbetrag konnte für dieses Formular nicht verifiziert werden. msgid "Cancellation is not supported for this payment gateway." msgstr "Eine Stornierung wird für dieses Zahlungs-Gateway nicht unterstützt." -#: admin/admin.php:3039 +#: admin/admin.php:3203 msgid "SureForms AI Quick Draft" msgstr "SureForms AI Schnellentwurf" -#: admin/admin.php:3058 +#: admin/admin.php:3222 msgid "Describe the form and let SureForms AI generate it for you." msgstr "Beschreiben Sie das Formular und lassen Sie SureForms AI es für Sie erstellen." -#: admin/admin.php:3061 +#: admin/admin.php:3225 msgid "Describe your form" msgstr "Beschreiben Sie Ihr Formular" -#: admin/admin.php:3068 +#: admin/admin.php:3232 msgid "Example: Create a contact form with name, email, phone, and message fields." msgstr "Beispiel: Erstellen Sie ein Kontaktformular mit Feldern für Name, E-Mail, Telefon und Nachricht." -#: admin/admin.php:3109 +#: admin/admin.php:3273 msgid "Redirecting..." msgstr "Weiterleitung..." @@ -18813,14 +18819,14 @@ msgid "The prompt is too long. Please shorten it and try again." msgstr "Die Eingabe ist zu lang. Bitte kürzen Sie sie und versuchen Sie es erneut." #. translators: %s: maximum characters allowed before the @ symbol. -#: inc/field-validation.php:448 +#: inc/field-validation.php:487 #: inc/translatable.php:97 #, php-format msgid "The part before @ may not exceed %s characters." msgstr "Der Teil vor dem @ darf %s Zeichen nicht überschreiten." #. translators: %s: maximum characters allowed after the @ symbol. -#: inc/field-validation.php:454 +#: inc/field-validation.php:493 #: inc/translatable.php:100 #, php-format msgid "The part after @ may not exceed %s characters." @@ -18907,74 +18913,74 @@ msgstr "Entschuldigung, Sie dürfen dieses Formular nicht rendern." msgid "This form requires a payment. Please complete the payment and submit again." msgstr "Dieses Formular erfordert eine Zahlung. Bitte führen Sie die Zahlung durch und senden Sie es erneut." -#: admin/admin.php:552 +#: admin/admin.php:598 msgid "You are not allowed to update this prompt." msgstr "Sie dürfen diesen Hinweis nicht aktualisieren." -#: admin/admin.php:595 +#: admin/admin.php:641 msgid "Finish setting up your form" msgstr "Richten Sie Ihr Formular ein" -#: admin/admin.php:627 +#: admin/admin.php:673 msgid "Review or edit your form" msgstr "Überprüfen oder bearbeiten Sie Ihr Formular" -#: admin/admin.php:628 -#: admin/admin.php:3907 +#: admin/admin.php:674 +#: admin/admin.php:4515 msgid "Edit form" msgstr "Formular bearbeiten" -#: admin/admin.php:633 +#: admin/admin.php:679 msgid "Personalize the Thank You message" msgstr "Personalisieren Sie die Dankesnachricht" -#: admin/admin.php:634 +#: admin/admin.php:680 msgid "Edit message" msgstr "Nachricht bearbeiten" -#: admin/admin.php:639 +#: admin/admin.php:685 msgid "Choose who gets notified of new replies" msgstr "Wählen Sie aus, wer über neue Antworten benachrichtigt wird" -#: admin/admin.php:640 +#: admin/admin.php:686 msgid "Set up email" msgstr "E-Mail einrichten" -#: admin/admin.php:648 +#: admin/admin.php:694 msgid "your form" msgstr "Ihr Formular" #. translators: %s: form title. -#: admin/admin.php:651 +#: admin/admin.php:697 #, php-format msgid "Finish setting up %s" msgstr "Richten Sie %s ein" #. translators: %s: form title. -#: admin/admin.php:659 +#: admin/admin.php:705 #, php-format msgid "View %s (opens in a new tab)" msgstr "%s anzeigen (öffnet in einem neuen Tab)" -#: admin/admin.php:664 +#: admin/admin.php:710 msgid "Customize your form to get it ready for real submissions:" msgstr "Passen Sie Ihr Formular an, um es für echte Einreichungen vorzubereiten:" -#: admin/admin.php:3896 +#: admin/admin.php:4504 msgid "We’ve already created this form for you. Finish customising it so it’s ready to collect real submissions." msgstr "Wir haben dieses Formular bereits für Sie erstellt. Passen Sie es an, damit es bereit ist, echte Einreichungen zu sammeln." #. translators: %s: form name. -#: admin/admin.php:3901 +#: admin/admin.php:4509 #, php-format msgid "Finish setting up “%s”" msgstr "Richten Sie „%s“ ein" -#: admin/admin.php:3914 +#: admin/admin.php:4522 msgid "Edit the Thank You message" msgstr "Bearbeiten Sie die Dankesnachricht" -#: admin/admin.php:3920 +#: admin/admin.php:4528 msgid "Set where replies go" msgstr "Legen Sie fest, wohin die Antworten gehen" @@ -19002,123 +19008,90 @@ msgstr "Bitte wählen Sie eine Bilddatei aus." msgid "This form could not be submitted. Please refresh the page and try again." msgstr "Dieses Formular konnte nicht übermittelt werden. Bitte aktualisieren Sie die Seite und versuchen Sie es erneut." -#: admin/admin.php:2341 -#: admin/admin.php:2430 +#: admin/admin.php:2395 +#: admin/admin.php:2484 msgid "Your SureForms database is up to date. New form entries will be saved as usual." msgstr "Ihre SureForms-Datenbank ist auf dem neuesten Stand. Neue Formulareinträge werden wie gewohnt gespeichert." -#: admin/admin.php:2355 -#: admin/admin.php:2439 +#: admin/admin.php:2409 +#: admin/admin.php:2493 #: inc/rest-api.php:1447 msgid "SureForms could not finish updating the database. Your hosting may not allow SureForms to create database tables — please contact your hosting provider or SureForms support." msgstr "SureForms konnte die Datenbankaktualisierung nicht abschließen. Ihr Hosting erlaubt möglicherweise nicht, dass SureForms Datenbanktabellen erstellt — bitte kontaktieren Sie Ihren Hosting-Anbieter oder den SureForms-Support." -#: admin/admin.php:2358 +#: admin/admin.php:2412 msgid "Contact support" msgstr "Support kontaktieren" -#: admin/admin.php:2378 +#: admin/admin.php:2432 msgid "Database update needed" msgstr "Datenbankaktualisierung erforderlich" -#: admin/admin.php:2384 +#: admin/admin.php:2438 msgid "Fix now" msgstr "Jetzt beheben" -#: admin/admin.php:2453 +#: admin/admin.php:2507 msgid "SureForms — database update needed" msgstr "SureForms — Datenbankaktualisierung erforderlich" -#: admin/admin.php:2458 +#: admin/admin.php:2512 msgid "Update database" msgstr "Datenbank aktualisieren" -#: admin/admin.php:2478 +#: admin/admin.php:2532 msgid "You do not have permission to update the database." msgstr "Sie haben keine Berechtigung, die Datenbank zu aktualisieren." -#: admin/admin.php:3437 +#: admin/admin.php:3669 msgid "You do not have permission to do this." msgstr "Sie haben keine Berechtigung, dies zu tun." -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:3507 -msgid "%d form submission in a row could not be completed." -msgid_plural "%d form submissions in a row could not be completed." -msgstr[0] "%d aufeinanderfolgende Formulareinreichung konnte nicht abgeschlossen werden." -msgstr[1] "" - -#: admin/admin.php:3515 -msgid "Visitors may be unable to reach you, and those entries were not saved." -msgstr "Besucher können Sie möglicherweise nicht erreichen, und diese Einträge wurden nicht gespeichert." - -#: admin/admin.php:3525 -msgid "Form submissions are completing normally." -msgstr "Formulareinreichungen werden normal abgeschlossen." - -#: admin/admin.php:3539 -msgid "No caching plugin that needs configuring was found." -msgstr "Es wurde kein zu konfigurierendes Caching-Plugin gefunden." - #. translators: %s: caching plugin name. -#: admin/admin.php:3551 +#: admin/admin.php:4209 msgid "%s may interfere with your forms." msgstr "%s kann Ihre Formulare beeinträchtigen." -#: admin/admin.php:3554 -msgid "Caching and JavaScript optimisation can serve a stale copy of your form or load its scripts out of order." -msgstr "Caching und JavaScript-Optimierung können eine veraltete Kopie Ihres Formulars bereitstellen oder dessen Skripte in falscher Reihenfolge laden." - -#: admin/admin.php:3555 +#: admin/admin.php:4185 +#: admin/admin.php:4213 msgid "Help Me Fix" msgstr "Hilfe beim Beheben" -#: admin/admin.php:3650 +#: admin/admin.php:4258 msgid "SureForms found your form entries stored under a different database table prefix. Reconnecting them takes a moment, and your existing entries will be kept." msgstr "SureForms hat Ihre Formulareinträge unter einem anderen Datenbanktabellen-Präfix gefunden. Das Wiederverbinden dauert einen Moment, und Ihre vorhandenen Einträge bleiben erhalten." -#: admin/admin.php:3653 +#: admin/admin.php:4261 msgid "SureForms needs to update your database before it can save new form entries. This only takes a moment and will not change your forms or existing content. Entries submitted before now cannot be recovered from here." msgstr "SureForms muss Ihre Datenbank aktualisieren, bevor es neue Formulareinträge speichern kann. Dies dauert nur einen Moment und ändert weder Ihre Formulare noch vorhandene Inhalte. Vorher eingereichte Einträge können von hier aus nicht wiederhergestellt werden." #. translators: %s: site host. -#: admin/admin.php:4265 +#: admin/admin.php:5032 msgid "SureForms: form submissions are failing on %s" msgstr "SureForms: Formulareinreichungen schlagen auf %s fehl" -#: admin/admin.php:4274 +#: admin/admin.php:4990 msgid "Debug log: no entries recorded." msgstr "Debug-Log: Keine Einträge aufgezeichnet." #. translators: 1: entries shown, 2: entries recorded. -#: admin/admin.php:4278 +#: admin/admin.php:4995 msgid "Debug log (most recent %1$d of %2$d entries)" msgstr "Debug-Log (die neuesten %1$d von %2$d Einträgen)" -#: admin/admin.php:4288 -msgid "Older entries were left out to keep this email within the length a mail client accepts. The full log can be downloaded from SureForms → Settings → General." -msgstr "Ältere Einträge wurden ausgelassen, um diese E-Mail innerhalb der Länge zu halten, die ein E-Mail-Client akzeptiert. Das vollständige Log kann unter SureForms → Einstellungen → Allgemein heruntergeladen werden." - -#: admin/admin.php:4318 +#: admin/admin.php:5158 msgid "Hello SureForms support," msgstr "Hallo SureForms-Support," -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:4322 -msgid "SureForms has recorded %d form submission in a row that could not be completed." -msgid_plural "SureForms has recorded %d form submissions in a row that could not be completed." -msgstr[0] "SureForms hat %d aufeinanderfolgende Formulareinreichung aufgezeichnet, die nicht abgeschlossen werden konnte." -msgstr[1] "" - -#: admin/admin.php:4332 +#: admin/admin.php:5182 msgid "Site details" msgstr "Seiteninformationen" -#: admin/admin.php:4335 +#: admin/admin.php:5185 msgid "not active" msgstr "nicht aktiv" -#: admin/admin.php:4338 +#: admin/admin.php:5188 msgid "none detected" msgstr "keine erkannt" @@ -19126,7 +19099,7 @@ msgstr "keine erkannt" msgid "No form submission failures have been recorded." msgstr "Es wurden keine Formulareinreichungsfehler aufgezeichnet." -#: inc/form-submit.php:118 +#: inc/form-submit.php:163 msgid "Not found." msgstr "Nicht gefunden." @@ -19211,6 +19184,193 @@ msgstr "Formularansichten & Konversion" msgid "Logs" msgstr "Protokolle" +#: admin/admin.php:2831 +msgid "Previous notice" +msgstr "Vorherige Mitteilung" + +#: admin/admin.php:2832 +msgid "Next notice" +msgstr "Nächste Mitteilung" + +#. translators: 1: current position, 2: total notices. +#: admin/admin.php:2834 +msgid "%1$d of %2$d" +msgstr "%1$d von %2$d" + +#: admin/admin.php:2891 +msgid "Nothing to report." +msgstr "Nichts zu berichten." + +#: admin/admin.php:4057 +#: assets/build/dashboard.js:172 +msgid "Details" +msgstr "Details" + +#: admin/admin.php:4058 +msgid "What we recorded about this problem. Copy it into your support request so we can start from the cause rather than a description of it." +msgstr "Was wir über dieses Problem aufgezeichnet haben. Kopieren Sie es in Ihre Supportanfrage, damit wir von der Ursache ausgehen können, anstatt von einer Beschreibung." + +#: admin/admin.php:4059 +#: assets/build/dashboard.js:172 +msgid "Copy details" +msgstr "Details kopieren" + +#: admin/admin.php:4068 +msgid "Copy the details first, so you have them to paste." +msgstr "Kopieren Sie zuerst die Details, damit Sie sie einfügen können." + +#: admin/admin.php:4072 +msgid "Copied. Contact Support is now available." +msgstr "Kopiert. Kontakt zum Support ist jetzt verfügbar." + +#: admin/admin.php:4073 +msgid "Your browser would not let us copy. Select the text above and copy it by hand." +msgstr "Ihr Browser hat uns nicht kopieren lassen. Wählen Sie den obigen Text aus und kopieren Sie ihn manuell." + +#: admin/admin.php:4076 +msgid "Recorded diagnostics" +msgstr "Aufgezeichnete Diagnosen" + +#: admin/admin.php:4080 +msgid "Collecting the details…" +msgstr "Details werden gesammelt…" + +#: admin/admin.php:4081 +msgid "We could not collect the details. Contact Support and describe what happened, and we will take it from there." +msgstr "Wir konnten die Details nicht sammeln. Kontaktieren Sie den Support und beschreiben Sie, was passiert ist, und wir kümmern uns darum." + +#. translators: %s: form title. +#: admin/admin.php:4108 +msgid "We noticed a form submission failure on %s." +msgstr "Wir haben einen Fehler bei der Formularübermittlung auf %s festgestellt." + +#: admin/admin.php:4109 +msgid "We noticed a form submission failure." +msgstr "Wir haben einen Fehler bei der Formularübermittlung festgestellt." + +#: admin/admin.php:4110 +msgid "Visitors may not be able to reach you, and their entries were not saved." +msgstr "Besucher können Sie möglicherweise nicht erreichen, und ihre Eingaben wurden nicht gespeichert." + +#. translators: %s: form title. +#: admin/admin.php:4115 +msgid "We noticed a notification failure on %s." +msgstr "Wir haben einen Benachrichtigungsfehler auf %s festgestellt." + +#: admin/admin.php:4116 +msgid "We noticed a notification failure." +msgstr "Wir haben einen Benachrichtigungsfehler festgestellt." + +#: admin/admin.php:4117 +msgid "The entry was saved, but we could not send the email about it. New entries may be coming in without you knowing." +msgstr "Der Eintrag wurde gespeichert, aber wir konnten die E-Mail darüber nicht senden. Neue Einträge könnten eingehen, ohne dass Sie es wissen." + +#. translators: %s: form title. +#: admin/admin.php:4132 +msgid "We noticed an integration failure on %s." +msgstr "Wir haben einen Integrationsfehler auf %s festgestellt." + +#: admin/admin.php:4133 +msgid "We noticed an integration failure." +msgstr "Wir haben einen Integrationsfehler festgestellt." + +#: admin/admin.php:4134 +msgid "The entry was saved, but we could not send it to a connected service." +msgstr "Der Eintrag wurde gespeichert, aber wir konnten ihn nicht an einen verbundenen Dienst senden." + +#: admin/admin.php:4158 +msgid "View details" +msgstr "Details anzeigen" + +#: admin/admin.php:4212 +msgid "Caching can show visitors an old copy of your form, or load its scripts in the wrong order." +msgstr "Caching kann Besuchern eine alte Kopie Ihres Formulars anzeigen oder seine Skripte in der falschen Reihenfolge laden." + +#: admin/admin.php:5005 +msgid "Older entries were left out to keep this excerpt readable. The full log can be downloaded from SureForms → Settings → General." +msgstr "Ältere Einträge wurden ausgelassen, um diesen Auszug lesbar zu halten. Das vollständige Protokoll kann von SureForms → Einstellungen → Allgemein heruntergeladen werden." + +#. translators: %s: site host. +#: admin/admin.php:5034 +msgid "SureForms has recorded form submissions on %s that could not be completed." +msgstr "SureForms hat Formularübermittlungen auf %s aufgezeichnet, die nicht abgeschlossen werden konnten." + +#. translators: %s: site host. +#: admin/admin.php:5038 +msgid "SureForms: notification emails are not being sent on %s" +msgstr "SureForms: Benachrichtigungs-E-Mails werden auf %s nicht gesendet" + +#. translators: %s: site host. +#: admin/admin.php:5040 +msgid "SureForms saved entries on %s but could not send the notification emails for them." +msgstr "SureForms hat Einträge auf %s gespeichert, konnte jedoch die Benachrichtigungs-E-Mails dafür nicht senden." + +#. translators: %s: site host. +#: admin/admin.php:5044 +msgid "SureForms: an integration is not receiving entries on %s" +msgstr "SureForms: eine Integration empfängt keine Einträge auf %s" + +#. translators: %s: site host. +#: admin/admin.php:5046 +msgid "SureForms saved entries on %s but could not pass them to a connected service." +msgstr "SureForms hat Einträge auf %s gespeichert, konnte sie jedoch nicht an einen verbundenen Dienst übermitteln." + +#. translators: %s: site host. +#: admin/admin.php:5056 +msgid "SureForms: a problem with the forms on %s" +msgstr "SureForms: ein Problem mit den Formularen auf %s" + +#. translators: %s: site host. +#: admin/admin.php:5058 +msgid "SureForms has recorded a problem with the forms on %s." +msgstr "SureForms hat ein Problem mit den Formularen auf %s aufgezeichnet." + +#. translators: %d: number of failed submissions. +#: admin/admin.php:5083 +msgid "SureForms has recorded %d form submission that could not be completed." +msgid_plural "SureForms has recorded %d form submissions that could not be completed." +msgstr[0] "SureForms hat %d Formularübermittlung aufgezeichnet, die nicht abgeschlossen werden konnte." +msgstr[1] "" + +#. translators: %d: number of failed notifications. +#: admin/admin.php:5095 +msgid "SureForms saved %d entry but could not send the notification email for it." +msgid_plural "SureForms saved %d entries but could not send the notification emails for them." +msgstr[0] "SureForms hat %d Eintrag gespeichert, konnte jedoch die Benachrichtigungs-E-Mail dafür nicht senden." +msgstr[1] "" + +#. translators: %d: number of failed integration hand-offs. +#: admin/admin.php:5107 +msgid "SureForms saved %d entry but could not pass it to a connected service." +msgid_plural "SureForms saved %d entries but could not pass them to a connected service." +msgstr[0] "SureForms hat %d Eintrag gespeichert, konnte ihn jedoch nicht an einen verbundenen Dienst übermitteln." +msgstr[1] "" + +#. translators: %d: number of recorded problems. +#: admin/admin.php:5119 +msgid "SureForms has recorded %d problem with the forms on this site." +msgid_plural "SureForms has recorded %d problems with the forms on this site." +msgstr[0] "SureForms hat %d Problem mit den Formularen auf dieser Seite aufgezeichnet." +msgstr[1] "" + +#. translators: %s: form title. +#: admin/admin.php:5169 +msgid "Form: %s" +msgstr "Formular: %s" + +#: admin/admin.php:5189 +msgid "none recorded" +msgstr "keine aufgezeichnet" + +#. translators: %s: date and time of the previous report, in the site's timezone. +#: admin/admin.php:5212 +msgid "Previously reported: %s" +msgstr "Zuvor gemeldet: %s" + +#: assets/build/settings.js:172 +msgid "Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures." +msgstr "Ansichten und Übermittlungen von Personen, die die Seite bearbeiten können, werden normalerweise ausgelassen, damit das Testen Ihrer eigenen Formulare diese Zahlen nicht verändert." + #: inc/post-types.php:265 msgctxt "post type general name" msgid "Forms" diff --git a/languages/sureforms-es_ES-51635fe6489fc8288d603fe596c755ca.json b/languages/sureforms-es_ES-51635fe6489fc8288d603fe596c755ca.json index 6b8761b34..fce740b2b 100644 --- a/languages/sureforms-es_ES-51635fe6489fc8288d603fe596c755ca.json +++ b/languages/sureforms-es_ES-51635fe6489fc8288d603fe596c755ca.json @@ -1 +1 @@ -{"translation-revision-date":"2024-12-13T16:34:28+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Tablero"],"Settings":["Configuraciones"],"Entries":["Entradas"],"Status":["Estado"],"Form":["Formulario"],"Activated":["Activado"],"Activate":["Activar"],"Address":["Direcci\u00f3n"],"Checkbox":["Casilla de verificaci\u00f3n"],"Dropdown":["Desplegable"],"Email":["Correo electr\u00f3nico"],"Number":["N\u00famero"],"Phone":["Tel\u00e9fono"],"Textarea":["\u00c1rea de texto"],"Monday":["Lunes"],"Forms":["Formularios"],"New Form Submission - %s":["Nueva presentaci\u00f3n de formulario - %s"],"GitHub":["GitHub"],"(no title)":["(sin t\u00edtulo)"],"General":["General"],"No tags available":["No hay etiquetas disponibles"],"Back":["Atr\u00e1s"],"Generic tags":["Etiquetas gen\u00e9ricas"],"Other":["Otro"],"Confirm":["Confirmar"],"Cancel":["Cancelar"],"Install":["Instalar"],"Plugin Installation failed, Please try again later.":["La instalaci\u00f3n del complemento fall\u00f3, por favor intente de nuevo m\u00e1s tarde."],"Plugin activation failed, Please try again later.":["La activaci\u00f3n del complemento fall\u00f3, por favor intente de nuevo m\u00e1s tarde."],"Integrations":["Integraciones"],"What's New?":["\u00bfQu\u00e9 hay de nuevo?"],"Core":["N\u00facleo"],"Unlicensed":["Sin licencia"],"Connecting\u2026":["Conectando\u2026"],"Install & Activate":["Instalar y activar"],"Compliance Settings":["Configuraci\u00f3n de Cumplimiento"],"Enable GDPR Compliance":["Habilitar el cumplimiento del RGPD"],"Never store entry data after form submission":["Nunca almacenes los datos de entrada despu\u00e9s de enviar el formulario"],"When enabled this form will never store Entries.":["Cuando est\u00e9 habilitado, este formulario nunca almacenar\u00e1 entradas."],"Automatically delete entries":["Eliminar autom\u00e1ticamente las entradas"],"When enabled this form will automatically delete entries after a certain period of time.":["Cuando est\u00e9 habilitado, este formulario eliminar\u00e1 autom\u00e1ticamente las entradas despu\u00e9s de un cierto per\u00edodo de tiempo."],"Entries older than the days set will be deleted automatically.":["Las entradas m\u00e1s antiguas que los d\u00edas establecidos se eliminar\u00e1n autom\u00e1ticamente."],"Visual":["Visual"],"HTML":["HTML"],"All Data":["Todos los datos"],"Add Shortcode":["Agregar c\u00f3digo corto"],"Form input tags":["Etiquetas de entrada de formulario"],"Comma separated values are also accepted.":["Tambi\u00e9n se aceptan valores separados por comas."],"Email Notification":["Notificaci\u00f3n de correo electr\u00f3nico"],"Name":["Nombre"],"Send Email To":["Enviar correo electr\u00f3nico a"],"Subject":["Asunto"],"CC":["CC"],"BCC":["BCC"],"Reply To":["Responder a"],"Add Key":["Agregar clave"],"Add Value":["A\u00f1adir valor"],"Add":["A\u00f1adir"],"Confirmation Message":["Mensaje de confirmaci\u00f3n"],"After Form Submission":["Despu\u00e9s del env\u00edo del formulario"],"Hide Form":["Ocultar formulario"],"Reset Form":["Restablecer formulario"],"Custom URL":["URL personalizada"],"Add Query Parameters":["Agregar par\u00e1metros de consulta"],"Select if you want to add key-value pairs for form fields to include in query parameters":["Seleccione si desea agregar pares clave-valor para los campos del formulario que se incluir\u00e1n en los par\u00e1metros de consulta"],"Query Parameters":["Par\u00e1metros de consulta"],"Success Message":["Mensaje de \u00e9xito"],"Redirect":["Redirigir"],"Redirect to":["Redirigir a"],"Page":["P\u00e1gina"],"Form Confirmation":["Confirmaci\u00f3n de formulario"],"Confirmation Type":["Tipo de confirmaci\u00f3n"],"Clear":["Claro"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Invisible"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Validaciones"],"Spam Protection":["Protecci\u00f3n contra el spam"],"Email Summaries":["Res\u00famenes de correo electr\u00f3nico"],"Tuesday":["Martes"],"Wednesday":["Mi\u00e9rcoles"],"Thursday":["Jueves"],"Friday":["Viernes"],"Saturday":["S\u00e1bado"],"Sunday":["Domingo"],"Test Email":["Correo de prueba"],"Schedule Reports":["Programar informes"],"IP Logging":["Registro de IP"],"If this option is turned on, the user's IP address will be saved with the form data":["Si esta opci\u00f3n est\u00e1 activada, la direcci\u00f3n IP del usuario se guardar\u00e1 con los datos del formulario"],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s representa las selecciones m\u00ednimas necesarias. Por ejemplo: \u201cSe requieren un m\u00ednimo de 2 selecciones.\u201d"],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s representa el m\u00e1ximo de selecciones permitidas. Por ejemplo: \u201cSe permiten un m\u00e1ximo de 4 selecciones.\u201d"],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s representa las opciones m\u00ednimas necesarias. Por ejemplo: \"Se requiere un m\u00ednimo de 1 selecci\u00f3n.\""],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s representa las opciones m\u00e1ximas permitidas. Por ejemplo: \"Se permiten un m\u00e1ximo de 3 selecciones.\""]," Error Message":["Mensaje de error"],"Auto":["Auto"],"Light":["Luz"],"Dark":["Oscuro"],"Turnstile":["Torniquete"],"Honeypot":["Honeypot"],"Get Keys":["Obtener llaves"],"Documentation":["Documentaci\u00f3n"],"Site Key":["Clave del sitio"],"Secret Key":["Clave secreta"],"Cloudflare Turnstile":["Cloudflare Turnstile"],"Appearance Mode":["Modo de apariencia"],"Enable Honeypot Security":["Habilitar la seguridad Honeypot"],"Enable Honeypot Security for better spam protection":["Habilitar la seguridad Honeypot para una mejor protecci\u00f3n contra el spam"],"Text":["Texto"],"Confirmation Email Mismatch Message":["Mensaje de discrepancia de correo electr\u00f3nico de confirmaci\u00f3n"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s representa el valor m\u00ednimo de entrada. Por ejemplo: \"El valor m\u00ednimo es 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s representa el valor m\u00e1ximo de entrada. Por ejemplo: \"El valor m\u00e1ximo es 100.\""],"OttoKit":["OttoKit"],"Connect with OttoKit":["Con\u00e9ctate con OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["La direcci\u00f3n de 'Correo Electr\u00f3nico del Remitente' actual no coincide con el nombre de dominio de su sitio web (%1$s). Esto puede hacer que sus correos electr\u00f3nicos de notificaci\u00f3n sean bloqueados o marcados como spam. Alternativamente, intente usar una direcci\u00f3n de remitente que coincida con el dominio de su sitio web (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["La direcci\u00f3n de 'Correo Electr\u00f3nico del Remitente' actual no coincide con el nombre de dominio de su sitio web (%s). Esto puede hacer que sus correos electr\u00f3nicos de notificaci\u00f3n sean bloqueados o marcados como spam."],"We strongly recommend that you install the free ":["Recomendamos encarecidamente que instale el gratuito"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["\u00a1Complemento! El asistente de configuraci\u00f3n facilita la correcci\u00f3n de tus correos electr\u00f3nicos."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Alternativamente, intenta usar una direcci\u00f3n de remitente que coincida con el dominio de tu sitio web (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Por favor, introduce una direcci\u00f3n de correo electr\u00f3nico v\u00e1lida. Tus notificaciones no se enviar\u00e1n si el campo no est\u00e1 rellenado correctamente."],"From Name":["De Nombre"],"From Email":["De correo electr\u00f3nico"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["La direcci\u00f3n de 'Correo Electr\u00f3nico del Remitente' actual puede no coincidir con el nombre de dominio de su sitio web (%1$s). Esto puede hacer que sus correos electr\u00f3nicos de notificaci\u00f3n sean bloqueados o marcados como spam. Alternativamente, intente usar una Direcci\u00f3n del Remitente que coincida con el dominio de su sitio web (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["La direcci\u00f3n de 'Correo Electr\u00f3nico del Remitente' actual puede no coincidir con el nombre de dominio de su sitio web (%s). Esto puede hacer que sus correos electr\u00f3nicos de notificaci\u00f3n sean bloqueados o marcados como spam."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["\u00bfListo para ir m\u00e1s all\u00e1 del plan gratuito?"],"Upgrade now":["Actualiza ahora"],"and unlock the full power of SureForms!":["y desbloquea todo el poder de SureForms!"],"Upgrade SureForms":["Actualizar SureForms"],"Upgrade Now":["Actualiza ahora"],"Entries older than the selected days will be deleted.":["Las entradas anteriores a los d\u00edas seleccionados ser\u00e1n eliminadas."],"Entries Time Period":["Per\u00edodo de tiempo de las entradas"],"Notifications can use only one From Email so please enter a single address.":["Las notificaciones solo pueden usar un \u00fanico correo electr\u00f3nico de origen, as\u00ed que por favor ingrese una sola direcci\u00f3n."],"Select Page to redirect":["Seleccionar p\u00e1gina para redirigir"],"Search for a page":["Buscar una p\u00e1gina"],"Select a page":["Selecciona una p\u00e1gina"],"Form Validation":["Validaci\u00f3n de formulario"],"Required Error Messages":["Mensajes de error requeridos"],"Other Error Messages":["Otros mensajes de error"],"Input Field Unique":["Campo de entrada \u00fanico"],"Email Field Unique":["Campo de correo electr\u00f3nico \u00fanico"],"Invalid URL":["URL no v\u00e1lida"],"Phone Field Unique":["Campo de Tel\u00e9fono \u00danico"],"Invalid Field Number Block":["Bloque de N\u00famero de Campo Inv\u00e1lido"],"Invalid Email":["Correo electr\u00f3nico no v\u00e1lido"],"Number Minimum Value":["Valor M\u00ednimo del N\u00famero"],"Number Maximum Value":["Valor M\u00e1ximo del N\u00famero"],"Dropdown Minimum Selections":["M\u00ednimo de selecciones en el men\u00fa desplegable"],"Dropdown Maximum Selections":["Selecciones M\u00e1ximas del Desplegable"],"Multiple Choice Minimum Selections":["M\u00faltiples opciones de selecci\u00f3n m\u00ednima"],"Multiple Choice Maximum Selections":["Selecciones M\u00faltiples de Opci\u00f3n M\u00faltiple"],"Input Field":["Campo de entrada"],"Email Field":["Campo de correo electr\u00f3nico"],"URL Field":["Campo de URL"],"Phone Field":["Campo de Tel\u00e9fono"],"Textarea Field":["Campo de \u00e1rea de texto"],"Checkbox Field":["Campo de casilla de verificaci\u00f3n"],"Dropdown Field":["Campo desplegable"],"Multiple Choice Field":["Campo de opci\u00f3n m\u00faltiple"],"Address Field":["Campo de direcci\u00f3n"],"Number Field":["Campo num\u00e9rico"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Para habilitar la funci\u00f3n reCAPTCHA en sus SureForms, por favor habilite la opci\u00f3n reCAPTCHA en la configuraci\u00f3n de sus bloques y seleccione la versi\u00f3n. Agregue aqu\u00ed la clave secreta y la clave del sitio de Google reCAPTCHA. reCAPTCHA se a\u00f1adir\u00e1 a su p\u00e1gina en el front-end."],"Enter your %s here":["Introduce tu %s aqu\u00ed"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Para habilitar hCAPTCHA, por favor a\u00f1ade tu clave del sitio y clave secreta. Configura estos ajustes dentro del formulario individual."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Para habilitar Cloudflare Turnstile, por favor a\u00f1ade tu clave de sitio y clave secreta. Configura estos ajustes dentro del formulario individual."],"Save":["Guardar"],"Anonymous Analytics":["Anal\u00edtica An\u00f3nima"],"Learn More":["Aprende m\u00e1s"],"Admin Notification":["Notificaci\u00f3n de administrador"],"Enable Admin Notification":["Habilitar notificaci\u00f3n de administrador"],"Admin notifications keep you informed about new form entries since your last visit.":["Las notificaciones de administrador te mantienen informado sobre nuevas entradas de formularios desde tu \u00faltima visita."],"Skip":["Omitir"],"Continue":["Continuar"],"Maximum Number of Entries":["N\u00famero m\u00e1ximo de entradas"],"Maximum Entries":["Entradas M\u00e1ximas"],"Response Description After Maximum Entries":["Descripci\u00f3n de la respuesta despu\u00e9s del m\u00e1ximo de entradas"],"Get Started":["Comenzar"],"Integration":["Integraci\u00f3n"],"Connect Native Integrations with SureForms":["Conecta integraciones nativas con SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Desbloquea potentes integraciones en el plan Premium para automatizar tus flujos de trabajo y conectar SureForms directamente con tus herramientas favoritas."],"Send form submissions straight to CRMs, email, and marketing platforms":["Env\u00eda las presentaciones de formularios directamente a los CRM, correo electr\u00f3nico y plataformas de marketing"],"Automate repetitive tasks with seamless data syncing":["Automatiza tareas repetitivas con una sincronizaci\u00f3n de datos sin problemas"],"Access exclusive native integrations for faster workflows":["Accede a integraciones nativas exclusivas para flujos de trabajo m\u00e1s r\u00e1pidos"],"Expected format for emails - email@sureforms.com or John Doe ":["Formato esperado para correos electr\u00f3nicos: email@sureforms.com o John Doe "],"Payments":["Pagos"],"Stripe account disconnected successfully.":["Cuenta de Stripe desconectada con \u00e9xito."],"Failed to create webhook.":["Error al crear el webhook."],"Failed to connect to Stripe.":["Error al conectar con Stripe."],"Webhook":["Webhook"],"Knowledge Base":["Base de Conocimientos"],"What\u2019s New":["Qu\u00e9 hay de nuevo"],"out of":["fuera de"],"No entries found":["No se encontraron entradas"],"delete":["eliminar"],"Please type \"%s\" in the input box":["Por favor, escribe \"%s\" en el cuadro de entrada"],"To confirm, type \"%s\" in the box below:":["Para confirmar, escriba \"%s\" en el cuadro de abajo:"],"Type \"%s\"":["Escribe \"%s\""],"Go to OttoKit Settings":["Ve a la configuraci\u00f3n de OttoKit"],"USD - US Dollar":["USD - D\u00f3lar estadounidense"],"Payment Mode":["Modo de pago"],"Test Mode":["Modo de prueba"],"Live Mode":["Modo en vivo"],"Action":["Acci\u00f3n"],"General Settings":["Configuraci\u00f3n general"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Configure res\u00famenes de correo electr\u00f3nico, alertas de administrador y preferencias de datos para gestionar tus formularios con facilidad."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Personaliza los mensajes de error predeterminados que se muestran cuando los usuarios env\u00edan entradas de formulario inv\u00e1lidas o incompletas."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Habilita la protecci\u00f3n contra spam para tus formularios utilizando servicios CAPTCHA o seguridad honeypot."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Conecta y gestiona tus pasarelas de pago para aceptar transacciones de forma segura a trav\u00e9s de tus formularios."],"1% transaction and payment gateway fees apply.":["Se aplican tarifas del 1% por transacciones y pasarelas de pago."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["Se aplican tarifas de transacci\u00f3n y de pasarela de pago del 2.9%. Activa la licencia para reducir las tarifas de transacci\u00f3n."],"2.9% transaction and payment gateway fees apply.":["Se aplican tarifas del 2.9% por transacciones y pasarelas de pago."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Por favor, visita %1$s, elimina un webhook no utilizado, luego haz clic abajo para reintentar."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms no pudo crear un webhook porque tu cuenta de Stripe se ha quedado sin espacios libres. Los webhooks son necesarios para recibir actualizaciones sobre los pagos."],"Stripe Dashboard":["Panel de control de Stripe"],"Creating\u2026":["Creando\u2026"],"Create Webhook":["Crear Webhook"],"Successfully connected to Stripe!":["\u00a1Conectado exitosamente a Stripe!"],"Invalid response from server. Please try again.":["Respuesta inv\u00e1lida del servidor. Por favor, int\u00e9ntelo de nuevo."],"Failed to disconnect Stripe account.":["Error al desconectar la cuenta de Stripe."],"Webhook created successfully!":["\u00a1Webhook creado con \u00e9xito!"],"Select Currency":["Seleccionar moneda"],"Select the default currency for payment forms.":["Seleccione la moneda predeterminada para los formularios de pago."],"Connection Status":["Estado de la conexi\u00f3n"],"Disconnect Stripe Account":["Desconectar cuenta de Stripe"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["\u00bfEst\u00e1 seguro de que desea desconectar su cuenta de Stripe? Esto detendr\u00e1 todos los pagos activos, suscripciones y transacciones de formularios conectados a esta cuenta."],"Disconnect":["Desconectar"],"Disconnecting\u2026":["Desconectando\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook conectado con \u00e9xito, todos los eventos de Stripe est\u00e1n siendo rastreados."],"Connect your Stripe account to start accepting payments through your forms.":["Conecta tu cuenta de Stripe para comenzar a aceptar pagos a trav\u00e9s de tus formularios."],"Connect to Stripe":["Conectar a Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Con\u00e9ctate de forma segura a Stripe con solo unos clics para comenzar a aceptar pagos."],"Set the total number of submissions allowed for this form.":["Establezca el n\u00famero total de env\u00edos permitidos para este formulario."],"Payment Methods":["M\u00e9todos de pago"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["El modo de prueba te permite procesar pagos sin cargos reales. Cambia al modo en vivo para transacciones reales."],"General Payment Settings":["Configuraci\u00f3n General de Pagos"],"These settings apply to all payment gateways.":["Estos ajustes se aplican a todas las pasarelas de pago."],"Stripe Settings":["Configuraci\u00f3n de Stripe"],"Left ($100)":["Izquierda ($100)"],"Right (100$)":["Correcto (100$)"],"Left Space ($ 100)":["Espacio Izquierdo ($ 100)"],"Right Space (100 $)":["Espacio Derecho (100 $)"],"Currency Sign Position":["Posici\u00f3n del signo de moneda"],"Select the position of the currency symbol relative to the amount.":["Seleccione la posici\u00f3n del s\u00edmbolo de moneda en relaci\u00f3n con la cantidad."],"Learn":["Aprender"],"Enable email summaries":["Habilitar res\u00famenes de correo electr\u00f3nico"],"Enable IP logging":["Habilitar el registro de IP"],"Turn on Admin Notification from here.":["Activa la notificaci\u00f3n de administrador desde aqu\u00ed."],"New":["Nuevo"],"Send entries to 100+ popular apps.":["Env\u00eda entradas a m\u00e1s de 100 aplicaciones populares."],"Build automated workflows that run instantly.":["Crea flujos de trabajo automatizados que se ejecutan al instante."],"Create custom app integrations using our Custom App feature.":["Crea integraciones de aplicaciones personalizadas utilizando nuestra funci\u00f3n de Aplicaci\u00f3n Personalizada."],"Keep your tools in sync automatically.":["Mant\u00e9n tus herramientas sincronizadas autom\u00e1ticamente."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Esto instalar\u00e1 y activar\u00e1 OttoKit en su sitio de WordPress para habilitar funciones de automatizaci\u00f3n."],"Automate Your Forms with OttoKit":["Automatiza tus formularios con OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Cada env\u00edo de formulario deber\u00eda activar algo: una alerta de Slack, un cliente potencial en el CRM, un correo electr\u00f3nico de seguimiento o una nueva fila en Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Configura los permisos del cliente de IA y la configuraci\u00f3n del servidor MCP."],"View documentation":["Ver documentaci\u00f3n"],"Copy to clipboard":["Copiar al portapapeles"],"Claude Desktop":["Escritorio Claude"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) o %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["C\u00f3digo Claude"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (proyecto) o ~\/.claude.json (global)"],"Cursor":["Cursor"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (proyecto) o settings.json > mcp.servers (global)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml o config.json"],"Your client's MCP configuration file":["El archivo de configuraci\u00f3n MCP de su cliente"],"Connect Your AI Client":["Conecta tu cliente de IA"],"AI Client":["Cliente de IA"],"Create an Application Password \u2014 ":["Crear una Contrase\u00f1a de Aplicaci\u00f3n \u2014"],"Open Application Passwords":["Abrir contrase\u00f1as de aplicaciones"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["O utiliza este comando CLI para a\u00f1adir el servidor r\u00e1pidamente (a\u00fan necesitar\u00e1s configurar las variables de entorno):"],"Copy the JSON config below into: ":["Copie la configuraci\u00f3n JSON a continuaci\u00f3n en:"],"Replace \"your-application-password\" with the password from Step 1.":["Reemplace \"your-application-password\" con la contrase\u00f1a del Paso 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 el punto final MCP de tu sitio. WP_API_USERNAME \u2014 tu nombre de usuario de WordPress. WP_API_PASSWORD \u2014 la contrase\u00f1a de la aplicaci\u00f3n que generaste."],"View setup docs":["Ver documentos de configuraci\u00f3n"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["El complemento MCP Adapter est\u00e1 instalado pero no activo. Act\u00edvalo para configurar los ajustes de MCP."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["El complemento MCP Adapter es necesario para conectar clientes de IA a tus formularios. Desc\u00e1rgalo e inst\u00e1lalo desde GitHub, luego act\u00edvalo."],"Download the latest release from":["Descarga la \u00faltima versi\u00f3n desde"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Instala el complemento a trav\u00e9s de Complementos > A\u00f1adir nuevo complemento > Subir complemento."],"Activate the MCP Adapter plugin.":["Activa el complemento del adaptador MCP."],"Activating\u2026":["Activando\u2026"],"Activate MCP Adapter":["Activar adaptador MCP"],"Download MCP Adapter":["Descargar el adaptador MCP"],"Experimental":["Experimental"],"Enable Abilities":["Habilitar habilidades"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Registra las habilidades de SureForms con la API de Habilidades de WordPress. Cuando est\u00e1 habilitado, los clientes de IA pueden listar, leer, crear, editar y eliminar tus formularios y entradas. Cuando est\u00e1 deshabilitado, no se registran habilidades y los clientes de IA no pueden realizar ninguna acci\u00f3n en tus formularios."],"Abilities API \u2014 Edit":["API de habilidades \u2014 Editar"],"Enable Edit Abilities":["Habilitar habilidades de edici\u00f3n"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Cuando est\u00e1 habilitado, los clientes de IA pueden crear nuevos formularios, actualizar t\u00edtulos de formularios, campos y configuraciones, duplicar formularios y modificar los estados de las entradas. Cuando est\u00e1 deshabilitado, estas habilidades se desregistran y los clientes de IA solo pueden leer sus datos."],"Abilities API \u2014 Delete":["API de habilidades \u2014 Eliminar"],"Enable Delete Abilities":["Habilitar habilidades de eliminaci\u00f3n"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Cuando est\u00e1 habilitado, los clientes de IA pueden eliminar permanentemente formularios y entradas. Los datos eliminados no se pueden recuperar. Cuando est\u00e1 deshabilitado, las capacidades de eliminaci\u00f3n se desregistran y los clientes de IA no pueden eliminar ning\u00fan dato."],"MCP Server":["Servidor MCP"],"Enable MCP Server":["Habilitar servidor MCP"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Crea un punto final dedicado de SureForms MCP al que los clientes de IA como Claude pueden conectarse. Cuando est\u00e1 deshabilitado, el punto final se elimina y los clientes de IA externos no pueden descubrir ni llamar a ninguna capacidad de SureForms."],"Learn more":["Aprende m\u00e1s"],"MCP Adapter Required":["Adaptador MCP Requerido"],"Heading 1":["Encabezado 1"],"Heading 2":["Encabezado 2"],"Heading 3":["Encabezado 3"],"Heading 4":["Encabezado 4"],"Heading 5":["Encabezado 5"],"Heading 6":["Encabezado 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Configura la clave de la API de Google Maps para la autocompletaci\u00f3n de direcciones y la vista previa del mapa."],"Help shape the future of SureForms":["Ayuda a dar forma al futuro de SureForms"],"Enable Google Address Autocomplete":["Habilitar la autocompletar de direcciones de Google"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Actualiza al Plan de Negocios de SureForms para agregar la autocompletaci\u00f3n de direcciones impulsada por Google con vista previa de mapa interactivo a tus formularios."],"Auto-suggest addresses as users type for faster, error-free submissions":["Sugerir direcciones autom\u00e1ticamente mientras los usuarios escriben para env\u00edos m\u00e1s r\u00e1pidos y sin errores"],"Show an interactive map preview with draggable pin for precise locations":["Muestra una vista previa de mapa interactivo con un marcador arrastrable para ubicaciones precisas"],"Automatically populate address fields like city, state, and postal code":["Rellenar autom\u00e1ticamente campos de direcci\u00f3n como ciudad, estado y c\u00f3digo postal"],"This form is now closed as we've received all the entries.":["Este formulario est\u00e1 ahora cerrado ya que hemos recibido todas las inscripciones."],"Thank you for contacting us! We will be in touch with you shortly.":["\u00a1Gracias por contactarnos! Nos pondremos en contacto contigo en breve."],"Saving\u2026":["Guardando\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Cuando est\u00e9 habilitado, este formulario no almacenar\u00e1 la IP del usuario, el nombre del navegador ni el nombre del dispositivo en las entradas."],"Form data":["Datos del formulario"],"Unsaved changes":["Cambios no guardados"],"Keep editing":["Sigue editando"],"Global Defaults":["Valores predeterminados globales"],"Form Restrictions":["Restricciones del formulario"],"Configure default settings that apply to newly created forms.":["Configurar los ajustes predeterminados que se aplican a los formularios reci\u00e9n creados."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Recopila informaci\u00f3n no sensible de tu sitio web, como la versi\u00f3n de PHP y las caracter\u00edsticas utilizadas, para ayudarnos a corregir errores m\u00e1s r\u00e1pido, tomar decisiones m\u00e1s inteligentes y desarrollar funciones que realmente te importen."],"Failed to load pages. Please refresh and try again.":["Error al cargar las p\u00e1ginas. Por favor, actualice e intente de nuevo."],"Failed to load settings. Please refresh and try again.":["Error al cargar la configuraci\u00f3n. Por favor, actualice e intente de nuevo."],"Form Validation fields cannot be left blank.":["Los campos de validaci\u00f3n de formularios no pueden dejarse en blanco."],"Recipient email is required when email summaries are enabled.":["Se requiere el correo electr\u00f3nico del destinatario cuando los res\u00famenes de correo electr\u00f3nico est\u00e1n habilitados."],"Please enter a valid recipient email.":["Por favor, introduce un correo electr\u00f3nico de destinatario v\u00e1lido."],"Settings saved.":["Configuraciones guardadas."],"Failed to save settings.":["Error al guardar la configuraci\u00f3n."],"Some settings failed to save. Please retry.":["Algunas configuraciones no se pudieron guardar. Por favor, int\u00e9ntalo de nuevo."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Algunos campos tienen cambios no guardados. Des\u00e9chelos para continuar, o permanezca para guardar sus ediciones."],"Discard & switch":["Descartar y cambiar"],"Import":["Importar"],"Migration":["Migraci\u00f3n"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importa formularios de Contact Form 7, WPForms, Gravity Forms y otros plugins en SureForms."],"Could not generate the import preview.":["No se pudo generar la vista previa de importaci\u00f3n."],"Import failed. Please try again or check your error logs.":["La importaci\u00f3n fall\u00f3. Por favor, int\u00e9ntelo de nuevo o revise sus registros de errores."],"Go back":["Regresar"],"Update & import":["Actualizar e importar"],"Confirm & import":["Confirmar e importar"],"Form #%s":["Formulario n.\u00ba %s"],"%d field will import":["Se importar\u00e1 %d campo"],"Some fields can't be migrated yet":["Algunos campos no se pueden migrar todav\u00eda"],"These fields will be skipped - add them manually after the form is created:":["Estos campos se omitir\u00e1n; agr\u00e9guelos manualmente despu\u00e9s de crear el formulario:"],"Some forms could not be parsed":["Algunos formularios no se pudieron analizar"],"Update existing":["Actualizar existente"],"Create a new copy":["Crear una nueva copia"],"Could not load forms for this source.":["No se pudieron cargar los formularios para esta fuente."],"(untitled form)":["(formulario sin t\u00edtulo)"],"Previously imported":["Importado previamente"],"Open existing SureForms form in a new tab":["Abrir el formulario SureForms existente en una nueva pesta\u00f1a"],"On re-import":["En la reimportaci\u00f3n"],"No forms found in this plugin.":["No se encontraron formularios en este complemento."],"%1$d of %2$d form selected":["%1$d de %2$d formulario seleccionado"],"Preview update":["Vista previa de la actualizaci\u00f3n"],"Preview import":["Vista previa de la importaci\u00f3n"],"Migration complete":["Migraci\u00f3n completa"],"Nothing was imported":["No se import\u00f3 nada"],"%d form was imported into SureForms.":["%d formulario fue importado a SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["Ninguno de los formularios seleccionados pudo ser migrado. Consulte las advertencias a continuaci\u00f3n para obtener m\u00e1s detalles."],"Imported forms":["Formularios importados"],"Edit in SureForms":["Editar en SureForms"],"Some fields were skipped during import":["Algunos campos se omitieron durante la importaci\u00f3n"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Agrega estos manualmente en el editor de formularios - a\u00fan no tienen un equivalente en SureForms:"],"Some forms failed to import":["Algunos formularios no se pudieron importar"],"Import more forms":["Importar m\u00e1s formularios"],"Could not load the list of importable plugins.":["No se pudo cargar la lista de complementos importables."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["No hay complementos de formularios compatibles activos en este sitio. Activa uno (como Contact Form 7) con al menos un formulario para importarlo en SureForms."],"Plugin":["Complemento"],"%d form":["%d formulario"],"No forms":["No hay formularios"],"Multiple choice":["Opci\u00f3n m\u00faltiple"],"Consent":["Consentimiento"],"The image uploaded but could not be inserted. Please try again.":["La imagen se carg\u00f3 pero no pudo ser insertada. Por favor, int\u00e9ntalo de nuevo."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["La imagen no pudo ser cargada. Puede ser demasiado grande o es posible que no tengas permiso para subir archivos."],"Please choose an image file.":["Por favor, elige un archivo de imagen."],"Show views and conversion rate":["Mostrar vistas y tasa de conversi\u00f3n"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Agrega las columnas de Vistas y Tasa de Conversi\u00f3n a la lista de Formularios. Una vista se cuenta una vez por visita a la p\u00e1gina cuando el formulario aparece en pantalla, y la tasa de conversi\u00f3n es la proporci\u00f3n de esas vistas que terminaron en un env\u00edo. El conteo comienza la primera vez que lo enciende, por lo que los env\u00edos recibidos antes de entonces no se cuentan para la tasa. Apagarlo despu\u00e9s solo oculta las columnas \u2014 el conteo contin\u00faa, por lo que las cifras est\u00e1n actualizadas si lo vuelve a encender."],"Log cleared.":["Registro borrado."],"Could not clear the log.":["No se pudo borrar el registro."],"Enable logs":["Habilitar registros"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Registra los fallos de env\u00edo de formularios reportados por el navegador, para que puedas enviar el registro al soporte en lugar de leer la consola. No se escribe nada mientras tus formularios funcionan, y los valores enviados nunca se almacenan."],"Download log":["Descargar registro"],"Confirm delete":["Confirmar eliminaci\u00f3n"],"Log is full \u2014 download and clear it to keep recording.":["El registro est\u00e1 lleno \u2014 desc\u00e1rgalo y b\u00f3rralo para seguir grabando."],"Form Views & Conversion":["Vistas y Conversi\u00f3n de Formularios"],"Logs":["Registros"],"Quill heading picker: default paragraph style\u0004Normal":["Normal"]}}} \ No newline at end of file +{"translation-revision-date":"2024-12-13T16:34:28+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Tablero"],"Settings":["Configuraciones"],"Entries":["Entradas"],"Status":["Estado"],"Form":["Formulario"],"Activated":["Activado"],"Activate":["Activar"],"Address":["Direcci\u00f3n"],"Checkbox":["Casilla de verificaci\u00f3n"],"Dropdown":["Desplegable"],"Email":["Correo electr\u00f3nico"],"Number":["N\u00famero"],"Phone":["Tel\u00e9fono"],"Textarea":["\u00c1rea de texto"],"Monday":["Lunes"],"Forms":["Formularios"],"New Form Submission - %s":["Nueva presentaci\u00f3n de formulario - %s"],"GitHub":["GitHub"],"(no title)":["(sin t\u00edtulo)"],"General":["General"],"No tags available":["No hay etiquetas disponibles"],"Back":["Atr\u00e1s"],"Generic tags":["Etiquetas gen\u00e9ricas"],"Other":["Otro"],"Confirm":["Confirmar"],"Cancel":["Cancelar"],"Install":["Instalar"],"Plugin Installation failed, Please try again later.":["La instalaci\u00f3n del complemento fall\u00f3, por favor intente de nuevo m\u00e1s tarde."],"Plugin activation failed, Please try again later.":["La activaci\u00f3n del complemento fall\u00f3, por favor intente de nuevo m\u00e1s tarde."],"Integrations":["Integraciones"],"What's New?":["\u00bfQu\u00e9 hay de nuevo?"],"Core":["N\u00facleo"],"Unlicensed":["Sin licencia"],"Connecting\u2026":["Conectando\u2026"],"Install & Activate":["Instalar y activar"],"Compliance Settings":["Configuraci\u00f3n de Cumplimiento"],"Enable GDPR Compliance":["Habilitar el cumplimiento del RGPD"],"Never store entry data after form submission":["Nunca almacenes los datos de entrada despu\u00e9s de enviar el formulario"],"When enabled this form will never store Entries.":["Cuando est\u00e9 habilitado, este formulario nunca almacenar\u00e1 entradas."],"Automatically delete entries":["Eliminar autom\u00e1ticamente las entradas"],"When enabled this form will automatically delete entries after a certain period of time.":["Cuando est\u00e9 habilitado, este formulario eliminar\u00e1 autom\u00e1ticamente las entradas despu\u00e9s de un cierto per\u00edodo de tiempo."],"Entries older than the days set will be deleted automatically.":["Las entradas m\u00e1s antiguas que los d\u00edas establecidos se eliminar\u00e1n autom\u00e1ticamente."],"Visual":["Visual"],"HTML":["HTML"],"All Data":["Todos los datos"],"Add Shortcode":["Agregar c\u00f3digo corto"],"Form input tags":["Etiquetas de entrada de formulario"],"Comma separated values are also accepted.":["Tambi\u00e9n se aceptan valores separados por comas."],"Email Notification":["Notificaci\u00f3n de correo electr\u00f3nico"],"Name":["Nombre"],"Send Email To":["Enviar correo electr\u00f3nico a"],"Subject":["Asunto"],"CC":["CC"],"BCC":["BCC"],"Reply To":["Responder a"],"Add Key":["Agregar clave"],"Add Value":["A\u00f1adir valor"],"Add":["A\u00f1adir"],"Confirmation Message":["Mensaje de confirmaci\u00f3n"],"After Form Submission":["Despu\u00e9s del env\u00edo del formulario"],"Hide Form":["Ocultar formulario"],"Reset Form":["Restablecer formulario"],"Custom URL":["URL personalizada"],"Add Query Parameters":["Agregar par\u00e1metros de consulta"],"Select if you want to add key-value pairs for form fields to include in query parameters":["Seleccione si desea agregar pares clave-valor para los campos del formulario que se incluir\u00e1n en los par\u00e1metros de consulta"],"Query Parameters":["Par\u00e1metros de consulta"],"Success Message":["Mensaje de \u00e9xito"],"Redirect":["Redirigir"],"Redirect to":["Redirigir a"],"Page":["P\u00e1gina"],"Form Confirmation":["Confirmaci\u00f3n de formulario"],"Confirmation Type":["Tipo de confirmaci\u00f3n"],"Clear":["Claro"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Invisible"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Validaciones"],"Spam Protection":["Protecci\u00f3n contra el spam"],"Email Summaries":["Res\u00famenes de correo electr\u00f3nico"],"Tuesday":["Martes"],"Wednesday":["Mi\u00e9rcoles"],"Thursday":["Jueves"],"Friday":["Viernes"],"Saturday":["S\u00e1bado"],"Sunday":["Domingo"],"Test Email":["Correo de prueba"],"Schedule Reports":["Programar informes"],"IP Logging":["Registro de IP"],"If this option is turned on, the user's IP address will be saved with the form data":["Si esta opci\u00f3n est\u00e1 activada, la direcci\u00f3n IP del usuario se guardar\u00e1 con los datos del formulario"],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s representa las selecciones m\u00ednimas necesarias. Por ejemplo: \u201cSe requieren un m\u00ednimo de 2 selecciones.\u201d"],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s representa el m\u00e1ximo de selecciones permitidas. Por ejemplo: \u201cSe permiten un m\u00e1ximo de 4 selecciones.\u201d"],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s representa las opciones m\u00ednimas necesarias. Por ejemplo: \"Se requiere un m\u00ednimo de 1 selecci\u00f3n.\""],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s representa las opciones m\u00e1ximas permitidas. Por ejemplo: \"Se permiten un m\u00e1ximo de 3 selecciones.\""]," Error Message":["Mensaje de error"],"Auto":["Auto"],"Light":["Luz"],"Dark":["Oscuro"],"Turnstile":["Torniquete"],"Honeypot":["Honeypot"],"Get Keys":["Obtener llaves"],"Documentation":["Documentaci\u00f3n"],"Site Key":["Clave del sitio"],"Secret Key":["Clave secreta"],"Cloudflare Turnstile":["Cloudflare Turnstile"],"Appearance Mode":["Modo de apariencia"],"Enable Honeypot Security":["Habilitar la seguridad Honeypot"],"Enable Honeypot Security for better spam protection":["Habilitar la seguridad Honeypot para una mejor protecci\u00f3n contra el spam"],"Text":["Texto"],"Confirmation Email Mismatch Message":["Mensaje de discrepancia de correo electr\u00f3nico de confirmaci\u00f3n"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s representa el valor m\u00ednimo de entrada. Por ejemplo: \"El valor m\u00ednimo es 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s representa el valor m\u00e1ximo de entrada. Por ejemplo: \"El valor m\u00e1ximo es 100.\""],"OttoKit":["OttoKit"],"Connect with OttoKit":["Con\u00e9ctate con OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["La direcci\u00f3n de 'Correo Electr\u00f3nico del Remitente' actual no coincide con el nombre de dominio de su sitio web (%1$s). Esto puede hacer que sus correos electr\u00f3nicos de notificaci\u00f3n sean bloqueados o marcados como spam. Alternativamente, intente usar una direcci\u00f3n de remitente que coincida con el dominio de su sitio web (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["La direcci\u00f3n de 'Correo Electr\u00f3nico del Remitente' actual no coincide con el nombre de dominio de su sitio web (%s). Esto puede hacer que sus correos electr\u00f3nicos de notificaci\u00f3n sean bloqueados o marcados como spam."],"We strongly recommend that you install the free ":["Recomendamos encarecidamente que instale el gratuito"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["\u00a1Complemento! El asistente de configuraci\u00f3n facilita la correcci\u00f3n de tus correos electr\u00f3nicos."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Alternativamente, intenta usar una direcci\u00f3n de remitente que coincida con el dominio de tu sitio web (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Por favor, introduce una direcci\u00f3n de correo electr\u00f3nico v\u00e1lida. Tus notificaciones no se enviar\u00e1n si el campo no est\u00e1 rellenado correctamente."],"From Name":["De Nombre"],"From Email":["De correo electr\u00f3nico"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["La direcci\u00f3n de 'Correo Electr\u00f3nico del Remitente' actual puede no coincidir con el nombre de dominio de su sitio web (%1$s). Esto puede hacer que sus correos electr\u00f3nicos de notificaci\u00f3n sean bloqueados o marcados como spam. Alternativamente, intente usar una Direcci\u00f3n del Remitente que coincida con el dominio de su sitio web (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["La direcci\u00f3n de 'Correo Electr\u00f3nico del Remitente' actual puede no coincidir con el nombre de dominio de su sitio web (%s). Esto puede hacer que sus correos electr\u00f3nicos de notificaci\u00f3n sean bloqueados o marcados como spam."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["\u00bfListo para ir m\u00e1s all\u00e1 del plan gratuito?"],"Upgrade now":["Actualiza ahora"],"and unlock the full power of SureForms!":["y desbloquea todo el poder de SureForms!"],"Upgrade SureForms":["Actualizar SureForms"],"Upgrade Now":["Actualiza ahora"],"Entries older than the selected days will be deleted.":["Las entradas anteriores a los d\u00edas seleccionados ser\u00e1n eliminadas."],"Entries Time Period":["Per\u00edodo de tiempo de las entradas"],"Notifications can use only one From Email so please enter a single address.":["Las notificaciones solo pueden usar un \u00fanico correo electr\u00f3nico de origen, as\u00ed que por favor ingrese una sola direcci\u00f3n."],"Select Page to redirect":["Seleccionar p\u00e1gina para redirigir"],"Search for a page":["Buscar una p\u00e1gina"],"Select a page":["Selecciona una p\u00e1gina"],"Form Validation":["Validaci\u00f3n de formulario"],"Required Error Messages":["Mensajes de error requeridos"],"Other Error Messages":["Otros mensajes de error"],"Input Field Unique":["Campo de entrada \u00fanico"],"Email Field Unique":["Campo de correo electr\u00f3nico \u00fanico"],"Invalid URL":["URL no v\u00e1lida"],"Phone Field Unique":["Campo de Tel\u00e9fono \u00danico"],"Invalid Field Number Block":["Bloque de N\u00famero de Campo Inv\u00e1lido"],"Invalid Email":["Correo electr\u00f3nico no v\u00e1lido"],"Number Minimum Value":["Valor M\u00ednimo del N\u00famero"],"Number Maximum Value":["Valor M\u00e1ximo del N\u00famero"],"Dropdown Minimum Selections":["M\u00ednimo de selecciones en el men\u00fa desplegable"],"Dropdown Maximum Selections":["Selecciones M\u00e1ximas del Desplegable"],"Multiple Choice Minimum Selections":["M\u00faltiples opciones de selecci\u00f3n m\u00ednima"],"Multiple Choice Maximum Selections":["Selecciones M\u00faltiples de Opci\u00f3n M\u00faltiple"],"Input Field":["Campo de entrada"],"Email Field":["Campo de correo electr\u00f3nico"],"URL Field":["Campo de URL"],"Phone Field":["Campo de Tel\u00e9fono"],"Textarea Field":["Campo de \u00e1rea de texto"],"Checkbox Field":["Campo de casilla de verificaci\u00f3n"],"Dropdown Field":["Campo desplegable"],"Multiple Choice Field":["Campo de opci\u00f3n m\u00faltiple"],"Address Field":["Campo de direcci\u00f3n"],"Number Field":["Campo num\u00e9rico"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Para habilitar la funci\u00f3n reCAPTCHA en sus SureForms, por favor habilite la opci\u00f3n reCAPTCHA en la configuraci\u00f3n de sus bloques y seleccione la versi\u00f3n. Agregue aqu\u00ed la clave secreta y la clave del sitio de Google reCAPTCHA. reCAPTCHA se a\u00f1adir\u00e1 a su p\u00e1gina en el front-end."],"Enter your %s here":["Introduce tu %s aqu\u00ed"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Para habilitar hCAPTCHA, por favor a\u00f1ade tu clave del sitio y clave secreta. Configura estos ajustes dentro del formulario individual."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Para habilitar Cloudflare Turnstile, por favor a\u00f1ade tu clave de sitio y clave secreta. Configura estos ajustes dentro del formulario individual."],"Save":["Guardar"],"Anonymous Analytics":["Anal\u00edtica An\u00f3nima"],"Learn More":["Aprende m\u00e1s"],"Admin Notification":["Notificaci\u00f3n de administrador"],"Enable Admin Notification":["Habilitar notificaci\u00f3n de administrador"],"Admin notifications keep you informed about new form entries since your last visit.":["Las notificaciones de administrador te mantienen informado sobre nuevas entradas de formularios desde tu \u00faltima visita."],"Skip":["Omitir"],"Continue":["Continuar"],"Maximum Number of Entries":["N\u00famero m\u00e1ximo de entradas"],"Maximum Entries":["Entradas M\u00e1ximas"],"Response Description After Maximum Entries":["Descripci\u00f3n de la respuesta despu\u00e9s del m\u00e1ximo de entradas"],"Get Started":["Comenzar"],"Integration":["Integraci\u00f3n"],"Connect Native Integrations with SureForms":["Conecta integraciones nativas con SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Desbloquea potentes integraciones en el plan Premium para automatizar tus flujos de trabajo y conectar SureForms directamente con tus herramientas favoritas."],"Send form submissions straight to CRMs, email, and marketing platforms":["Env\u00eda las presentaciones de formularios directamente a los CRM, correo electr\u00f3nico y plataformas de marketing"],"Automate repetitive tasks with seamless data syncing":["Automatiza tareas repetitivas con una sincronizaci\u00f3n de datos sin problemas"],"Access exclusive native integrations for faster workflows":["Accede a integraciones nativas exclusivas para flujos de trabajo m\u00e1s r\u00e1pidos"],"Expected format for emails - email@sureforms.com or John Doe ":["Formato esperado para correos electr\u00f3nicos: email@sureforms.com o John Doe "],"Payments":["Pagos"],"Stripe account disconnected successfully.":["Cuenta de Stripe desconectada con \u00e9xito."],"Failed to create webhook.":["Error al crear el webhook."],"Failed to connect to Stripe.":["Error al conectar con Stripe."],"Webhook":["Webhook"],"Knowledge Base":["Base de Conocimientos"],"What\u2019s New":["Qu\u00e9 hay de nuevo"],"out of":["fuera de"],"No entries found":["No se encontraron entradas"],"delete":["eliminar"],"Please type \"%s\" in the input box":["Por favor, escribe \"%s\" en el cuadro de entrada"],"To confirm, type \"%s\" in the box below:":["Para confirmar, escriba \"%s\" en el cuadro de abajo:"],"Type \"%s\"":["Escribe \"%s\""],"Go to OttoKit Settings":["Ve a la configuraci\u00f3n de OttoKit"],"USD - US Dollar":["USD - D\u00f3lar estadounidense"],"Payment Mode":["Modo de pago"],"Test Mode":["Modo de prueba"],"Live Mode":["Modo en vivo"],"Action":["Acci\u00f3n"],"General Settings":["Configuraci\u00f3n general"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Configure res\u00famenes de correo electr\u00f3nico, alertas de administrador y preferencias de datos para gestionar tus formularios con facilidad."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Personaliza los mensajes de error predeterminados que se muestran cuando los usuarios env\u00edan entradas de formulario inv\u00e1lidas o incompletas."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Habilita la protecci\u00f3n contra spam para tus formularios utilizando servicios CAPTCHA o seguridad honeypot."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Conecta y gestiona tus pasarelas de pago para aceptar transacciones de forma segura a trav\u00e9s de tus formularios."],"1% transaction and payment gateway fees apply.":["Se aplican tarifas del 1% por transacciones y pasarelas de pago."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["Se aplican tarifas de transacci\u00f3n y de pasarela de pago del 2.9%. Activa la licencia para reducir las tarifas de transacci\u00f3n."],"2.9% transaction and payment gateway fees apply.":["Se aplican tarifas del 2.9% por transacciones y pasarelas de pago."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Por favor, visita %1$s, elimina un webhook no utilizado, luego haz clic abajo para reintentar."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms no pudo crear un webhook porque tu cuenta de Stripe se ha quedado sin espacios libres. Los webhooks son necesarios para recibir actualizaciones sobre los pagos."],"Stripe Dashboard":["Panel de control de Stripe"],"Creating\u2026":["Creando\u2026"],"Create Webhook":["Crear Webhook"],"Successfully connected to Stripe!":["\u00a1Conectado exitosamente a Stripe!"],"Invalid response from server. Please try again.":["Respuesta inv\u00e1lida del servidor. Por favor, int\u00e9ntelo de nuevo."],"Failed to disconnect Stripe account.":["Error al desconectar la cuenta de Stripe."],"Webhook created successfully!":["\u00a1Webhook creado con \u00e9xito!"],"Select Currency":["Seleccionar moneda"],"Select the default currency for payment forms.":["Seleccione la moneda predeterminada para los formularios de pago."],"Connection Status":["Estado de la conexi\u00f3n"],"Disconnect Stripe Account":["Desconectar cuenta de Stripe"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["\u00bfEst\u00e1 seguro de que desea desconectar su cuenta de Stripe? Esto detendr\u00e1 todos los pagos activos, suscripciones y transacciones de formularios conectados a esta cuenta."],"Disconnect":["Desconectar"],"Disconnecting\u2026":["Desconectando\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook conectado con \u00e9xito, todos los eventos de Stripe est\u00e1n siendo rastreados."],"Connect your Stripe account to start accepting payments through your forms.":["Conecta tu cuenta de Stripe para comenzar a aceptar pagos a trav\u00e9s de tus formularios."],"Connect to Stripe":["Conectar a Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Con\u00e9ctate de forma segura a Stripe con solo unos clics para comenzar a aceptar pagos."],"Set the total number of submissions allowed for this form.":["Establezca el n\u00famero total de env\u00edos permitidos para este formulario."],"Payment Methods":["M\u00e9todos de pago"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["El modo de prueba te permite procesar pagos sin cargos reales. Cambia al modo en vivo para transacciones reales."],"General Payment Settings":["Configuraci\u00f3n General de Pagos"],"These settings apply to all payment gateways.":["Estos ajustes se aplican a todas las pasarelas de pago."],"Stripe Settings":["Configuraci\u00f3n de Stripe"],"Left ($100)":["Izquierda ($100)"],"Right (100$)":["Correcto (100$)"],"Left Space ($ 100)":["Espacio Izquierdo ($ 100)"],"Right Space (100 $)":["Espacio Derecho (100 $)"],"Currency Sign Position":["Posici\u00f3n del signo de moneda"],"Select the position of the currency symbol relative to the amount.":["Seleccione la posici\u00f3n del s\u00edmbolo de moneda en relaci\u00f3n con la cantidad."],"Learn":["Aprender"],"Enable email summaries":["Habilitar res\u00famenes de correo electr\u00f3nico"],"Enable IP logging":["Habilitar el registro de IP"],"Turn on Admin Notification from here.":["Activa la notificaci\u00f3n de administrador desde aqu\u00ed."],"New":["Nuevo"],"Send entries to 100+ popular apps.":["Env\u00eda entradas a m\u00e1s de 100 aplicaciones populares."],"Build automated workflows that run instantly.":["Crea flujos de trabajo automatizados que se ejecutan al instante."],"Create custom app integrations using our Custom App feature.":["Crea integraciones de aplicaciones personalizadas utilizando nuestra funci\u00f3n de Aplicaci\u00f3n Personalizada."],"Keep your tools in sync automatically.":["Mant\u00e9n tus herramientas sincronizadas autom\u00e1ticamente."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Esto instalar\u00e1 y activar\u00e1 OttoKit en su sitio de WordPress para habilitar funciones de automatizaci\u00f3n."],"Automate Your Forms with OttoKit":["Automatiza tus formularios con OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Cada env\u00edo de formulario deber\u00eda activar algo: una alerta de Slack, un cliente potencial en el CRM, un correo electr\u00f3nico de seguimiento o una nueva fila en Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Configura los permisos del cliente de IA y la configuraci\u00f3n del servidor MCP."],"View documentation":["Ver documentaci\u00f3n"],"Copy to clipboard":["Copiar al portapapeles"],"Claude Desktop":["Escritorio Claude"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) o %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["C\u00f3digo Claude"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (proyecto) o ~\/.claude.json (global)"],"Cursor":["Cursor"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (proyecto) o settings.json > mcp.servers (global)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml o config.json"],"Your client's MCP configuration file":["El archivo de configuraci\u00f3n MCP de su cliente"],"Connect Your AI Client":["Conecta tu cliente de IA"],"AI Client":["Cliente de IA"],"Create an Application Password \u2014 ":["Crear una Contrase\u00f1a de Aplicaci\u00f3n \u2014"],"Open Application Passwords":["Abrir contrase\u00f1as de aplicaciones"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["O utiliza este comando CLI para a\u00f1adir el servidor r\u00e1pidamente (a\u00fan necesitar\u00e1s configurar las variables de entorno):"],"Copy the JSON config below into: ":["Copie la configuraci\u00f3n JSON a continuaci\u00f3n en:"],"Replace \"your-application-password\" with the password from Step 1.":["Reemplace \"your-application-password\" con la contrase\u00f1a del Paso 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 el punto final MCP de tu sitio. WP_API_USERNAME \u2014 tu nombre de usuario de WordPress. WP_API_PASSWORD \u2014 la contrase\u00f1a de la aplicaci\u00f3n que generaste."],"View setup docs":["Ver documentos de configuraci\u00f3n"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["El complemento MCP Adapter est\u00e1 instalado pero no activo. Act\u00edvalo para configurar los ajustes de MCP."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["El complemento MCP Adapter es necesario para conectar clientes de IA a tus formularios. Desc\u00e1rgalo e inst\u00e1lalo desde GitHub, luego act\u00edvalo."],"Download the latest release from":["Descarga la \u00faltima versi\u00f3n desde"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Instala el complemento a trav\u00e9s de Complementos > A\u00f1adir nuevo complemento > Subir complemento."],"Activate the MCP Adapter plugin.":["Activa el complemento del adaptador MCP."],"Activating\u2026":["Activando\u2026"],"Activate MCP Adapter":["Activar adaptador MCP"],"Download MCP Adapter":["Descargar el adaptador MCP"],"Experimental":["Experimental"],"Enable Abilities":["Habilitar habilidades"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Registra las habilidades de SureForms con la API de Habilidades de WordPress. Cuando est\u00e1 habilitado, los clientes de IA pueden listar, leer, crear, editar y eliminar tus formularios y entradas. Cuando est\u00e1 deshabilitado, no se registran habilidades y los clientes de IA no pueden realizar ninguna acci\u00f3n en tus formularios."],"Abilities API \u2014 Edit":["API de habilidades \u2014 Editar"],"Enable Edit Abilities":["Habilitar habilidades de edici\u00f3n"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Cuando est\u00e1 habilitado, los clientes de IA pueden crear nuevos formularios, actualizar t\u00edtulos de formularios, campos y configuraciones, duplicar formularios y modificar los estados de las entradas. Cuando est\u00e1 deshabilitado, estas habilidades se desregistran y los clientes de IA solo pueden leer sus datos."],"Abilities API \u2014 Delete":["API de habilidades \u2014 Eliminar"],"Enable Delete Abilities":["Habilitar habilidades de eliminaci\u00f3n"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Cuando est\u00e1 habilitado, los clientes de IA pueden eliminar permanentemente formularios y entradas. Los datos eliminados no se pueden recuperar. Cuando est\u00e1 deshabilitado, las capacidades de eliminaci\u00f3n se desregistran y los clientes de IA no pueden eliminar ning\u00fan dato."],"MCP Server":["Servidor MCP"],"Enable MCP Server":["Habilitar servidor MCP"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Crea un punto final dedicado de SureForms MCP al que los clientes de IA como Claude pueden conectarse. Cuando est\u00e1 deshabilitado, el punto final se elimina y los clientes de IA externos no pueden descubrir ni llamar a ninguna capacidad de SureForms."],"Learn more":["Aprende m\u00e1s"],"MCP Adapter Required":["Adaptador MCP Requerido"],"Heading 1":["Encabezado 1"],"Heading 2":["Encabezado 2"],"Heading 3":["Encabezado 3"],"Heading 4":["Encabezado 4"],"Heading 5":["Encabezado 5"],"Heading 6":["Encabezado 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Configura la clave de la API de Google Maps para la autocompletaci\u00f3n de direcciones y la vista previa del mapa."],"Help shape the future of SureForms":["Ayuda a dar forma al futuro de SureForms"],"Enable Google Address Autocomplete":["Habilitar la autocompletar de direcciones de Google"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Actualiza al Plan de Negocios de SureForms para agregar la autocompletaci\u00f3n de direcciones impulsada por Google con vista previa de mapa interactivo a tus formularios."],"Auto-suggest addresses as users type for faster, error-free submissions":["Sugerir direcciones autom\u00e1ticamente mientras los usuarios escriben para env\u00edos m\u00e1s r\u00e1pidos y sin errores"],"Show an interactive map preview with draggable pin for precise locations":["Muestra una vista previa de mapa interactivo con un marcador arrastrable para ubicaciones precisas"],"Automatically populate address fields like city, state, and postal code":["Rellenar autom\u00e1ticamente campos de direcci\u00f3n como ciudad, estado y c\u00f3digo postal"],"This form is now closed as we've received all the entries.":["Este formulario est\u00e1 ahora cerrado ya que hemos recibido todas las inscripciones."],"Thank you for contacting us! We will be in touch with you shortly.":["\u00a1Gracias por contactarnos! Nos pondremos en contacto contigo en breve."],"Saving\u2026":["Guardando\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Cuando est\u00e9 habilitado, este formulario no almacenar\u00e1 la IP del usuario, el nombre del navegador ni el nombre del dispositivo en las entradas."],"Form data":["Datos del formulario"],"Unsaved changes":["Cambios no guardados"],"Keep editing":["Sigue editando"],"Global Defaults":["Valores predeterminados globales"],"Form Restrictions":["Restricciones del formulario"],"Configure default settings that apply to newly created forms.":["Configurar los ajustes predeterminados que se aplican a los formularios reci\u00e9n creados."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Recopila informaci\u00f3n no sensible de tu sitio web, como la versi\u00f3n de PHP y las caracter\u00edsticas utilizadas, para ayudarnos a corregir errores m\u00e1s r\u00e1pido, tomar decisiones m\u00e1s inteligentes y desarrollar funciones que realmente te importen."],"Failed to load pages. Please refresh and try again.":["Error al cargar las p\u00e1ginas. Por favor, actualice e intente de nuevo."],"Failed to load settings. Please refresh and try again.":["Error al cargar la configuraci\u00f3n. Por favor, actualice e intente de nuevo."],"Form Validation fields cannot be left blank.":["Los campos de validaci\u00f3n de formularios no pueden dejarse en blanco."],"Recipient email is required when email summaries are enabled.":["Se requiere el correo electr\u00f3nico del destinatario cuando los res\u00famenes de correo electr\u00f3nico est\u00e1n habilitados."],"Please enter a valid recipient email.":["Por favor, introduce un correo electr\u00f3nico de destinatario v\u00e1lido."],"Settings saved.":["Configuraciones guardadas."],"Failed to save settings.":["Error al guardar la configuraci\u00f3n."],"Some settings failed to save. Please retry.":["Algunas configuraciones no se pudieron guardar. Por favor, int\u00e9ntalo de nuevo."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Algunos campos tienen cambios no guardados. Des\u00e9chelos para continuar, o permanezca para guardar sus ediciones."],"Discard & switch":["Descartar y cambiar"],"Import":["Importar"],"Migration":["Migraci\u00f3n"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importa formularios de Contact Form 7, WPForms, Gravity Forms y otros plugins en SureForms."],"Could not generate the import preview.":["No se pudo generar la vista previa de importaci\u00f3n."],"Import failed. Please try again or check your error logs.":["La importaci\u00f3n fall\u00f3. Por favor, int\u00e9ntelo de nuevo o revise sus registros de errores."],"Go back":["Regresar"],"Update & import":["Actualizar e importar"],"Confirm & import":["Confirmar e importar"],"Form #%s":["Formulario n.\u00ba %s"],"%d field will import":["Se importar\u00e1 %d campo"],"Some fields can't be migrated yet":["Algunos campos no se pueden migrar todav\u00eda"],"These fields will be skipped - add them manually after the form is created:":["Estos campos se omitir\u00e1n; agr\u00e9guelos manualmente despu\u00e9s de crear el formulario:"],"Some forms could not be parsed":["Algunos formularios no se pudieron analizar"],"Update existing":["Actualizar existente"],"Create a new copy":["Crear una nueva copia"],"Could not load forms for this source.":["No se pudieron cargar los formularios para esta fuente."],"(untitled form)":["(formulario sin t\u00edtulo)"],"Previously imported":["Importado previamente"],"Open existing SureForms form in a new tab":["Abrir el formulario SureForms existente en una nueva pesta\u00f1a"],"On re-import":["En la reimportaci\u00f3n"],"No forms found in this plugin.":["No se encontraron formularios en este complemento."],"%1$d of %2$d form selected":["%1$d de %2$d formulario seleccionado"],"Preview update":["Vista previa de la actualizaci\u00f3n"],"Preview import":["Vista previa de la importaci\u00f3n"],"Migration complete":["Migraci\u00f3n completa"],"Nothing was imported":["No se import\u00f3 nada"],"%d form was imported into SureForms.":["%d formulario fue importado a SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["Ninguno de los formularios seleccionados pudo ser migrado. Consulte las advertencias a continuaci\u00f3n para obtener m\u00e1s detalles."],"Imported forms":["Formularios importados"],"Edit in SureForms":["Editar en SureForms"],"Some fields were skipped during import":["Algunos campos se omitieron durante la importaci\u00f3n"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Agrega estos manualmente en el editor de formularios - a\u00fan no tienen un equivalente en SureForms:"],"Some forms failed to import":["Algunos formularios no se pudieron importar"],"Import more forms":["Importar m\u00e1s formularios"],"Could not load the list of importable plugins.":["No se pudo cargar la lista de complementos importables."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["No hay complementos de formularios compatibles activos en este sitio. Activa uno (como Contact Form 7) con al menos un formulario para importarlo en SureForms."],"Plugin":["Complemento"],"%d form":["%d formulario"],"No forms":["No hay formularios"],"Multiple choice":["Opci\u00f3n m\u00faltiple"],"Consent":["Consentimiento"],"The image uploaded but could not be inserted. Please try again.":["La imagen se carg\u00f3 pero no pudo ser insertada. Por favor, int\u00e9ntalo de nuevo."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["La imagen no pudo ser cargada. Puede ser demasiado grande o es posible que no tengas permiso para subir archivos."],"Please choose an image file.":["Por favor, elige un archivo de imagen."],"Show views and conversion rate":["Mostrar vistas y tasa de conversi\u00f3n"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Agrega las columnas de Vistas y Tasa de Conversi\u00f3n a la lista de Formularios. Una vista se cuenta una vez por visita a la p\u00e1gina cuando el formulario aparece en pantalla, y la tasa de conversi\u00f3n es la proporci\u00f3n de esas vistas que terminaron en un env\u00edo. El conteo comienza la primera vez que lo enciende, por lo que los env\u00edos recibidos antes de entonces no se cuentan para la tasa. Apagarlo despu\u00e9s solo oculta las columnas \u2014 el conteo contin\u00faa, por lo que las cifras est\u00e1n actualizadas si lo vuelve a encender."],"Log cleared.":["Registro borrado."],"Could not clear the log.":["No se pudo borrar el registro."],"Enable logs":["Habilitar registros"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Registra los fallos de env\u00edo de formularios reportados por el navegador, para que puedas enviar el registro al soporte en lugar de leer la consola. No se escribe nada mientras tus formularios funcionan, y los valores enviados nunca se almacenan."],"Download log":["Descargar registro"],"Confirm delete":["Confirmar eliminaci\u00f3n"],"Log is full \u2014 download and clear it to keep recording.":["El registro est\u00e1 lleno \u2014 desc\u00e1rgalo y b\u00f3rralo para seguir grabando."],"Form Views & Conversion":["Vistas y Conversi\u00f3n de Formularios"],"Logs":["Registros"],"Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures.":["Las vistas y env\u00edos por parte de cualquier persona que pueda editar el sitio normalmente se dejan fuera, por lo que probar sus propios formularios no cambia estas cifras."],"Quill heading picker: default paragraph style\u0004Normal":["Normal"]}}} \ No newline at end of file diff --git a/languages/sureforms-es_ES-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json b/languages/sureforms-es_ES-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json index 712166914..c63d9b0d4 100644 --- a/languages/sureforms-es_ES-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json +++ b/languages/sureforms-es_ES-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json @@ -1 +1 @@ -{"translation-revision-date":"2024-12-13T16:34:28+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Tablero"],"Settings":["Configuraciones"],"Entries":["Entradas"],"Activated":["Activado"],"Advanced Fields":["Campos avanzados"],"Select Form":["Seleccionar formulario"],"Create New Form":["Crear nuevo formulario"],"Forms":["Formularios"],"Copy":["Copiar"],"Business":["Negocios"],"Next":["Siguiente"],"Back":["Atr\u00e1s"],"Cancel":["Cancelar"],"This is where your form views will appear":["Aqu\u00ed es donde aparecer\u00e1n las vistas de su formulario"],"Install":["Instalar"],"Plugin Installation failed, Please try again later.":["La instalaci\u00f3n del complemento fall\u00f3, por favor intente de nuevo m\u00e1s tarde."],"Plugin activation failed, Please try again later.":["La activaci\u00f3n del complemento fall\u00f3, por favor intente de nuevo m\u00e1s tarde."],"What's New?":["\u00bfQu\u00e9 hay de nuevo?"],"Core":["N\u00facleo"],"Unlicensed":["Sin licencia"],"Upgrade":["Actualizar"],"Webhooks":["Webhooks"],"Install & Activate":["Instalar y activar"],"Conditional Logic":["L\u00f3gica condicional"],"Premium":["Premium"],"Welcome to SureForms!":["\u00a1Bienvenido a SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms es un complemento de WordPress que permite a los usuarios crear formularios de aspecto atractivo a trav\u00e9s de una interfaz de arrastrar y soltar, sin necesidad de programar. Se integra con el editor de bloques de WordPress."],"Read Full Guide":["Leer la gu\u00eda completa"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Formularios personalizados de WordPress HECHOS SIMPLES"],"No Date":["Sin fecha"],"Invalid Date":["Fecha no v\u00e1lida"],"Ready to go beyond free plan?":["\u00bfListo para ir m\u00e1s all\u00e1 del plan gratuito?"],"Upgrade now":["Actualiza ahora"],"and unlock the full power of SureForms!":["y desbloquea todo el poder de SureForms!"],"Upgrade SureForms":["Actualizar SureForms"],"Open Support Ticket":["Abrir Ticket de Soporte"],"Help Center":["Centro de ayuda"],"Join our Community on Facebook":["\u00danete a nuestra comunidad en Facebook"],"Leave Us a Review":["D\u00e9janos una rese\u00f1a"],"Quick Access":["Acceso R\u00e1pido"],"Upgrade Now":["Actualiza ahora"],"Clear Filters":["Limpiar filtros"],"Unnamed Form":["Formulario sin nombre"],"Forms Overview":["Descripci\u00f3n general de los formularios"],"Clear Form Filters":["Limpiar filtros del formulario"],"Clear Date Filters":["Borrar filtros de fecha"],"Select Date Range":["Seleccionar rango de fechas"],"Apply":["Aplicar"],"Please wait for the data to load":["Por favor, espera a que los datos se carguen"],"No entries to display":["No hay entradas para mostrar"],"Once you create a form and start receiving submissions, the data will appear here.":["Una vez que crees un formulario y comiences a recibir env\u00edos, los datos aparecer\u00e1n aqu\u00ed."],"Free":["Gratis"],"All Forms":["Todas las formas"],"Guided Setup":["Configuraci\u00f3n Guiada"],"Exit Guided Setup":["Salir de la Configuraci\u00f3n Guiada"],"Skip":["Omitir"],"Build beautiful forms visually":["Construye formularios hermosos visualmente"],"Works perfectly on mobile":["Funciona perfectamente en dispositivos m\u00f3viles"],"Easy to connect with automation tools":["F\u00e1cil de conectar con herramientas de automatizaci\u00f3n"],"Welcome to SureForms":["Bienvenido a SureForms"],"Smart, Quick and Powerful Forms.":["Formularios inteligentes, r\u00e1pidos y potentes."],"Let's Get Started":["Empecemos"],"Build up to 10 forms using AI":["Construye hasta 10 formularios usando IA"],"A secure and private connection":["Una conexi\u00f3n segura y privada"],"Smart form drafts based on your input":["Borradores de formularios inteligentes basados en tu entrada"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Comenzar desde un formulario en blanco no siempre es f\u00e1cil. Nuestra IA puede ayudar creando un borrador del formulario basado en lo que intentas hacer, ahorr\u00e1ndote tiempo y d\u00e1ndote una direcci\u00f3n clara."],"To do this, you'll need to connect your account.":["Para hacer esto, necesitar\u00e1s conectar tu cuenta."],"Let AI Help You Build Smarter, Faster Forms":["Deja que la IA te ayude a crear formularios m\u00e1s inteligentes y r\u00e1pidos"],"Here's what that gives you:":["Aqu\u00ed tienes lo que eso te da:"],"Continue":["Continuar"],"Connect":["Conectar"],"Works smoothly with forms made using SureForms":["Funciona sin problemas con formularios creados usando SureForms"],"Helps your emails reach the inbox instead of spam":["Ayuda a que tus correos electr\u00f3nicos lleguen a la bandeja de entrada en lugar de a la carpeta de spam"],"Setup is straightforward, even if you're not technical":["La configuraci\u00f3n es sencilla, incluso si no eres t\u00e9cnico."],"Lightweight and easy to use without adding clutter":["Ligero y f\u00e1cil de usar sin a\u00f1adir desorden"],"Make Sure Your Emails Get Delivered":["Aseg\u00farate de que tus correos electr\u00f3nicos se entreguen"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["La mayor\u00eda de los sitios de WordPress tienen dificultades para enviar correos electr\u00f3nicos de manera confiable, lo que significa que los env\u00edos de formularios desde su sitio podr\u00edan no llegar a su bandeja de entrada o terminar en spam."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail es un sencillo complemento SMTP que ayuda a asegurar que tus correos electr\u00f3nicos se entreguen realmente."],"What you will get:":["Lo que obtendr\u00e1s:"],"Install SureMail":["Instalar SureMail"],"AI Form Generation":["Generaci\u00f3n de Formularios de IA"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["\u00bfCansado de crear formularios manualmente? Deja que la IA haga el trabajo por ti. Solo describe y nuestra IA crear\u00e1 tu formulario perfecto en segundos."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Descompone formularios complejos en pasos simples, reduciendo la sensaci\u00f3n de agobio y aumentando las tasas de finalizaci\u00f3n. Gu\u00eda a los usuarios de manera fluida a trav\u00e9s del proceso"],"Conditional Fields":["Campos Condicionales"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Mostrar u ocultar campos seg\u00fan las respuestas del usuario. Haz las preguntas correctas y muestra solo lo necesario para mantener los formularios limpios y relevantes."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Mejora tus formularios con campos avanzados como carga de m\u00faltiples archivos, campos de calificaci\u00f3n y selectores de fecha y hora para recopilar datos m\u00e1s ricos y flexibles."],"Conversational Forms":["Formas conversacionales"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Crea formularios que se sientan como una conversaci\u00f3n. Una pregunta a la vez mantiene a los usuarios comprometidos y facilita la finalizaci\u00f3n del formulario."],"Digital Signatures":["Firmas Digitales"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Recoge firmas digitales legalmente vinculantes directamente en tus formularios para acuerdos, aprobaciones y contratos."],"Calculators":["Calculadoras"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Agrega calculadoras interactivas a tus formularios para obtener estimaciones, cotizaciones y c\u00e1lculos instant\u00e1neos para tus usuarios."],"User Registration and Login":["Registro y acceso de usuario"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Permite a los visitantes registrarse e iniciar sesi\u00f3n en tu sitio. \u00datil para membres\u00edas, comunidades o cualquier sitio que necesite acceso de usuarios."],"PDF Generation Made Simple":["Generaci\u00f3n de PDF hecha simple"],"Custom App":["Aplicaci\u00f3n Personalizada"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Recopila datos, env\u00edalos a aplicaciones externas para su procesamiento y muestra los resultados al instante, todo integrado de manera fluida para crear experiencias de usuario din\u00e1micas e interactivas."],"Select Your Features":["Selecciona tus caracter\u00edsticas"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Obt\u00e9n m\u00e1s control, flujos de trabajo m\u00e1s r\u00e1pidos y una personalizaci\u00f3n m\u00e1s profunda, todo dise\u00f1ado para ayudarte a crear mejores sitios web con menos esfuerzo."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Las funciones seleccionadas requieren %1$s - usa el c\u00f3digo %2$s para obtener un 10% de descuento en cualquier plan."],"Copied":["Copiado"],"Style your form to better match your site's design":["Estiliza tu formulario para que se adapte mejor al dise\u00f1o de tu sitio"],"Add spam protection to block common bot submissions":["Agrega protecci\u00f3n contra spam para bloquear env\u00edos comunes de bots"],"Get weekly email reports with a summary of form activity":["Recibe informes semanales por correo electr\u00f3nico con un resumen de la actividad del formulario"],"You're All Set! \ud83d\ude80":["\u00a1Todo listo! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Utiliza nuestro creador de formularios con IA para comenzar r\u00e1pidamente, o construye tu formulario desde cero si ya sabes lo que necesitas. Tus formularios est\u00e1n listos para crear, compartir y conectar con los visitantes de tu sitio."],"Final Touches That Make a Difference:":["Toques finales que marcan la diferencia:"],"Build Your First Form":["Construye tu primer formulario"],"File Uploads":["Subidas de archivos"],"Signature & Rating":["Firma y Calificaci\u00f3n"],"Calculation Forms":["Formularios de C\u00e1lculo"],"And Much More\u2026":["Y mucho m\u00e1s\u2026"],"Upgrade to Pro":["Actualiza a Pro"],"Unlock Premium Features":["Desbloquear funciones premium"],"Build Better Forms with SureForms":["Construye mejores formularios con SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Agrega campos avanzados, dise\u00f1os conversacionales y l\u00f3gica inteligente para crear formularios que involucren a los usuarios y capturen mejores datos."],"SureForms Video Thumbnail":["Miniatura de video de SureForms"],"Payments":["Pagos"],"Knowledge Base":["Base de Conocimientos"],"What\u2019s New":["Qu\u00e9 hay de nuevo"],"Importing\u2026":["Importando\u2026"],"Learn":["Aprender"],"Unable to complete action. Please try again.":["No se puede completar la acci\u00f3n. Por favor, int\u00e9ntelo de nuevo."],"Supercharge Your Workflow":["Potencia tu flujo de trabajo"],"Spam protection included":["Protecci\u00f3n contra spam incluida"],"Multistep Forms":["Formularios de varios pasos"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Env\u00eda las entradas de formularios instant\u00e1neamente a cualquier sistema o punto final externo para potenciar flujos de trabajo avanzados."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Convierte autom\u00e1ticamente las entradas de formularios en PDFs limpios y listos para descargar. Perfecto para registros, compartir, archivar o mantener las cosas organizadas."],"Set up confirmation messages and email notifications for each entry":["Configura mensajes de confirmaci\u00f3n y notificaciones por correo electr\u00f3nico para cada entrada"],"Something went wrong. Please try again.":["Algo sali\u00f3 mal. Por favor, int\u00e9ntalo de nuevo."],"Payment Forms":["Formularios de Pago"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Cobra pagos directamente a trav\u00e9s de tus formularios. Acepta pagos \u00fanicos y recurrentes sin problemas."],"SureForms %s":["SureForms %s"],"First name is required.":["Se requiere el nombre."],"Please enter a valid email address.":["Por favor, introduce una direcci\u00f3n de correo electr\u00f3nico v\u00e1lida."],"Email address is required.":["Se requiere la direcci\u00f3n de correo electr\u00f3nico."],"This is required.":["Esto es necesario."],"Okay, just one last step\u2026":["Est\u00e1 bien, solo un \u00faltimo paso\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Ay\u00fadanos a personalizar tu experiencia con SureForms compartiendo un poco sobre ti."],"First Name":["Nombre"],"Enter your first name":["Ingrese su nombre"],"Last Name":["Apellido"],"Enter your last name":["Ingrese su apellido"],"Email Address":["Direcci\u00f3n de correo electr\u00f3nico"],"Enter your email address":["Introduce tu direcci\u00f3n de correo electr\u00f3nico"],"Privacy Policy":["Pol\u00edtica de Privacidad"],"Finish":["Terminar"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Mantente al tanto y ayuda a dar forma a SureForms. Recibe actualizaciones de funciones y ay\u00fadanos a mejorar SureForms compartiendo c\u00f3mo utilizas el complemento. Pol\u00edtica de Privacidad<\/a>."],"%d form ready":["%d formulario listo"],"%d already imported":["%d ya importados"],"(unnamed source)":["(fuente sin nombre)"],"All forms already imported":["Todos los formularios ya importados"],"Import forms":["Importar formularios"],"Import %d form":["Importar %d formulario"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Algo sali\u00f3 mal durante la importaci\u00f3n. Puedes reintentar, omitir o abrir Configuraci\u00f3n \u2192 Migraci\u00f3n."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["No se detectaron otros complementos de formularios. Puedes importar en cualquier momento desde Configuraci\u00f3n \u2192 Migraci\u00f3n."],"Forms imported":["Formularios importados"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["El formulario %1$d de %2$s est\u00e1 ahora en SureForms, listo para publicar, estilizar y conectar."],"%d form imported":["%d formulario importado"],"%d form could not be imported":["No se pudo importar %d formulario"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d tipo de campo no era compatible. Puedes reconstruirlo manualmente dentro de SureForms."],"Bring your existing forms with you":["Trae tus formularios existentes contigo"],"We detected forms in another plugin. Pick one to import into SureForms.":["Detectamos formularios en otro complemento. Elige uno para importar a SureForms."],"Choose a form plugin to import from":["Elige un complemento de formulario para importar desde"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["\u00bfImportando m\u00e1s de un complemento? Puedes importar fuentes adicionales m\u00e1s tarde desde Configuraci\u00f3n \u2192 Migraci\u00f3n."],"Import did not complete":["La importaci\u00f3n no se complet\u00f3"],"I'll do this later":["Lo har\u00e9 m\u00e1s tarde"],"Retry":["Reintentar"],"Form Checks":["Verificaciones de formulario"],"Collapse form checks":["Colapsar verificaciones de formulario"],"Expand form checks":["Expandir verificaciones de formulario"],"Ignore":["Ignorar"],"Working\u2026":["Trabajando\u2026"]}}} \ No newline at end of file +{"translation-revision-date":"2024-12-13T16:34:28+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Tablero"],"Settings":["Configuraciones"],"Entries":["Entradas"],"Activated":["Activado"],"Advanced Fields":["Campos avanzados"],"Select Form":["Seleccionar formulario"],"Create New Form":["Crear nuevo formulario"],"Forms":["Formularios"],"Copy":["Copiar"],"Business":["Negocios"],"Next":["Siguiente"],"Back":["Atr\u00e1s"],"Close":["Cerrar"],"Cancel":["Cancelar"],"This is where your form views will appear":["Aqu\u00ed es donde aparecer\u00e1n las vistas de su formulario"],"Install":["Instalar"],"Plugin Installation failed, Please try again later.":["La instalaci\u00f3n del complemento fall\u00f3, por favor intente de nuevo m\u00e1s tarde."],"Plugin activation failed, Please try again later.":["La activaci\u00f3n del complemento fall\u00f3, por favor intente de nuevo m\u00e1s tarde."],"What's New?":["\u00bfQu\u00e9 hay de nuevo?"],"Core":["N\u00facleo"],"Unlicensed":["Sin licencia"],"Upgrade":["Actualizar"],"Webhooks":["Webhooks"],"Install & Activate":["Instalar y activar"],"Contact Support":["Contactar con el soporte"],"Conditional Logic":["L\u00f3gica condicional"],"Premium":["Premium"],"Welcome to SureForms!":["\u00a1Bienvenido a SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms es un complemento de WordPress que permite a los usuarios crear formularios de aspecto atractivo a trav\u00e9s de una interfaz de arrastrar y soltar, sin necesidad de programar. Se integra con el editor de bloques de WordPress."],"Read Full Guide":["Leer la gu\u00eda completa"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Formularios personalizados de WordPress HECHOS SIMPLES"],"No Date":["Sin fecha"],"Invalid Date":["Fecha no v\u00e1lida"],"Ready to go beyond free plan?":["\u00bfListo para ir m\u00e1s all\u00e1 del plan gratuito?"],"Upgrade now":["Actualiza ahora"],"and unlock the full power of SureForms!":["y desbloquea todo el poder de SureForms!"],"Upgrade SureForms":["Actualizar SureForms"],"Open Support Ticket":["Abrir Ticket de Soporte"],"Help Center":["Centro de ayuda"],"Join our Community on Facebook":["\u00danete a nuestra comunidad en Facebook"],"Leave Us a Review":["D\u00e9janos una rese\u00f1a"],"Quick Access":["Acceso R\u00e1pido"],"Upgrade Now":["Actualiza ahora"],"Clear Filters":["Limpiar filtros"],"Unnamed Form":["Formulario sin nombre"],"Forms Overview":["Descripci\u00f3n general de los formularios"],"Clear Form Filters":["Limpiar filtros del formulario"],"Clear Date Filters":["Borrar filtros de fecha"],"Select Date Range":["Seleccionar rango de fechas"],"Apply":["Aplicar"],"Please wait for the data to load":["Por favor, espera a que los datos se carguen"],"No entries to display":["No hay entradas para mostrar"],"Once you create a form and start receiving submissions, the data will appear here.":["Una vez que crees un formulario y comiences a recibir env\u00edos, los datos aparecer\u00e1n aqu\u00ed."],"Free":["Gratis"],"All Forms":["Todas las formas"],"Guided Setup":["Configuraci\u00f3n Guiada"],"Exit Guided Setup":["Salir de la Configuraci\u00f3n Guiada"],"Skip":["Omitir"],"Build beautiful forms visually":["Construye formularios hermosos visualmente"],"Works perfectly on mobile":["Funciona perfectamente en dispositivos m\u00f3viles"],"Easy to connect with automation tools":["F\u00e1cil de conectar con herramientas de automatizaci\u00f3n"],"Welcome to SureForms":["Bienvenido a SureForms"],"Smart, Quick and Powerful Forms.":["Formularios inteligentes, r\u00e1pidos y potentes."],"Let's Get Started":["Empecemos"],"Build up to 10 forms using AI":["Construye hasta 10 formularios usando IA"],"A secure and private connection":["Una conexi\u00f3n segura y privada"],"Smart form drafts based on your input":["Borradores de formularios inteligentes basados en tu entrada"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Comenzar desde un formulario en blanco no siempre es f\u00e1cil. Nuestra IA puede ayudar creando un borrador del formulario basado en lo que intentas hacer, ahorr\u00e1ndote tiempo y d\u00e1ndote una direcci\u00f3n clara."],"To do this, you'll need to connect your account.":["Para hacer esto, necesitar\u00e1s conectar tu cuenta."],"Let AI Help You Build Smarter, Faster Forms":["Deja que la IA te ayude a crear formularios m\u00e1s inteligentes y r\u00e1pidos"],"Here's what that gives you:":["Aqu\u00ed tienes lo que eso te da:"],"Continue":["Continuar"],"Connect":["Conectar"],"Works smoothly with forms made using SureForms":["Funciona sin problemas con formularios creados usando SureForms"],"Helps your emails reach the inbox instead of spam":["Ayuda a que tus correos electr\u00f3nicos lleguen a la bandeja de entrada en lugar de a la carpeta de spam"],"Setup is straightforward, even if you're not technical":["La configuraci\u00f3n es sencilla, incluso si no eres t\u00e9cnico."],"Lightweight and easy to use without adding clutter":["Ligero y f\u00e1cil de usar sin a\u00f1adir desorden"],"Make Sure Your Emails Get Delivered":["Aseg\u00farate de que tus correos electr\u00f3nicos se entreguen"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["La mayor\u00eda de los sitios de WordPress tienen dificultades para enviar correos electr\u00f3nicos de manera confiable, lo que significa que los env\u00edos de formularios desde su sitio podr\u00edan no llegar a su bandeja de entrada o terminar en spam."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail es un sencillo complemento SMTP que ayuda a asegurar que tus correos electr\u00f3nicos se entreguen realmente."],"What you will get:":["Lo que obtendr\u00e1s:"],"Install SureMail":["Instalar SureMail"],"AI Form Generation":["Generaci\u00f3n de Formularios de IA"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["\u00bfCansado de crear formularios manualmente? Deja que la IA haga el trabajo por ti. Solo describe y nuestra IA crear\u00e1 tu formulario perfecto en segundos."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Descompone formularios complejos en pasos simples, reduciendo la sensaci\u00f3n de agobio y aumentando las tasas de finalizaci\u00f3n. Gu\u00eda a los usuarios de manera fluida a trav\u00e9s del proceso"],"Conditional Fields":["Campos Condicionales"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Mostrar u ocultar campos seg\u00fan las respuestas del usuario. Haz las preguntas correctas y muestra solo lo necesario para mantener los formularios limpios y relevantes."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Mejora tus formularios con campos avanzados como carga de m\u00faltiples archivos, campos de calificaci\u00f3n y selectores de fecha y hora para recopilar datos m\u00e1s ricos y flexibles."],"Conversational Forms":["Formas conversacionales"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Crea formularios que se sientan como una conversaci\u00f3n. Una pregunta a la vez mantiene a los usuarios comprometidos y facilita la finalizaci\u00f3n del formulario."],"Digital Signatures":["Firmas Digitales"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Recoge firmas digitales legalmente vinculantes directamente en tus formularios para acuerdos, aprobaciones y contratos."],"Calculators":["Calculadoras"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Agrega calculadoras interactivas a tus formularios para obtener estimaciones, cotizaciones y c\u00e1lculos instant\u00e1neos para tus usuarios."],"User Registration and Login":["Registro y acceso de usuario"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Permite a los visitantes registrarse e iniciar sesi\u00f3n en tu sitio. \u00datil para membres\u00edas, comunidades o cualquier sitio que necesite acceso de usuarios."],"PDF Generation Made Simple":["Generaci\u00f3n de PDF hecha simple"],"Custom App":["Aplicaci\u00f3n Personalizada"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Recopila datos, env\u00edalos a aplicaciones externas para su procesamiento y muestra los resultados al instante, todo integrado de manera fluida para crear experiencias de usuario din\u00e1micas e interactivas."],"Select Your Features":["Selecciona tus caracter\u00edsticas"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Obt\u00e9n m\u00e1s control, flujos de trabajo m\u00e1s r\u00e1pidos y una personalizaci\u00f3n m\u00e1s profunda, todo dise\u00f1ado para ayudarte a crear mejores sitios web con menos esfuerzo."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Las funciones seleccionadas requieren %1$s - usa el c\u00f3digo %2$s para obtener un 10% de descuento en cualquier plan."],"Copied":["Copiado"],"Style your form to better match your site's design":["Estiliza tu formulario para que se adapte mejor al dise\u00f1o de tu sitio"],"Add spam protection to block common bot submissions":["Agrega protecci\u00f3n contra spam para bloquear env\u00edos comunes de bots"],"Get weekly email reports with a summary of form activity":["Recibe informes semanales por correo electr\u00f3nico con un resumen de la actividad del formulario"],"You're All Set! \ud83d\ude80":["\u00a1Todo listo! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Utiliza nuestro creador de formularios con IA para comenzar r\u00e1pidamente, o construye tu formulario desde cero si ya sabes lo que necesitas. Tus formularios est\u00e1n listos para crear, compartir y conectar con los visitantes de tu sitio."],"Final Touches That Make a Difference:":["Toques finales que marcan la diferencia:"],"Build Your First Form":["Construye tu primer formulario"],"File Uploads":["Subidas de archivos"],"Signature & Rating":["Firma y Calificaci\u00f3n"],"Calculation Forms":["Formularios de C\u00e1lculo"],"And Much More\u2026":["Y mucho m\u00e1s\u2026"],"Upgrade to Pro":["Actualiza a Pro"],"Unlock Premium Features":["Desbloquear funciones premium"],"Build Better Forms with SureForms":["Construye mejores formularios con SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Agrega campos avanzados, dise\u00f1os conversacionales y l\u00f3gica inteligente para crear formularios que involucren a los usuarios y capturen mejores datos."],"SureForms Video Thumbnail":["Miniatura de video de SureForms"],"Payments":["Pagos"],"Knowledge Base":["Base de Conocimientos"],"What\u2019s New":["Qu\u00e9 hay de nuevo"],"Importing\u2026":["Importando\u2026"],"Learn":["Aprender"],"Unable to complete action. Please try again.":["No se puede completar la acci\u00f3n. Por favor, int\u00e9ntelo de nuevo."],"Supercharge Your Workflow":["Potencia tu flujo de trabajo"],"Spam protection included":["Protecci\u00f3n contra spam incluida"],"Multistep Forms":["Formularios de varios pasos"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Env\u00eda las entradas de formularios instant\u00e1neamente a cualquier sistema o punto final externo para potenciar flujos de trabajo avanzados."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Convierte autom\u00e1ticamente las entradas de formularios en PDFs limpios y listos para descargar. Perfecto para registros, compartir, archivar o mantener las cosas organizadas."],"Set up confirmation messages and email notifications for each entry":["Configura mensajes de confirmaci\u00f3n y notificaciones por correo electr\u00f3nico para cada entrada"],"Something went wrong. Please try again.":["Algo sali\u00f3 mal. Por favor, int\u00e9ntalo de nuevo."],"Payment Forms":["Formularios de Pago"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Cobra pagos directamente a trav\u00e9s de tus formularios. Acepta pagos \u00fanicos y recurrentes sin problemas."],"SureForms %s":["SureForms %s"],"First name is required.":["Se requiere el nombre."],"Please enter a valid email address.":["Por favor, introduce una direcci\u00f3n de correo electr\u00f3nico v\u00e1lida."],"Email address is required.":["Se requiere la direcci\u00f3n de correo electr\u00f3nico."],"This is required.":["Esto es necesario."],"Okay, just one last step\u2026":["Est\u00e1 bien, solo un \u00faltimo paso\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Ay\u00fadanos a personalizar tu experiencia con SureForms compartiendo un poco sobre ti."],"First Name":["Nombre"],"Enter your first name":["Ingrese su nombre"],"Last Name":["Apellido"],"Enter your last name":["Ingrese su apellido"],"Email Address":["Direcci\u00f3n de correo electr\u00f3nico"],"Enter your email address":["Introduce tu direcci\u00f3n de correo electr\u00f3nico"],"Privacy Policy":["Pol\u00edtica de Privacidad"],"Finish":["Terminar"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Mantente al tanto y ayuda a dar forma a SureForms. Recibe actualizaciones de funciones y ay\u00fadanos a mejorar SureForms compartiendo c\u00f3mo utilizas el complemento. Pol\u00edtica de Privacidad<\/a>."],"%d form ready":["%d formulario listo"],"%d already imported":["%d ya importados"],"(unnamed source)":["(fuente sin nombre)"],"All forms already imported":["Todos los formularios ya importados"],"Import forms":["Importar formularios"],"Import %d form":["Importar %d formulario"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Algo sali\u00f3 mal durante la importaci\u00f3n. Puedes reintentar, omitir o abrir Configuraci\u00f3n \u2192 Migraci\u00f3n."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["No se detectaron otros complementos de formularios. Puedes importar en cualquier momento desde Configuraci\u00f3n \u2192 Migraci\u00f3n."],"Forms imported":["Formularios importados"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["El formulario %1$d de %2$s est\u00e1 ahora en SureForms, listo para publicar, estilizar y conectar."],"%d form imported":["%d formulario importado"],"%d form could not be imported":["No se pudo importar %d formulario"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d tipo de campo no era compatible. Puedes reconstruirlo manualmente dentro de SureForms."],"Bring your existing forms with you":["Trae tus formularios existentes contigo"],"We detected forms in another plugin. Pick one to import into SureForms.":["Detectamos formularios en otro complemento. Elige uno para importar a SureForms."],"Choose a form plugin to import from":["Elige un complemento de formulario para importar desde"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["\u00bfImportando m\u00e1s de un complemento? Puedes importar fuentes adicionales m\u00e1s tarde desde Configuraci\u00f3n \u2192 Migraci\u00f3n."],"Import did not complete":["La importaci\u00f3n no se complet\u00f3"],"I'll do this later":["Lo har\u00e9 m\u00e1s tarde"],"Retry":["Reintentar"],"Form Checks":["Verificaciones de formulario"],"Collapse form checks":["Colapsar verificaciones de formulario"],"Expand form checks":["Expandir verificaciones de formulario"],"Ignore":["Ignorar"],"Working\u2026":["Trabajando\u2026"],"Details":["Detalles"],"Copy details":["Copiar detalles"]}}} \ No newline at end of file diff --git a/languages/sureforms-es_ES.mo b/languages/sureforms-es_ES.mo index 9c23727d5..0072c6ef4 100644 Binary files a/languages/sureforms-es_ES.mo and b/languages/sureforms-es_ES.mo differ diff --git a/languages/sureforms-es_ES.po b/languages/sureforms-es_ES.po index f2264ac88..796a054b2 100644 --- a/languages/sureforms-es_ES.po +++ b/languages/sureforms-es_ES.po @@ -14,9 +14,9 @@ msgstr "" #. Plugin Name of the plugin #. Author of the plugin #: sureforms.php -#: admin/admin.php:1152 -#: admin/admin.php:1153 -#: admin/admin.php:3021 +#: admin/admin.php:1198 +#: admin/admin.php:1199 +#: admin/admin.php:3185 #: inc/abilities/abilities-registrar.php:139 #: inc/gutenberg-hooks.php:109 #: inc/page-builders/bricks/elements/form-widget.php:67 @@ -43,8 +43,8 @@ msgstr "Una forma simple pero poderosa de crear formularios modernos para tu sit msgid "https://sureforms.com/" msgstr "https://sureforms.com/" -#: admin/admin.php:1165 -#: admin/admin.php:1166 +#: admin/admin.php:1211 +#: admin/admin.php:1212 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -59,9 +59,9 @@ msgstr "https://sureforms.com/" msgid "Dashboard" msgstr "Tablero" -#: admin/admin.php:1183 -#: admin/admin.php:1184 -#: admin/admin.php:1616 +#: admin/admin.php:1229 +#: admin/admin.php:1230 +#: admin/admin.php:1662 #: inc/compatibility/multilingual/string-collector.php:236 #: inc/compatibility/multilingual/string-collector.php:245 #: inc/compatibility/multilingual/string-collector.php:313 @@ -79,15 +79,15 @@ msgstr "Tablero" msgid "Settings" msgstr "Configuraciones" -#: admin/admin.php:1452 -#: admin/admin.php:1453 +#: admin/admin.php:1498 +#: admin/admin.php:1499 #: inc/post-types.php:270 msgid "New Form" msgstr "Nuevo formulario" -#: admin/admin.php:1461 -#: admin/admin.php:1462 -#: admin/admin.php:3340 +#: admin/admin.php:1507 +#: admin/admin.php:1508 +#: admin/admin.php:3504 #: inc/generate-form-markup.php:211 #: inc/generate-form-markup.php:224 #: inc/global-settings/email-summary.php:225 @@ -105,7 +105,7 @@ msgid "Entries" msgstr "Entradas" #. Translators: Post Title. -#: admin/admin.php:1704 +#: admin/admin.php:1750 #, php-format msgid "Edit %1$s" msgstr "Editar %1$s" @@ -118,7 +118,7 @@ msgstr "Editar %1$s" #: inc/duplicate-form.php:191 #: inc/export.php:126 #: inc/export.php:184 -#: inc/forms-data.php:88 +#: inc/forms-data.php:108 #: inc/global-settings/global-settings.php:89 #: inc/global-settings/global-settings.php:639 #: inc/rest-api.php:203 @@ -126,18 +126,18 @@ msgid "Nonce verification failed." msgstr "La verificación del nonce falló." #. translators: %1$s: Opening anchor tag with URL, %2$s: Closing anchor tag, %3$s: SureForms Pro Plugin Name. -#: admin/admin.php:2572 +#: admin/admin.php:2626 #, php-format msgid "Please %1$sactivate%2$s your copy of %3$s to get new features, access support, receive update notifications, and more." msgstr "Por favor, %1$sactiva%2$s tu copia de %3$s para obtener nuevas funciones, acceder al soporte, recibir notificaciones de actualizaciones y más." #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version, %4$s: Anchor tag open, %5$s: Closing anchor tag. -#: admin/admin.php:2590 +#: admin/admin.php:2644 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version from %4$shere%5$s." msgstr "SureForms %1$s requiere un mínimo de %2$s %3$s para funcionar correctamente. Por favor, actualice a la última versión desde %4$saquí%5$s." -#: admin/admin.php:3339 +#: admin/admin.php:3503 #: inc/global-settings/email-summary.php:224 #: assets/build/entries.js:172 #: assets/build/payments.js:172 @@ -207,7 +207,7 @@ msgstr "Basura" msgid "Published" msgstr "Publicado" -#: admin/admin.php:3331 +#: admin/admin.php:3495 msgid "View" msgstr "Ver" @@ -299,11 +299,11 @@ msgstr "No se especificó ningún complemento" msgid "Plugin Successfully Activated" msgstr "Plugin activado con éxito" -#: admin/admin.php:1780 +#: admin/admin.php:1834 msgid "Activating..." msgstr "Activando..." -#: admin/admin.php:1781 +#: admin/admin.php:1835 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/formEditor.js:172 @@ -318,17 +318,17 @@ msgstr "Activando..." msgid "Activated" msgstr "Activado" -#: admin/admin.php:1782 +#: admin/admin.php:1836 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Activate" msgstr "Activar" -#: admin/admin.php:1783 +#: admin/admin.php:1837 msgid "Installing..." msgstr "Instalando..." -#: admin/admin.php:1784 +#: admin/admin.php:1838 msgid "Installed" msgstr "Instalado" @@ -336,12 +336,13 @@ msgstr "Instalado" msgid "You do not have permission to access this page." msgstr "No tienes permiso para acceder a esta página." -#: admin/admin.php:2784 -#: admin/admin.php:2912 -#: admin/admin.php:2950 -#: admin/admin.php:2971 -#: admin/admin.php:3294 -#: admin/admin.php:3601 +#: admin/admin.php:2874 +#: admin/admin.php:2917 +#: admin/admin.php:3076 +#: admin/admin.php:3114 +#: admin/admin.php:3135 +#: admin/admin.php:3458 +#: admin/admin.php:3847 #: inc/admin-ajax.php:164 #: inc/payments/admin/admin-handler.php:638 #: inc/payments/stripe/admin-stripe-handler.php:80 @@ -354,7 +355,7 @@ msgid "Form ID is required." msgstr "Se requiere el ID del formulario." #: inc/admin-ajax.php:184 -#: inc/form-submit.php:1153 +#: inc/form-submit.php:1261 msgid "Invalid form ID." msgstr "ID de formulario no válido." @@ -593,28 +594,28 @@ msgstr "Teléfono" msgid "Textarea" msgstr "Área de texto" -#: inc/form-submit.php:231 +#: inc/form-submit.php:281 msgid "Cloudflare Turnstile secret key is invalid." msgstr "La clave secreta de Cloudflare Turnstile no es válida." -#: inc/form-submit.php:238 +#: inc/form-submit.php:288 msgid "Cloudflare Turnstile response is missing." msgstr "Falta la respuesta de Cloudflare Turnstile." -#: inc/form-submit.php:282 +#: inc/form-submit.php:332 msgid "hCaptcha secret key is invalid." msgstr "La clave secreta de hCaptcha no es válida." -#: inc/form-submit.php:289 +#: inc/form-submit.php:339 msgid "hCaptcha response is missing." msgstr "Falta la respuesta de hCaptcha." -#: inc/form-submit.php:330 -#: inc/form-submit.php:589 +#: inc/form-submit.php:380 +#: inc/form-submit.php:639 msgid "Form data is not found." msgstr "Los datos del formulario no se encuentran." -#: inc/forms-data.php:68 +#: inc/forms-data.php:88 msgid "Sorry, you are not allowed to view the form." msgstr "Lo siento, no tienes permiso para ver el formulario." @@ -724,7 +725,7 @@ msgstr "Editar formulario" msgid "Edit" msgstr "Editar" -#: admin/admin.php:3072 +#: admin/admin.php:3236 #: inc/page-builders/elementor/form-widget.php:346 #: assets/build/dashboard.js:2 msgid "Create New Form" @@ -761,8 +762,8 @@ msgstr "Ver formulario" msgid "View Forms" msgstr "Ver formularios" -#: admin/admin.php:1443 -#: admin/admin.php:1444 +#: admin/admin.php:1489 +#: admin/admin.php:1490 #: inc/post-types.php:274 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -8276,7 +8277,7 @@ msgstr "Social" msgid "Travel" msgstr "Viajar" -#: inc/helper.php:2375 +#: inc/helper.php:2368 msgid "Blank Form" msgstr "Formulario en blanco" @@ -8595,7 +8596,9 @@ msgstr "Por favor, añade una opción de propiedades a MultiButtonsControl" msgid "Icon Library" msgstr "Biblioteca de Iconos" +#: admin/admin.php:4062 #: assets/build/blocks.js:172 +#: assets/build/dashboard.js:172 #: modules/gutenberg/build/blocks.js:4 msgid "Close" msgstr "Cerrar" @@ -8884,9 +8887,9 @@ msgstr "Agregar bloques a la barra de acción rápida" msgid "Re-arrange block inside Quick Action Bar" msgstr "Reorganizar bloque dentro de la Barra de Acción Rápida" -#: admin/admin.php:1236 -#: admin/admin.php:1237 -#: admin/admin.php:4129 +#: admin/admin.php:1282 +#: admin/admin.php:1283 +#: admin/admin.php:4737 #: assets/build/blocks.js:172 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -9259,7 +9262,7 @@ msgstr "Centro" msgid "Right" msgstr "Correcto" -#: inc/form-submit.php:1344 +#: inc/form-submit.php:1452 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Google reCAPTCHA" @@ -9269,7 +9272,7 @@ msgstr "Google reCAPTCHA" msgid "CloudFlare Turnstile" msgstr "CloudFlare Turnstile" -#: inc/form-submit.php:1348 +#: inc/form-submit.php:1456 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "hCaptcha" @@ -9551,7 +9554,7 @@ msgstr "Clave del sitio" msgid "Secret Key" msgstr "Clave secreta" -#: inc/form-submit.php:1352 +#: inc/form-submit.php:1460 #: assets/build/settings.js:172 msgid "Cloudflare Turnstile" msgstr "Cloudflare Turnstile" @@ -9576,7 +9579,8 @@ msgstr "Conectar ahora" msgid "Authentication Failed" msgstr "Autenticación fallida" -#: admin/admin.php:3516 +#: admin/admin.php:4061 +#: assets/build/dashboard.js:172 #: assets/build/templatePicker.js:172 msgid "Contact Support" msgstr "Contactar con el soporte" @@ -10510,7 +10514,7 @@ msgstr "Agrega impresionantes iconos personalizables a tu sitio web." msgid "icon" msgstr "icono" -#: admin/admin.php:2639 +#: admin/admin.php:2693 msgid "Rate SureForms" msgstr "Califica SureForms" @@ -10566,18 +10570,18 @@ msgstr "Desbloquear Añadir Nota" msgid "With the SureForms Starter plan, enhance your submitted form entries by adding personalized notes for better clarity and tracking." msgstr "Con el plan SureForms Starter, mejora tus entradas de formulario enviadas añadiendo notas personalizadas para una mejor claridad y seguimiento." -#: inc/form-submit.php:990 +#: inc/form-submit.php:1046 msgid "Email notification passed to the sending server" msgstr "Notificación de correo electrónico pasada al servidor de envío" #. translators: Here, %s is the comma separated emails list. -#: inc/form-submit.php:1063 +#: inc/form-submit.php:1130 #, php-format msgid "Email notification recipient: %s" msgstr "Destinatario de la notificación por correo electrónico: %s" #. translators: Here, %1$s is the comma separated emails list and %2$s is error report ( if any ). -#: inc/form-submit.php:1080 +#: inc/form-submit.php:1147 #, php-format msgid "Email server was unable to send the email notification. Recipient: %1$s. Reason: %2$s" msgstr "El servidor de correo no pudo enviar la notificación por correo electrónico. Destinatario: %1$s. Razón: %2$s" @@ -10620,7 +10624,7 @@ msgstr "Desbloquear formularios conversacionales" msgid "With the SureForms Pro Plan, you can transform your forms into engaging conversational layouts for a seamless user experience." msgstr "Con el Plan SureForms Pro, puedes transformar tus formularios en diseños conversacionales atractivos para una experiencia de usuario fluida." -#: admin/admin.php:1075 +#: admin/admin.php:1121 msgid "Get SureForms Pro" msgstr "Obtén SureForms Pro" @@ -10832,24 +10836,24 @@ msgstr "Seleccionar degradado" msgid "reCAPTCHA" msgstr "reCAPTCHA" -#: inc/form-submit.php:1288 +#: inc/form-submit.php:1396 msgid "Captcha validation failed. No error code provided." msgstr "La validación del captcha falló. No se proporcionó un código de error." -#: inc/form-submit.php:1289 +#: inc/form-submit.php:1397 msgid "Captcha validation failed." msgstr "La validación del captcha falló." -#: inc/form-submit.php:1356 +#: inc/form-submit.php:1464 msgid "Unknown Captcha" msgstr "Captcha desconocido" -#: inc/form-submit.php:1357 +#: inc/form-submit.php:1465 msgid "Invalid captcha type." msgstr "Tipo de captcha no válido." #. translators: %s is the captcha title. -#: inc/form-submit.php:1370 +#: inc/form-submit.php:1478 #, php-format msgid "%s verification failed. Please contact your site administrator." msgstr "La verificación de %s falló. Por favor, contacte a su administrador del sitio." @@ -11246,8 +11250,8 @@ msgstr "Describe el formulario que deseas crear" msgid "We are building your form…" msgstr "Estamos construyendo tu formulario…" -#: admin/admin.php:1351 -#: admin/admin.php:1352 +#: admin/admin.php:1397 +#: admin/admin.php:1398 msgid "SMTP" msgstr "SMTP" @@ -11379,31 +11383,32 @@ msgstr "Habilitar notificación de administrador" msgid "Admin notifications keep you informed about new form entries since your last visit." msgstr "Las notificaciones de administrador te mantienen informado sobre nuevas entradas de formularios desde tu última visita." -#: admin/admin.php:2789 -#: admin/admin.php:2908 -#: admin/admin.php:2946 -#: admin/admin.php:2967 -#: admin/admin.php:3298 -#: admin/admin.php:3596 +#: admin/admin.php:2869 +#: admin/admin.php:2922 +#: admin/admin.php:3072 +#: admin/admin.php:3110 +#: admin/admin.php:3131 +#: admin/admin.php:3462 +#: admin/admin.php:3842 msgid "Unauthorized user." msgstr "Usuario no autorizado." #. translators: 1: opening span, 2: opening strong (inline), 3: closing strong, 4: closing span, 5: opening strong (block), 6: closing strong -#: admin/admin.php:2917 +#: admin/admin.php:3081 #, php-format msgid "%1$sGet started by %2$sbuilding your first form%3$s.%4$s%5$sExperience the power of our intuitive AI Form Builder%6$s" msgstr "%1$sComienza %2$screando tu primer formulario%3$s.%4$s%5$sExperimenta el poder de nuestro intuitivo Creador de Formularios AI%6$s" -#: admin/admin.php:2928 +#: admin/admin.php:3092 msgid "SureForms is waiting for you!" msgstr "¡SureForms te está esperando!" -#: admin/admin.php:2930 +#: admin/admin.php:3094 msgid "Build My First Form" msgstr "Construir mi primer formulario" -#: admin/admin.php:2931 -#: admin/admin.php:3418 +#: admin/admin.php:3095 +#: admin/admin.php:3650 msgid "Dismiss" msgstr "Descartar" @@ -11423,51 +11428,51 @@ msgstr "Iniciar sesión" msgid "Register" msgstr "Registrar" -#: admin/admin.php:3327 +#: admin/admin.php:3491 msgid "Recent Entries" msgstr "Entradas Recientes" -#: admin/admin.php:3328 +#: admin/admin.php:3492 msgid "( Last 7 days )" msgstr "( Últimos 7 días )" -#: admin/admin.php:4070 +#: admin/admin.php:4678 msgid "Use Conditional Logic to show only what matters" msgstr "Usa lógica condicional para mostrar solo lo que importa" -#: admin/admin.php:4071 +#: admin/admin.php:4679 msgid "Split your form into steps to keep it easy" msgstr "Divide tu formulario en pasos para mantenerlo sencillo" -#: admin/admin.php:4072 +#: admin/admin.php:4680 msgid "Let people upload files directly to your form" msgstr "Permite que las personas suban archivos directamente a tu formulario" -#: admin/admin.php:4073 +#: admin/admin.php:4681 msgid "Turn responses into downloadable PDFs automatically" msgstr "Convierte las respuestas en PDFs descargables automáticamente" -#: admin/admin.php:4074 +#: admin/admin.php:4682 msgid "Let users sign with a simple signature field" msgstr "Permitir que los usuarios firmen con un campo de firma simple" -#: admin/admin.php:4075 +#: admin/admin.php:4683 msgid "Connect your form to other tools using webhooks" msgstr "Conecta tu formulario a otras herramientas usando webhooks" -#: admin/admin.php:4076 +#: admin/admin.php:4684 msgid "Use Conversational Forms for a chat-like experience" msgstr "Utiliza Formularios Conversacionales para una experiencia similar a un chat" -#: admin/admin.php:4077 +#: admin/admin.php:4685 msgid "Let users register or log in through your form" msgstr "Permitir a los usuarios registrarse o iniciar sesión a través de su formulario" -#: admin/admin.php:4078 +#: admin/admin.php:4686 msgid "Build forms that create WordPress user accounts" msgstr "Crear formularios que generen cuentas de usuario de WordPress" -#: admin/admin.php:4079 +#: admin/admin.php:4687 msgid "Add calculations to auto-total scores or prices" msgstr "Agrega cálculos para totalizar automáticamente las puntuaciones o precios" @@ -11666,6 +11671,7 @@ msgstr "Obtén más control, flujos de trabajo más rápidos y una personalizaci msgid "Selected features require %1$s - use code %2$s to get 10% off on any plan." msgstr "Las funciones seleccionadas requieren %1$s - usa el código %2$s para obtener un 10% de descuento en cualquier plan." +#: admin/admin.php:4060 #: assets/build/dashboard.js:172 msgid "Copied" msgstr "Copiado" @@ -11889,7 +11895,7 @@ msgstr "Explora SureDash" msgid "Something went wrong. We have logged the error for further investigation" msgstr "Algo salió mal. Hemos registrado el error para una investigación posterior." -#: inc/field-validation.php:413 +#: inc/field-validation.php:452 msgid "Field is not valid." msgstr "El campo no es válido." @@ -11957,8 +11963,8 @@ msgstr "Miniatura de video de SureForms" msgid "Expected format for emails - email@sureforms.com or John Doe " msgstr "Formato esperado para correos electrónicos: email@sureforms.com o John Doe " -#: admin/admin.php:1471 -#: admin/admin.php:1472 +#: admin/admin.php:1517 +#: admin/admin.php:1518 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -12173,7 +12179,7 @@ msgstr "¡Eleva tu SEO y asciende en los rankings de búsqueda sin esfuerzo!" msgid "Boost your website's visibility with smart SEO automation. Optimize content, track keyword performance, and get actionable insights, all inside WordPress." msgstr "Aumenta la visibilidad de tu sitio web con una automatización SEO inteligente. Optimiza el contenido, rastrea el rendimiento de las palabras clave y obtén información procesable, todo dentro de WordPress." -#: inc/form-submit.php:129 +#: inc/form-submit.php:174 #: inc/form-views.php:205 #: inc/payments/admin/admin-handler.php:99 #: inc/payments/admin/admin-handler.php:183 @@ -15372,12 +15378,12 @@ msgid "Stripe Settings" msgstr "Configuración de Stripe" #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version. -#: admin/admin.php:2281 +#: admin/admin.php:2335 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version." msgstr "SureForms %1$s requiere un mínimo de %2$s %3$s para funcionar correctamente. Por favor, actualice a la última versión." -#: admin/admin.php:2294 +#: admin/admin.php:2348 msgid "Update Now" msgstr "Actualizar ahora" @@ -15425,8 +15431,8 @@ msgstr "Posición del signo de moneda" msgid "Select the position of the currency symbol relative to the amount." msgstr "Seleccione la posición del símbolo de moneda en relación con la cantidad." -#: admin/admin.php:1414 -#: admin/admin.php:1415 +#: admin/admin.php:1460 +#: admin/admin.php:1461 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -15440,41 +15446,41 @@ msgstr "Seleccione la posición del símbolo de moneda en relación con la canti msgid "Learn" msgstr "Aprender" -#: admin/admin.php:2635 +#: admin/admin.php:2689 msgid "Amazing! SureForms is powering your forms and submissions - let's keep growing together!" msgstr "¡Increíble! SureForms está impulsando tus formularios y envíos - ¡sigamos creciendo juntos!" -#: admin/admin.php:2636 +#: admin/admin.php:2690 msgid "If SureForms has been helpful, would you mind taking a moment to leave a 5-star review on WordPress.org?" msgstr "Si SureForms ha sido útil, ¿te importaría tomarte un momento para dejar una reseña de 5 estrellas en WordPress.org?" -#: admin/admin.php:2647 -#: admin/admin.php:2711 +#: admin/admin.php:2701 +#: admin/admin.php:2765 msgid "Maybe later" msgstr "Quizás más tarde" -#: admin/admin.php:2653 +#: admin/admin.php:2707 msgid "I already did" msgstr "Ya lo hice" -#: admin/admin.php:2702 +#: admin/admin.php:2756 msgid "SureForms is ready to power your forms — explore what's possible!" msgstr "SureForms está listo para potenciar tus formularios — ¡explora lo que es posible!" -#: admin/admin.php:2703 +#: admin/admin.php:2757 msgid "Manage your forms, track submissions, and discover features like AI Form Builder, payment integrations, and more from the SureForms dashboard." msgstr "Administra tus formularios, realiza un seguimiento de las presentaciones y descubre funciones como el Creador de Formularios con IA, integraciones de pago y más desde el panel de SureForms." -#: admin/admin.php:2706 +#: admin/admin.php:2760 msgid "Go to Dashboard" msgstr "Ir al panel de control" -#: admin/admin.php:2717 +#: admin/admin.php:2771 msgid "I already know" msgstr "Ya lo sé" -#: admin/admin.php:2833 -#: admin/admin.php:3608 +#: admin/admin.php:2981 +#: admin/admin.php:3854 msgid "Invalid parameters." msgstr "Parámetros no válidos." @@ -15858,10 +15864,10 @@ msgid "This form is not yet available. Check back after the scheduled start time msgstr "Este formulario aún no está disponible. Vuelve a consultar después de la hora de inicio programada." #: inc/admin/html-form-detector.php:268 -#: inc/form-submit.php:197 -#: inc/form-submit.php:503 -#: inc/form-submit.php:548 -#: inc/form-submit.php:1149 +#: inc/form-submit.php:247 +#: inc/form-submit.php:553 +#: inc/form-submit.php:598 +#: inc/form-submit.php:1257 #: inc/migrator/bootstrap.php:357 #: inc/payments/front-end.php:79 #: inc/payments/front-end.php:265 @@ -15884,48 +15890,48 @@ msgstr "Este formulario aún no está disponible. Vuelve a consultar después de msgid "Security verification failed. Please refresh the page and try again." msgstr "La verificación de seguridad falló. Por favor, actualice la página e inténtelo de nuevo." -#: inc/form-submit.php:582 +#: inc/form-submit.php:632 msgid "Form data was not found." msgstr "No se encontraron los datos del formulario." -#: inc/form-submit.php:336 +#: inc/form-submit.php:386 msgid "Form ID is missing." msgstr "Falta el ID del formulario." -#: inc/form-submit.php:213 +#: inc/form-submit.php:263 msgid "Sorry, you do not have permission to access this resource." msgstr "Lo siento, no tienes permiso para acceder a este recurso." -#: inc/form-submit.php:368 +#: inc/form-submit.php:418 msgid "You do not have permission to submit this form." msgstr "No tienes permiso para enviar este formulario." -#: inc/form-submit.php:378 +#: inc/form-submit.php:428 msgid "This form is no longer available." msgstr "Este formulario ya no está disponible." -#: inc/form-submit.php:396 +#: inc/form-submit.php:446 msgid "Please check the form for errors." msgstr "Por favor, revise el formulario en busca de errores." -#: inc/form-submit.php:523 -#: inc/form-submit.php:564 +#: inc/form-submit.php:573 +#: inc/form-submit.php:614 msgid "Your submission was flagged as spam. Please try again." msgstr "Tu envío fue marcado como spam. Por favor, inténtalo de nuevo." -#: inc/form-submit.php:818 +#: inc/form-submit.php:868 msgid "Unable to submit form. Please try again." msgstr "No se puede enviar el formulario. Por favor, inténtelo de nuevo." -#: inc/form-submit.php:1070 +#: inc/form-submit.php:1137 msgid "No SMTP plugin detected. Please configure an SMTP plugin to enable email sending." msgstr "No se detectó ningún complemento SMTP. Por favor, configure un complemento SMTP para habilitar el envío de correos electrónicos." -#: inc/form-submit.php:1071 +#: inc/form-submit.php:1138 msgid "Email sending failed for an unknown reason." msgstr "El envío del correo electrónico falló por una razón desconocida." -#: inc/form-submit.php:1124 +#: inc/form-submit.php:1201 msgid "No emails were sent." msgstr "No se enviaron correos electrónicos." @@ -16438,7 +16444,7 @@ msgid "Duplicate form?" msgstr "¿Formulario duplicado?" #: assets/build/formSubmit.js:2 -#: assets/js/unminified/form-submit.js:917 +#: assets/js/unminified/form-submit.js:938 msgid "An error occurred while submitting your form. Please try again." msgstr "Se produjo un error al enviar su formulario. Por favor, inténtelo de nuevo." @@ -16815,28 +16821,28 @@ msgstr "Secreto del webhook no configurado." msgid "Invalid webhook signature." msgstr "Firma de webhook no válida." -#: admin/admin.php:1253 -#: admin/admin.php:1851 +#: admin/admin.php:1299 +#: admin/admin.php:1905 #: assets/build/formEditor.js:172 msgid "Quizzes" msgstr "Cuestionarios" -#: admin/admin.php:1252 +#: admin/admin.php:1298 msgid "Quiz Entries" msgstr "Entradas del cuestionario" -#: admin/admin.php:1255 -#: admin/admin.php:1288 -#: admin/admin.php:1321 +#: admin/admin.php:1301 +#: admin/admin.php:1334 +#: admin/admin.php:1367 #: assets/build/settings.js:172 msgid "New" msgstr "Nuevo" -#: inc/form-submit.php:1158 +#: inc/form-submit.php:1266 msgid "Invalid form." msgstr "Formulario no válido." -#: inc/form-submit.php:1163 +#: inc/form-submit.php:1271 msgid "Too many requests. Please try again shortly." msgstr "Demasiadas solicitudes. Por favor, inténtelo de nuevo en breve." @@ -17345,9 +17351,9 @@ msgstr "Perfecto para educación, formación y trivia divertida" msgid "Select this to create a quiz with scored questions and graded results." msgstr "Selecciona esto para crear un cuestionario con preguntas puntuadas y resultados calificados." -#: admin/admin.php:1285 -#: admin/admin.php:1286 -#: admin/admin.php:1856 +#: admin/admin.php:1331 +#: admin/admin.php:1332 +#: admin/admin.php:1910 msgid "Survey Reports" msgstr "Informes de encuestas" @@ -17753,7 +17759,7 @@ msgid "Error creating SureForms Form." msgstr "Error al crear el formulario de SureForms." #. translators: %s represents the minimum number of characters required -#: inc/field-validation.php:426 +#: inc/field-validation.php:465 #: inc/translatable.php:94 #, php-format msgid "Please enter at least %s characters." @@ -17911,9 +17917,9 @@ msgstr "La respuesta de la IA estaba vacía. Por favor, refine su solicitud y vu msgid "Unable to build form fields from the AI response." msgstr "No se pueden construir los campos del formulario a partir de la respuesta de la IA." -#: admin/admin.php:1318 -#: admin/admin.php:1319 -#: admin/admin.php:1861 +#: admin/admin.php:1364 +#: admin/admin.php:1365 +#: admin/admin.php:1915 msgid "Partial Entries" msgstr "Entradas parciales" @@ -18784,23 +18790,23 @@ msgstr "No se pudo verificar el monto del pago para este formulario. Por favor, msgid "Cancellation is not supported for this payment gateway." msgstr "La cancelación no es compatible con esta pasarela de pago." -#: admin/admin.php:3039 +#: admin/admin.php:3203 msgid "SureForms AI Quick Draft" msgstr "SureForms AI Borrador Rápido" -#: admin/admin.php:3058 +#: admin/admin.php:3222 msgid "Describe the form and let SureForms AI generate it for you." msgstr "Describe el formulario y deja que SureForms AI lo genere por ti." -#: admin/admin.php:3061 +#: admin/admin.php:3225 msgid "Describe your form" msgstr "Describe tu formulario" -#: admin/admin.php:3068 +#: admin/admin.php:3232 msgid "Example: Create a contact form with name, email, phone, and message fields." msgstr "Ejemplo: Crear un formulario de contacto con campos de nombre, correo electrónico, teléfono y mensaje." -#: admin/admin.php:3109 +#: admin/admin.php:3273 msgid "Redirecting..." msgstr "Redirigiendo..." @@ -18813,14 +18819,14 @@ msgid "The prompt is too long. Please shorten it and try again." msgstr "El mensaje es demasiado largo. Por favor, acórtalo e inténtalo de nuevo." #. translators: %s: maximum characters allowed before the @ symbol. -#: inc/field-validation.php:448 +#: inc/field-validation.php:487 #: inc/translatable.php:97 #, php-format msgid "The part before @ may not exceed %s characters." msgstr "La parte antes de @ no puede exceder %s caracteres." #. translators: %s: maximum characters allowed after the @ symbol. -#: inc/field-validation.php:454 +#: inc/field-validation.php:493 #: inc/translatable.php:100 #, php-format msgid "The part after @ may not exceed %s characters." @@ -18907,74 +18913,74 @@ msgstr "Lo siento, no tienes permiso para renderizar este formulario." msgid "This form requires a payment. Please complete the payment and submit again." msgstr "Este formulario requiere un pago. Por favor, complete el pago y envíe de nuevo." -#: admin/admin.php:552 +#: admin/admin.php:598 msgid "You are not allowed to update this prompt." msgstr "No tienes permiso para actualizar este mensaje." -#: admin/admin.php:595 +#: admin/admin.php:641 msgid "Finish setting up your form" msgstr "Termina de configurar tu formulario" -#: admin/admin.php:627 +#: admin/admin.php:673 msgid "Review or edit your form" msgstr "Revisa o edita tu formulario" -#: admin/admin.php:628 -#: admin/admin.php:3907 +#: admin/admin.php:674 +#: admin/admin.php:4515 msgid "Edit form" msgstr "Editar formulario" -#: admin/admin.php:633 +#: admin/admin.php:679 msgid "Personalize the Thank You message" msgstr "Personaliza el mensaje de agradecimiento" -#: admin/admin.php:634 +#: admin/admin.php:680 msgid "Edit message" msgstr "Editar mensaje" -#: admin/admin.php:639 +#: admin/admin.php:685 msgid "Choose who gets notified of new replies" msgstr "Elige quién recibe notificaciones de nuevas respuestas" -#: admin/admin.php:640 +#: admin/admin.php:686 msgid "Set up email" msgstr "Configurar correo electrónico" -#: admin/admin.php:648 +#: admin/admin.php:694 msgid "your form" msgstr "tu formulario" #. translators: %s: form title. -#: admin/admin.php:651 +#: admin/admin.php:697 #, php-format msgid "Finish setting up %s" msgstr "Termina de configurar %s" #. translators: %s: form title. -#: admin/admin.php:659 +#: admin/admin.php:705 #, php-format msgid "View %s (opens in a new tab)" msgstr "Ver %s (se abre en una nueva pestaña)" -#: admin/admin.php:664 +#: admin/admin.php:710 msgid "Customize your form to get it ready for real submissions:" msgstr "Personaliza tu formulario para que esté listo para envíos reales:" -#: admin/admin.php:3896 +#: admin/admin.php:4504 msgid "We’ve already created this form for you. Finish customising it so it’s ready to collect real submissions." msgstr "Ya hemos creado este formulario para ti. Termina de personalizarlo para que esté listo para recibir envíos reales." #. translators: %s: form name. -#: admin/admin.php:3901 +#: admin/admin.php:4509 #, php-format msgid "Finish setting up “%s”" msgstr "Termina de configurar “%s”" -#: admin/admin.php:3914 +#: admin/admin.php:4522 msgid "Edit the Thank You message" msgstr "Edita el mensaje de agradecimiento" -#: admin/admin.php:3920 +#: admin/admin.php:4528 msgid "Set where replies go" msgstr "Configura dónde van las respuestas" @@ -19002,123 +19008,90 @@ msgstr "Por favor, elige un archivo de imagen." msgid "This form could not be submitted. Please refresh the page and try again." msgstr "Este formulario no pudo ser enviado. Por favor, actualiza la página e inténtalo de nuevo." -#: admin/admin.php:2341 -#: admin/admin.php:2430 +#: admin/admin.php:2395 +#: admin/admin.php:2484 msgid "Your SureForms database is up to date. New form entries will be saved as usual." msgstr "Su base de datos de SureForms está actualizada. Las nuevas entradas de formularios se guardarán como de costumbre." -#: admin/admin.php:2355 -#: admin/admin.php:2439 +#: admin/admin.php:2409 +#: admin/admin.php:2493 #: inc/rest-api.php:1447 msgid "SureForms could not finish updating the database. Your hosting may not allow SureForms to create database tables — please contact your hosting provider or SureForms support." msgstr "SureForms no pudo terminar de actualizar la base de datos. Es posible que su alojamiento no permita a SureForms crear tablas de base de datos — por favor, contacte a su proveedor de alojamiento o al soporte de SureForms." -#: admin/admin.php:2358 +#: admin/admin.php:2412 msgid "Contact support" msgstr "Contactar soporte" -#: admin/admin.php:2378 +#: admin/admin.php:2432 msgid "Database update needed" msgstr "Actualización de base de datos necesaria" -#: admin/admin.php:2384 +#: admin/admin.php:2438 msgid "Fix now" msgstr "Arreglar ahora" -#: admin/admin.php:2453 +#: admin/admin.php:2507 msgid "SureForms — database update needed" msgstr "SureForms — se necesita actualización de base de datos" -#: admin/admin.php:2458 +#: admin/admin.php:2512 msgid "Update database" msgstr "Actualizar base de datos" -#: admin/admin.php:2478 +#: admin/admin.php:2532 msgid "You do not have permission to update the database." msgstr "No tiene permiso para actualizar la base de datos." -#: admin/admin.php:3437 +#: admin/admin.php:3669 msgid "You do not have permission to do this." msgstr "No tiene permiso para hacer esto." -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:3507 -msgid "%d form submission in a row could not be completed." -msgid_plural "%d form submissions in a row could not be completed." -msgstr[0] "%d envío de formulario consecutivo no pudo completarse." -msgstr[1] "" - -#: admin/admin.php:3515 -msgid "Visitors may be unable to reach you, and those entries were not saved." -msgstr "Los visitantes pueden no poder contactarlo, y esas entradas no fueron guardadas." - -#: admin/admin.php:3525 -msgid "Form submissions are completing normally." -msgstr "Los envíos de formularios se están completando normalmente." - -#: admin/admin.php:3539 -msgid "No caching plugin that needs configuring was found." -msgstr "No se encontró ningún plugin de caché que necesite configuración." - #. translators: %s: caching plugin name. -#: admin/admin.php:3551 +#: admin/admin.php:4209 msgid "%s may interfere with your forms." msgstr "%s puede interferir con sus formularios." -#: admin/admin.php:3554 -msgid "Caching and JavaScript optimisation can serve a stale copy of your form or load its scripts out of order." -msgstr "La optimización de caché y JavaScript puede servir una copia obsoleta de su formulario o cargar sus scripts fuera de orden." - -#: admin/admin.php:3555 +#: admin/admin.php:4185 +#: admin/admin.php:4213 msgid "Help Me Fix" msgstr "Ayúdame a arreglarlo" -#: admin/admin.php:3650 +#: admin/admin.php:4258 msgid "SureForms found your form entries stored under a different database table prefix. Reconnecting them takes a moment, and your existing entries will be kept." msgstr "SureForms encontró sus entradas de formulario almacenadas bajo un prefijo de tabla de base de datos diferente. Reconectarlas toma un momento, y sus entradas existentes se mantendrán." -#: admin/admin.php:3653 +#: admin/admin.php:4261 msgid "SureForms needs to update your database before it can save new form entries. This only takes a moment and will not change your forms or existing content. Entries submitted before now cannot be recovered from here." msgstr "SureForms necesita actualizar su base de datos antes de poder guardar nuevas entradas de formularios. Esto solo toma un momento y no cambiará sus formularios ni el contenido existente. Las entradas enviadas antes de ahora no pueden recuperarse desde aquí." #. translators: %s: site host. -#: admin/admin.php:4265 +#: admin/admin.php:5032 msgid "SureForms: form submissions are failing on %s" msgstr "SureForms: los envíos de formularios están fallando en %s" -#: admin/admin.php:4274 +#: admin/admin.php:4990 msgid "Debug log: no entries recorded." msgstr "Registro de depuración: no se registraron entradas." #. translators: 1: entries shown, 2: entries recorded. -#: admin/admin.php:4278 +#: admin/admin.php:4995 msgid "Debug log (most recent %1$d of %2$d entries)" msgstr "Registro de depuración (más reciente %1$d de %2$d entradas)" -#: admin/admin.php:4288 -msgid "Older entries were left out to keep this email within the length a mail client accepts. The full log can be downloaded from SureForms → Settings → General." -msgstr "Se dejaron fuera entradas más antiguas para mantener este correo dentro de la longitud que acepta un cliente de correo. El registro completo se puede descargar desde SureForms → Configuración → General." - -#: admin/admin.php:4318 +#: admin/admin.php:5158 msgid "Hello SureForms support," msgstr "Hola soporte de SureForms," -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:4322 -msgid "SureForms has recorded %d form submission in a row that could not be completed." -msgid_plural "SureForms has recorded %d form submissions in a row that could not be completed." -msgstr[0] "SureForms ha registrado %d envío de formulario consecutivo que no pudo completarse." -msgstr[1] "" - -#: admin/admin.php:4332 +#: admin/admin.php:5182 msgid "Site details" msgstr "Detalles del sitio" -#: admin/admin.php:4335 +#: admin/admin.php:5185 msgid "not active" msgstr "no activo" -#: admin/admin.php:4338 +#: admin/admin.php:5188 msgid "none detected" msgstr "ninguno detectado" @@ -19126,7 +19099,7 @@ msgstr "ninguno detectado" msgid "No form submission failures have been recorded." msgstr "No se han registrado fallos en el envío de formularios." -#: inc/form-submit.php:118 +#: inc/form-submit.php:163 msgid "Not found." msgstr "No encontrado." @@ -19211,6 +19184,193 @@ msgstr "Vistas y Conversión de Formularios" msgid "Logs" msgstr "Registros" +#: admin/admin.php:2831 +msgid "Previous notice" +msgstr "Aviso anterior" + +#: admin/admin.php:2832 +msgid "Next notice" +msgstr "Aviso siguiente" + +#. translators: 1: current position, 2: total notices. +#: admin/admin.php:2834 +msgid "%1$d of %2$d" +msgstr "%1$d de %2$d" + +#: admin/admin.php:2891 +msgid "Nothing to report." +msgstr "Nada que reportar." + +#: admin/admin.php:4057 +#: assets/build/dashboard.js:172 +msgid "Details" +msgstr "Detalles" + +#: admin/admin.php:4058 +msgid "What we recorded about this problem. Copy it into your support request so we can start from the cause rather than a description of it." +msgstr "Lo que registramos sobre este problema. Cópielo en su solicitud de soporte para que podamos comenzar desde la causa en lugar de una descripción de ella." + +#: admin/admin.php:4059 +#: assets/build/dashboard.js:172 +msgid "Copy details" +msgstr "Copiar detalles" + +#: admin/admin.php:4068 +msgid "Copy the details first, so you have them to paste." +msgstr "Copie los detalles primero, para que los tenga para pegar." + +#: admin/admin.php:4072 +msgid "Copied. Contact Support is now available." +msgstr "Copiado. Contactar con Soporte ahora está disponible." + +#: admin/admin.php:4073 +msgid "Your browser would not let us copy. Select the text above and copy it by hand." +msgstr "Su navegador no nos permitió copiar. Seleccione el texto de arriba y cópielo manualmente." + +#: admin/admin.php:4076 +msgid "Recorded diagnostics" +msgstr "Diagnósticos registrados" + +#: admin/admin.php:4080 +msgid "Collecting the details…" +msgstr "Recopilando los detalles…" + +#: admin/admin.php:4081 +msgid "We could not collect the details. Contact Support and describe what happened, and we will take it from there." +msgstr "No pudimos recopilar los detalles. Contacte con Soporte y describa lo que sucedió, y lo tomaremos desde allí." + +#. translators: %s: form title. +#: admin/admin.php:4108 +msgid "We noticed a form submission failure on %s." +msgstr "Notamos un fallo en el envío del formulario en %s." + +#: admin/admin.php:4109 +msgid "We noticed a form submission failure." +msgstr "Notamos un fallo en el envío del formulario." + +#: admin/admin.php:4110 +msgid "Visitors may not be able to reach you, and their entries were not saved." +msgstr "Los visitantes pueden no poder contactarlo, y sus entradas no fueron guardadas." + +#. translators: %s: form title. +#: admin/admin.php:4115 +msgid "We noticed a notification failure on %s." +msgstr "Notamos un fallo en la notificación en %s." + +#: admin/admin.php:4116 +msgid "We noticed a notification failure." +msgstr "Notamos un fallo en la notificación." + +#: admin/admin.php:4117 +msgid "The entry was saved, but we could not send the email about it. New entries may be coming in without you knowing." +msgstr "La entrada fue guardada, pero no pudimos enviar el correo electrónico sobre ella. Pueden estar llegando nuevas entradas sin que usted lo sepa." + +#. translators: %s: form title. +#: admin/admin.php:4132 +msgid "We noticed an integration failure on %s." +msgstr "Notamos un fallo en la integración en %s." + +#: admin/admin.php:4133 +msgid "We noticed an integration failure." +msgstr "Notamos un fallo en la integración." + +#: admin/admin.php:4134 +msgid "The entry was saved, but we could not send it to a connected service." +msgstr "La entrada fue guardada, pero no pudimos enviarla a un servicio conectado." + +#: admin/admin.php:4158 +msgid "View details" +msgstr "Ver detalles" + +#: admin/admin.php:4212 +msgid "Caching can show visitors an old copy of your form, or load its scripts in the wrong order." +msgstr "El almacenamiento en caché puede mostrar a los visitantes una copia antigua de su formulario o cargar sus scripts en el orden incorrecto." + +#: admin/admin.php:5005 +msgid "Older entries were left out to keep this excerpt readable. The full log can be downloaded from SureForms → Settings → General." +msgstr "Se dejaron fuera entradas más antiguas para mantener este extracto legible. El registro completo se puede descargar desde SureForms → Configuración → General." + +#. translators: %s: site host. +#: admin/admin.php:5034 +msgid "SureForms has recorded form submissions on %s that could not be completed." +msgstr "SureForms ha registrado envíos de formularios en %s que no pudieron completarse." + +#. translators: %s: site host. +#: admin/admin.php:5038 +msgid "SureForms: notification emails are not being sent on %s" +msgstr "SureForms: los correos electrónicos de notificación no se están enviando en %s" + +#. translators: %s: site host. +#: admin/admin.php:5040 +msgid "SureForms saved entries on %s but could not send the notification emails for them." +msgstr "SureForms guardó entradas en %s pero no pudo enviar los correos electrónicos de notificación para ellas." + +#. translators: %s: site host. +#: admin/admin.php:5044 +msgid "SureForms: an integration is not receiving entries on %s" +msgstr "SureForms: una integración no está recibiendo entradas en %s" + +#. translators: %s: site host. +#: admin/admin.php:5046 +msgid "SureForms saved entries on %s but could not pass them to a connected service." +msgstr "SureForms guardó entradas en %s pero no pudo pasarlas a un servicio conectado." + +#. translators: %s: site host. +#: admin/admin.php:5056 +msgid "SureForms: a problem with the forms on %s" +msgstr "SureForms: un problema con los formularios en %s" + +#. translators: %s: site host. +#: admin/admin.php:5058 +msgid "SureForms has recorded a problem with the forms on %s." +msgstr "SureForms ha registrado un problema con los formularios en %s." + +#. translators: %d: number of failed submissions. +#: admin/admin.php:5083 +msgid "SureForms has recorded %d form submission that could not be completed." +msgid_plural "SureForms has recorded %d form submissions that could not be completed." +msgstr[0] "SureForms ha registrado %d envío de formulario que no pudo completarse." +msgstr[1] "" + +#. translators: %d: number of failed notifications. +#: admin/admin.php:5095 +msgid "SureForms saved %d entry but could not send the notification email for it." +msgid_plural "SureForms saved %d entries but could not send the notification emails for them." +msgstr[0] "SureForms guardó %d entrada pero no pudo enviar el correo electrónico de notificación para ella." +msgstr[1] "" + +#. translators: %d: number of failed integration hand-offs. +#: admin/admin.php:5107 +msgid "SureForms saved %d entry but could not pass it to a connected service." +msgid_plural "SureForms saved %d entries but could not pass them to a connected service." +msgstr[0] "SureForms guardó %d entrada pero no pudo pasarla a un servicio conectado." +msgstr[1] "" + +#. translators: %d: number of recorded problems. +#: admin/admin.php:5119 +msgid "SureForms has recorded %d problem with the forms on this site." +msgid_plural "SureForms has recorded %d problems with the forms on this site." +msgstr[0] "SureForms ha registrado %d problema con los formularios en este sitio." +msgstr[1] "" + +#. translators: %s: form title. +#: admin/admin.php:5169 +msgid "Form: %s" +msgstr "Formulario: %s" + +#: admin/admin.php:5189 +msgid "none recorded" +msgstr "ninguno registrado" + +#. translators: %s: date and time of the previous report, in the site's timezone. +#: admin/admin.php:5212 +msgid "Previously reported: %s" +msgstr "Reportado anteriormente: %s" + +#: assets/build/settings.js:172 +msgid "Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures." +msgstr "Las vistas y envíos por parte de cualquier persona que pueda editar el sitio normalmente se dejan fuera, por lo que probar sus propios formularios no cambia estas cifras." + #: inc/post-types.php:265 msgctxt "post type general name" msgid "Forms" diff --git a/languages/sureforms-fr_FR-51635fe6489fc8288d603fe596c755ca.json b/languages/sureforms-fr_FR-51635fe6489fc8288d603fe596c755ca.json index 271ea9a57..9ea4b60ef 100644 --- a/languages/sureforms-fr_FR-51635fe6489fc8288d603fe596c755ca.json +++ b/languages/sureforms-fr_FR-51635fe6489fc8288d603fe596c755ca.json @@ -1 +1 @@ -{"translation-revision-date":"2024-12-13T13:12:49+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Tableau de bord"],"Settings":["Param\u00e8tres"],"Entries":["Entr\u00e9es"],"Status":["Statut"],"Form":["Formulaire"],"Activated":["Activ\u00e9"],"Activate":["Activer"],"Address":["Adresse"],"Checkbox":["Case \u00e0 cocher"],"Dropdown":["Menu d\u00e9roulant"],"Email":["Email"],"Number":["Nombre"],"Phone":["T\u00e9l\u00e9phone"],"Textarea":["Zone de texte"],"Monday":["Lundi"],"Forms":["Formulaires"],"New Form Submission - %s":["Nouvelle soumission de formulaire - %s"],"GitHub":["GitHub"],"(no title)":["(pas de titre)"],"General":["G\u00e9n\u00e9ral"],"No tags available":["Aucune \u00e9tiquette disponible"],"Back":["Retour"],"Generic tags":["Balises g\u00e9n\u00e9riques"],"Other":["Autre"],"Confirm":["Confirmer"],"Cancel":["Annuler"],"Install":["Installer"],"Plugin Installation failed, Please try again later.":["L'installation du plugin a \u00e9chou\u00e9, veuillez r\u00e9essayer plus tard."],"Plugin activation failed, Please try again later.":["L'activation du plugin a \u00e9chou\u00e9, veuillez r\u00e9essayer plus tard."],"Integrations":["Int\u00e9grations"],"What's New?":["Quoi de neuf ?"],"Core":["C\u0153ur"],"Unlicensed":["Sans licence"],"Connecting\u2026":["Connexion\u2026"],"Install & Activate":["Installer et activer"],"Compliance Settings":["Param\u00e8tres de conformit\u00e9"],"Enable GDPR Compliance":["Activer la conformit\u00e9 RGPD"],"Never store entry data after form submission":["Ne jamais conserver les donn\u00e9es d'entr\u00e9e apr\u00e8s la soumission du formulaire"],"When enabled this form will never store Entries.":["Lorsqu'il est activ\u00e9, ce formulaire ne stockera jamais les entr\u00e9es."],"Automatically delete entries":["Supprimer automatiquement les entr\u00e9es"],"When enabled this form will automatically delete entries after a certain period of time.":["Lorsque cette option est activ\u00e9e, ce formulaire supprimera automatiquement les entr\u00e9es apr\u00e8s une certaine p\u00e9riode de temps."],"Entries older than the days set will be deleted automatically.":["Les entr\u00e9es plus anciennes que le nombre de jours d\u00e9fini seront supprim\u00e9es automatiquement."],"Visual":["Visuel"],"HTML":["HTML"],"All Data":["Toutes les donn\u00e9es"],"Add Shortcode":["Ajouter un shortcode"],"Form input tags":["Balises de saisie de formulaire"],"Comma separated values are also accepted.":["Les valeurs s\u00e9par\u00e9es par des virgules sont \u00e9galement accept\u00e9es."],"Email Notification":["Notification par e-mail"],"Name":["Nom"],"Send Email To":["Envoyer un e-mail \u00e0"],"Subject":["Sujet"],"CC":["CC"],"BCC":["Cci"],"Reply To":["R\u00e9pondre \u00e0"],"Add Key":["Ajouter une cl\u00e9"],"Add Value":["Ajouter de la valeur"],"Add":["Ajouter"],"Confirmation Message":["Message de confirmation"],"After Form Submission":["Apr\u00e8s la soumission du formulaire"],"Hide Form":["Masquer le formulaire"],"Reset Form":["R\u00e9initialiser le formulaire"],"Custom URL":["URL personnalis\u00e9e"],"Add Query Parameters":["Ajouter des param\u00e8tres de requ\u00eate"],"Select if you want to add key-value pairs for form fields to include in query parameters":["S\u00e9lectionnez si vous souhaitez ajouter des paires cl\u00e9-valeur pour les champs de formulaire \u00e0 inclure dans les param\u00e8tres de requ\u00eate"],"Query Parameters":["Param\u00e8tres de requ\u00eate"],"Success Message":["Message de r\u00e9ussite"],"Redirect":["Rediriger"],"Redirect to":["Rediriger vers"],"Page":["Page"],"Form Confirmation":["Confirmation du formulaire"],"Confirmation Type":["Type de confirmation"],"Clear":["Clair"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Invisible"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Validations"],"Spam Protection":["Protection contre le spam"],"If this option is turned on, the user's IP address will be saved with the form data":["Si cette option est activ\u00e9e, l'adresse IP de l'utilisateur sera enregistr\u00e9e avec les donn\u00e9es du formulaire"],"Enable Honeypot Security":["Activer la s\u00e9curit\u00e9 Honeypot"],"Enable Honeypot Security for better spam protection":["Activez la s\u00e9curit\u00e9 Honeypot pour une meilleure protection contre le spam"],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s repr\u00e9sente le nombre minimum de s\u00e9lections n\u00e9cessaires. Par exemple : \u00ab Un minimum de 2 s\u00e9lections est requis. \u00bb"],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s repr\u00e9sente le nombre maximum de s\u00e9lections autoris\u00e9es. Par exemple : \u00ab Maximum 4 s\u00e9lections autoris\u00e9es. \u00bb"],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s repr\u00e9sente le nombre minimum de choix n\u00e9cessaires. Par exemple : \u00ab Au moins 1 s\u00e9lection est requise. \u00bb"],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s repr\u00e9sente le nombre maximum de choix autoris\u00e9s. Par exemple : \u00ab Maximum de 3 s\u00e9lections autoris\u00e9es. \u00bb"]," Error Message":["Message d'erreur"],"Email Summaries":["R\u00e9sum\u00e9s d'e-mails"],"Tuesday":["Mardi"],"Wednesday":["Mercredi"],"Thursday":["Jeudi"],"Friday":["Vendredi"],"Saturday":["Samedi"],"Sunday":["Dimanche"],"Schedule Reports":["Programmer les rapports"],"Auto":["Auto"],"Light":["Lumi\u00e8re"],"Dark":["Sombre"],"Turnstile":["Tourniquet"],"Get Keys":["Obtenir les cl\u00e9s"],"Documentation":["Documentation"],"Site Key":["Cl\u00e9 du site"],"Secret Key":["Cl\u00e9 secr\u00e8te"],"Cloudflare Turnstile":["Tourniquet Cloudflare"],"Appearance Mode":["Mode d'apparence"],"Text":["Texte"],"Test Email":["Email de test"],"IP Logging":["Journalisation IP"],"Honeypot":["Pot de miel"],"Confirmation Email Mismatch Message":["Message de non-correspondance de l'email de confirmation"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s repr\u00e9sente la valeur d'entr\u00e9e minimale. Par exemple : \"La valeur minimale est 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s repr\u00e9sente la valeur d'entr\u00e9e maximale. Par exemple : \"La valeur maximale est 100.\""],"OttoKit":["OttoKit"],"Connect with OttoKit":["Connectez-vous avec OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["L'adresse e-mail 'De' actuelle ne correspond pas au nom de domaine de votre site web (%1$s). Cela peut entra\u00eener le blocage ou le marquage de vos e-mails de notification comme spam. Alternativement, essayez d'utiliser une adresse De qui correspond au nom de domaine de votre site web (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["L'adresse e-mail 'De' actuelle ne correspond pas au nom de domaine de votre site web (%s). Cela peut entra\u00eener le blocage de vos e-mails de notification ou leur classement en tant que spam."],"We strongly recommend that you install the free ":["Nous vous recommandons vivement d'installer le gratuit"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["plugin ! L'assistant de configuration facilite la correction de vos e-mails."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Alternativement, essayez d'utiliser une adresse d'exp\u00e9diteur qui correspond au domaine de votre site web (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Veuillez entrer une adresse e-mail valide. Vos notifications ne seront pas envoy\u00e9es si le champ n'est pas correctement rempli."],"From Name":["De la part de Nom"],"From Email":["De l'email"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["L'adresse e-mail actuelle de l'exp\u00e9diteur peut ne pas correspondre au nom de domaine de votre site web (%1$s). Cela peut entra\u00eener le blocage ou le marquage comme spam de vos e-mails de notification. Alternativement, essayez d'utiliser une adresse de l'exp\u00e9diteur qui correspond au nom de domaine de votre site web (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["L'adresse e-mail actuelle 'De' peut ne pas correspondre au nom de domaine de votre site web (%s). Cela peut entra\u00eener le blocage de vos e-mails de notification ou leur marquage comme spam."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Pr\u00eat \u00e0 aller au-del\u00e0 du plan gratuit ?"],"Upgrade now":["Mettez \u00e0 niveau maintenant"],"and unlock the full power of SureForms!":["et d\u00e9bloquez toute la puissance de SureForms !"],"Upgrade SureForms":["Mettre \u00e0 niveau SureForms"],"Upgrade Now":["Mettez \u00e0 niveau maintenant"],"Entries older than the selected days will be deleted.":["Les entr\u00e9es plus anciennes que les jours s\u00e9lectionn\u00e9s seront supprim\u00e9es."],"Entries Time Period":["P\u00e9riode des entr\u00e9es"],"Notifications can use only one From Email so please enter a single address.":["Les notifications ne peuvent utiliser qu'une seule adresse e-mail d'exp\u00e9diteur, veuillez donc entrer une seule adresse."],"Select Page to redirect":["S\u00e9lectionnez la page \u00e0 rediriger"],"Search for a page":["Rechercher une page"],"Select a page":["S\u00e9lectionnez une page"],"Form Validation":["Validation de formulaire"],"Required Error Messages":["Messages d'erreur requis"],"Other Error Messages":["Autres messages d'erreur"],"Input Field Unique":["Champ de saisie unique"],"Email Field Unique":["Champ de courriel unique"],"Invalid URL":["URL invalide"],"Phone Field Unique":["Champ de t\u00e9l\u00e9phone unique"],"Invalid Field Number Block":["Bloc de num\u00e9ro de champ invalide"],"Invalid Email":["Email invalide"],"Number Minimum Value":["Valeur minimale du nombre"],"Number Maximum Value":["Valeur maximale du nombre"],"Dropdown Minimum Selections":["S\u00e9lections minimales du menu d\u00e9roulant"],"Dropdown Maximum Selections":["S\u00e9lections Maximales du Menu D\u00e9roulant"],"Multiple Choice Minimum Selections":["S\u00e9lections minimales \u00e0 choix multiple"],"Multiple Choice Maximum Selections":["S\u00e9lections maximales \u00e0 choix multiple"],"Input Field":["Champ de saisie"],"Email Field":["Champ de courriel"],"URL Field":["Champ URL"],"Phone Field":["Champ T\u00e9l\u00e9phone"],"Textarea Field":["Champ de zone de texte"],"Checkbox Field":["Champ de case \u00e0 cocher"],"Dropdown Field":["Champ d\u00e9roulant"],"Multiple Choice Field":["Champ \u00e0 choix multiple"],"Address Field":["Champ d'adresse"],"Number Field":["Champ num\u00e9rique"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Pour activer la fonctionnalit\u00e9 reCAPTCHA sur vos SureForms, veuillez activer l'option reCAPTCHA dans les param\u00e8tres de vos blocs et s\u00e9lectionner la version. Ajoutez ici la cl\u00e9 secr\u00e8te et la cl\u00e9 de site de Google reCAPTCHA. reCAPTCHA sera ajout\u00e9 \u00e0 votre page sur le front-end."],"Enter your %s here":["Entrez votre %s ici"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Pour activer hCAPTCHA, veuillez ajouter votre cl\u00e9 de site et votre cl\u00e9 secr\u00e8te. Configurez ces param\u00e8tres dans le formulaire individuel."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Pour activer Cloudflare Turnstile, veuillez ajouter votre cl\u00e9 de site et votre cl\u00e9 secr\u00e8te. Configurez ces param\u00e8tres dans le formulaire individuel."],"Save":["Sauvegarder"],"Anonymous Analytics":["Analytique Anonyme"],"Learn More":["En savoir plus"],"Admin Notification":["Notification d'administration"],"Enable Admin Notification":["Activer la notification administrateur"],"Admin notifications keep you informed about new form entries since your last visit.":["Les notifications administratives vous informent des nouvelles entr\u00e9es de formulaire depuis votre derni\u00e8re visite."],"Skip":["Passer"],"Continue":["Continuer"],"Maximum Number of Entries":["Nombre maximum d'entr\u00e9es"],"Maximum Entries":["Entr\u00e9es maximales"],"Response Description After Maximum Entries":["Description de la r\u00e9ponse apr\u00e8s le nombre maximum d'entr\u00e9es"],"Get Started":["Commencer"],"Integration":["Int\u00e9gration"],"Connect Native Integrations with SureForms":["Connectez les int\u00e9grations natives avec SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["D\u00e9bloquez des int\u00e9grations puissantes dans le plan Premium pour automatiser vos flux de travail et connecter SureForms directement \u00e0 vos outils pr\u00e9f\u00e9r\u00e9s."],"Send form submissions straight to CRMs, email, and marketing platforms":["Envoyez les soumissions de formulaires directement aux CRM, par e-mail et aux plateformes de marketing"],"Automate repetitive tasks with seamless data syncing":["Automatisez les t\u00e2ches r\u00e9p\u00e9titives avec une synchronisation des donn\u00e9es transparente"],"Access exclusive native integrations for faster workflows":["Acc\u00e9dez \u00e0 des int\u00e9grations natives exclusives pour des flux de travail plus rapides"],"Expected format for emails - email@sureforms.com or John Doe ":["Format attendu pour les e-mails - email@sureforms.com ou John Doe "],"Payments":["Paiements"],"Stripe account disconnected successfully.":["Compte Stripe d\u00e9connect\u00e9 avec succ\u00e8s."],"Failed to create webhook.":["\u00c9chec de la cr\u00e9ation du webhook."],"Failed to connect to Stripe.":["\u00c9chec de la connexion \u00e0 Stripe."],"Webhook":["Webhook"],"Knowledge Base":["Base de connaissances"],"What\u2019s New":["Quoi de neuf"],"out of":["hors de"],"No entries found":["Aucune entr\u00e9e trouv\u00e9e"],"delete":["supprimer"],"Please type \"%s\" in the input box":["Veuillez taper \"%s\" dans la bo\u00eete de saisie"],"To confirm, type \"%s\" in the box below:":["Pour confirmer, tapez \"%s\" dans la case ci-dessous :"],"Type \"%s\"":["Tapez \"%s\""],"Go to OttoKit Settings":["Acc\u00e9dez aux param\u00e8tres OttoKit"],"USD - US Dollar":["USD - Dollar am\u00e9ricain"],"Payment Mode":["Mode de paiement"],"Test Mode":["Mode Test"],"Live Mode":["Mode en direct"],"Action":["Action"],"General Settings":["Param\u00e8tres g\u00e9n\u00e9raux"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Configurez les r\u00e9sum\u00e9s d'e-mails, les alertes administratives et les pr\u00e9f\u00e9rences de donn\u00e9es pour g\u00e9rer vos formulaires en toute simplicit\u00e9."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Personnalisez les messages d'erreur par d\u00e9faut affich\u00e9s lorsque les utilisateurs soumettent des entr\u00e9es de formulaire invalides ou incompl\u00e8tes."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Activez la protection contre le spam pour vos formulaires en utilisant des services CAPTCHA ou une s\u00e9curit\u00e9 de type honeypot."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Connectez et g\u00e9rez vos passerelles de paiement pour accepter en toute s\u00e9curit\u00e9 les transactions via vos formulaires."],"1% transaction and payment gateway fees apply.":["Des frais de transaction et de passerelle de paiement de 1 % s'appliquent."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["Des frais de transaction et de passerelle de paiement de 2,9 % s'appliquent. Activez la licence pour r\u00e9duire les frais de transaction."],"2.9% transaction and payment gateway fees apply.":["Des frais de transaction et de passerelle de paiement de 2,9 % s'appliquent."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Veuillez visiter %1$s, supprimer un webhook inutilis\u00e9, puis cliquer ci-dessous pour r\u00e9essayer."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms n'a pas pu cr\u00e9er un webhook car votre compte Stripe a \u00e9puis\u00e9 ses emplacements gratuits. Les webhooks sont n\u00e9cessaires pour recevoir des mises \u00e0 jour sur les paiements."],"Stripe Dashboard":["Tableau de bord Stripe"],"Creating\u2026":["Cr\u00e9ation\u2026"],"Create Webhook":["Cr\u00e9er un Webhook"],"Successfully connected to Stripe!":["Connexion r\u00e9ussie \u00e0 Stripe !"],"Invalid response from server. Please try again.":["R\u00e9ponse invalide du serveur. Veuillez r\u00e9essayer."],"Failed to disconnect Stripe account.":["\u00c9chec de la d\u00e9connexion du compte Stripe."],"Webhook created successfully!":["Webhook cr\u00e9\u00e9 avec succ\u00e8s !"],"Select Currency":["S\u00e9lectionner la devise"],"Select the default currency for payment forms.":["S\u00e9lectionnez la devise par d\u00e9faut pour les formulaires de paiement."],"Connection Status":["Statut de la connexion"],"Disconnect Stripe Account":["D\u00e9connecter le compte Stripe"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["\u00cates-vous s\u00fbr de vouloir d\u00e9connecter votre compte Stripe ? Cela arr\u00eatera tous les paiements actifs, abonnements et transactions de formulaire li\u00e9s \u00e0 ce compte."],"Disconnect":["D\u00e9connecter"],"Disconnecting\u2026":["D\u00e9connexion\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook connect\u00e9 avec succ\u00e8s, tous les \u00e9v\u00e9nements Stripe sont suivis."],"Connect your Stripe account to start accepting payments through your forms.":["Connectez votre compte Stripe pour commencer \u00e0 accepter les paiements via vos formulaires."],"Connect to Stripe":["Connectez-vous \u00e0 Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Connectez-vous en toute s\u00e9curit\u00e9 \u00e0 Stripe en quelques clics pour commencer \u00e0 accepter les paiements !"],"Set the total number of submissions allowed for this form.":["D\u00e9finissez le nombre total de soumissions autoris\u00e9es pour ce formulaire."],"Payment Methods":["M\u00e9thodes de paiement"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["Le mode test vous permet de traiter les paiements sans frais r\u00e9els. Passez en mode Live pour des transactions r\u00e9elles."],"General Payment Settings":["Param\u00e8tres g\u00e9n\u00e9raux de paiement"],"These settings apply to all payment gateways.":["Ces param\u00e8tres s'appliquent \u00e0 toutes les passerelles de paiement."],"Stripe Settings":["Param\u00e8tres Stripe"],"Left ($100)":["Gauche (100 $)"],"Right (100$)":["D'accord (100$)"],"Left Space ($ 100)":["Espace gauche (100 $)"],"Right Space (100 $)":["Espace droit (100 $)"],"Currency Sign Position":["Position du signe mon\u00e9taire"],"Select the position of the currency symbol relative to the amount.":["S\u00e9lectionnez la position du symbole mon\u00e9taire par rapport au montant."],"Learn":["Apprendre"],"Enable email summaries":["Activer les r\u00e9sum\u00e9s par e-mail"],"Enable IP logging":["Activer la journalisation IP"],"Turn on Admin Notification from here.":["Activez la notification d'administration \u00e0 partir d'ici."],"New":["Nouveau"],"Send entries to 100+ popular apps.":["Envoyez des entr\u00e9es \u00e0 plus de 100 applications populaires."],"Build automated workflows that run instantly.":["Cr\u00e9ez des flux de travail automatis\u00e9s qui s'ex\u00e9cutent instantan\u00e9ment."],"Create custom app integrations using our Custom App feature.":["Cr\u00e9ez des int\u00e9grations d'applications personnalis\u00e9es en utilisant notre fonctionnalit\u00e9 d'application personnalis\u00e9e."],"Keep your tools in sync automatically.":["Gardez vos outils synchronis\u00e9s automatiquement."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Cela installera et activera OttoKit sur votre site WordPress pour activer les fonctionnalit\u00e9s d'automatisation."],"Automate Your Forms with OttoKit":["Automatisez vos formulaires avec OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Chaque soumission de formulaire devrait d\u00e9clencher quelque chose \u2014 une alerte Slack, un lead CRM, un e-mail de suivi, ou une nouvelle ligne dans Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Configurer les autorisations du client IA et les param\u00e8tres du serveur MCP."],"View documentation":["Voir la documentation"],"Copy to clipboard":["Copier dans le presse-papiers"],"Claude Desktop":["Claude Desktop"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) ou %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["Claude Code"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (projet) ou ~\/.claude.json (global)"],"Cursor":["Curseur"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (projet) ou settings.json > mcp.servers (global)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml ou config.json"],"Your client's MCP configuration file":["Le fichier de configuration MCP de votre client"],"Connect Your AI Client":["Connectez votre client IA"],"AI Client":["Client IA"],"Create an Application Password \u2014 ":["Cr\u00e9er un mot de passe d'application \u2014"],"Open Application Passwords":["Ouvrir les mots de passe de l'application"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Ou utilisez cette commande CLI pour ajouter le serveur rapidement (vous devrez toujours d\u00e9finir les variables d'environnement) :"],"Copy the JSON config below into: ":["Copiez la configuration JSON ci-dessous dans :"],"Replace \"your-application-password\" with the password from Step 1.":["Remplacez \"your-application-password\" par le mot de passe de l'\u00e9tape 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 l'endpoint MCP de votre site. WP_API_USERNAME \u2014 votre nom d'utilisateur WordPress. WP_API_PASSWORD \u2014 le mot de passe de l'application que vous avez g\u00e9n\u00e9r\u00e9."],"View setup docs":["Voir les documents de configuration"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["Le plugin MCP Adapter est install\u00e9 mais pas actif. Activez-le pour configurer les param\u00e8tres MCP."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["Le plugin MCP Adapter est n\u00e9cessaire pour connecter les clients IA \u00e0 vos formulaires. T\u00e9l\u00e9chargez-le et installez-le depuis GitHub, puis activez-le."],"Download the latest release from":["T\u00e9l\u00e9chargez la derni\u00e8re version depuis"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Installez le plugin via Extensions > Ajouter une nouvelle extension > T\u00e9l\u00e9verser une extension."],"Activate the MCP Adapter plugin.":["Activez le plugin d'adaptateur MCP."],"Activating\u2026":["Activation\u2026"],"Activate MCP Adapter":["Activer l'adaptateur MCP"],"Download MCP Adapter":["T\u00e9l\u00e9charger l'adaptateur MCP"],"Experimental":["Exp\u00e9rimental"],"Enable Abilities":["Activer les capacit\u00e9s"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Enregistrez les capacit\u00e9s de SureForms avec l'API des capacit\u00e9s de WordPress. Lorsqu'elle est activ\u00e9e, les clients IA peuvent lister, lire, cr\u00e9er, modifier et supprimer vos formulaires et entr\u00e9es. Lorsqu'elle est d\u00e9sactiv\u00e9e, aucune capacit\u00e9 n'est enregistr\u00e9e et les clients IA ne peuvent effectuer aucune action sur vos formulaires."],"Abilities API \u2014 Edit":["API des capacit\u00e9s \u2014 Modifier"],"Enable Edit Abilities":["Activer les capacit\u00e9s d'\u00e9dition"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Lorsqu'elle est activ\u00e9e, les clients IA peuvent cr\u00e9er de nouveaux formulaires, mettre \u00e0 jour les titres, les champs et les param\u00e8tres des formulaires, dupliquer des formulaires et modifier les statuts des entr\u00e9es. Lorsqu'elle est d\u00e9sactiv\u00e9e, ces capacit\u00e9s sont d\u00e9senregistr\u00e9es et les clients IA peuvent uniquement lire vos donn\u00e9es."],"Abilities API \u2014 Delete":["API des capacit\u00e9s \u2014 Supprimer"],"Enable Delete Abilities":["Activer les capacit\u00e9s de suppression"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Lorsqu'ils sont activ\u00e9s, les clients IA peuvent supprimer d\u00e9finitivement des formulaires et des entr\u00e9es. Les donn\u00e9es supprim\u00e9es ne peuvent pas \u00eatre r\u00e9cup\u00e9r\u00e9es. Lorsqu'ils sont d\u00e9sactiv\u00e9s, les capacit\u00e9s de suppression sont d\u00e9senregistr\u00e9es et les clients IA ne peuvent supprimer aucune donn\u00e9e."],"MCP Server":["Serveur MCP"],"Enable MCP Server":["Activer le serveur MCP"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Cr\u00e9e un point de terminaison SureForms MCP d\u00e9di\u00e9 auquel les clients IA comme Claude peuvent se connecter. Lorsqu'il est d\u00e9sactiv\u00e9, le point de terminaison est supprim\u00e9 et les clients IA externes ne peuvent pas d\u00e9couvrir ou appeler les capacit\u00e9s de SureForms."],"Learn more":["En savoir plus"],"MCP Adapter Required":["Adaptateur MCP requis"],"Heading 1":["Titre 1"],"Heading 2":["Titre 2"],"Heading 3":["Titre 3"],"Heading 4":["Titre 4"],"Heading 5":["Titre 5"],"Heading 6":["Titre 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Configurez la cl\u00e9 API Google Maps pour la saisie semi-automatique des adresses et l'aper\u00e7u de la carte."],"Help shape the future of SureForms":["Aidez \u00e0 fa\u00e7onner l'avenir de SureForms"],"Enable Google Address Autocomplete":["Activer la saisie semi-automatique d'adresse Google"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Passez au plan d'affaires SureForms pour ajouter la saisie semi-automatique d'adresses aliment\u00e9e par Google avec un aper\u00e7u de la carte interactive \u00e0 vos formulaires."],"Auto-suggest addresses as users type for faster, error-free submissions":["Sugg\u00e9rer automatiquement des adresses au fur et \u00e0 mesure que les utilisateurs tapent pour des soumissions plus rapides et sans erreur"],"Show an interactive map preview with draggable pin for precise locations":["Afficher un aper\u00e7u de carte interactif avec un rep\u00e8re d\u00e9pla\u00e7able pour des emplacements pr\u00e9cis"],"Automatically populate address fields like city, state, and postal code":["Remplir automatiquement les champs d'adresse tels que la ville, l'\u00e9tat et le code postal"],"This form is now closed as we've received all the entries.":["Ce formulaire est maintenant ferm\u00e9 car nous avons re\u00e7u toutes les inscriptions."],"Thank you for contacting us! We will be in touch with you shortly.":["Merci de nous avoir contact\u00e9s ! Nous vous contacterons sous peu."],"Saving\u2026":["Enregistrement\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Lorsqu'il est activ\u00e9, ce formulaire ne stockera pas l'IP de l'utilisateur, le nom du navigateur et le nom de l'appareil dans les entr\u00e9es."],"Form data":["Donn\u00e9es du formulaire"],"Unsaved changes":["Modifications non enregistr\u00e9es"],"Keep editing":["Continuez \u00e0 \u00e9diter"],"Global Defaults":["Param\u00e8tres par d\u00e9faut globaux"],"Form Restrictions":["Restrictions de formulaire"],"Configure default settings that apply to newly created forms.":["Configurer les param\u00e8tres par d\u00e9faut qui s'appliquent aux formulaires nouvellement cr\u00e9\u00e9s."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Collectez des informations non sensibles de votre site web, telles que la version PHP et les fonctionnalit\u00e9s utilis\u00e9es, pour nous aider \u00e0 corriger les bugs plus rapidement, \u00e0 prendre des d\u00e9cisions plus \u00e9clair\u00e9es et \u00e0 d\u00e9velopper des fonctionnalit\u00e9s qui comptent r\u00e9ellement pour vous."],"Failed to load pages. Please refresh and try again.":["\u00c9chec du chargement des pages. Veuillez actualiser et r\u00e9essayer."],"Failed to load settings. Please refresh and try again.":["\u00c9chec du chargement des param\u00e8tres. Veuillez actualiser et r\u00e9essayer."],"Form Validation fields cannot be left blank.":["Les champs de validation de formulaire ne peuvent pas \u00eatre laiss\u00e9s vides."],"Recipient email is required when email summaries are enabled.":["L'adresse e-mail du destinataire est requise lorsque les r\u00e9sum\u00e9s par e-mail sont activ\u00e9s."],"Please enter a valid recipient email.":["Veuillez entrer une adresse e-mail de destinataire valide."],"Settings saved.":["Param\u00e8tres enregistr\u00e9s."],"Failed to save settings.":["\u00c9chec de l'enregistrement des param\u00e8tres."],"Some settings failed to save. Please retry.":["Certains param\u00e8tres n'ont pas pu \u00eatre enregistr\u00e9s. Veuillez r\u00e9essayer."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Certains champs contiennent des modifications non enregistr\u00e9es. Abandonnez-les pour continuer, ou restez pour enregistrer vos modifications."],"Discard & switch":["Annuler et changer"],"Import":["Importer"],"Migration":["Migration"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importer des formulaires depuis Contact Form 7, WPForms, Gravity Forms et d'autres plugins dans SureForms."],"Could not generate the import preview.":["Impossible de g\u00e9n\u00e9rer l'aper\u00e7u de l'importation."],"Import failed. Please try again or check your error logs.":["\u00c9chec de l'importation. Veuillez r\u00e9essayer ou v\u00e9rifier vos journaux d'erreurs."],"Go back":["Retourne"],"Update & import":["Mise \u00e0 jour et importation"],"Confirm & import":["Confirmer et importer"],"Form #%s":["Formulaire n\u00b0%s"],"%d field will import":["%d champ sera import\u00e9"],"Some fields can't be migrated yet":["Certains champs ne peuvent pas encore \u00eatre migr\u00e9s"],"These fields will be skipped - add them manually after the form is created:":["Ces champs seront ignor\u00e9s - ajoutez-les manuellement apr\u00e8s la cr\u00e9ation du formulaire :"],"Some forms could not be parsed":["Certains formulaires n'ont pas pu \u00eatre analys\u00e9s"],"Update existing":["Mettre \u00e0 jour l'existant"],"Create a new copy":["Cr\u00e9er une nouvelle copie"],"Could not load forms for this source.":["Impossible de charger les formulaires pour cette source."],"(untitled form)":["(formulaire sans titre)"],"Previously imported":["Import\u00e9 pr\u00e9c\u00e9demment"],"Open existing SureForms form in a new tab":["Ouvrir le formulaire SureForms existant dans un nouvel onglet"],"On re-import":["Lors de la r\u00e9importation"],"No forms found in this plugin.":["Aucun formulaire trouv\u00e9 dans ce plugin."],"%1$d of %2$d form selected":["%1$d sur %2$d formulaire s\u00e9lectionn\u00e9"],"Preview update":["Aper\u00e7u de la mise \u00e0 jour"],"Preview import":["Aper\u00e7u de l'importation"],"Migration complete":["Migration termin\u00e9e"],"Nothing was imported":["Rien n'a \u00e9t\u00e9 import\u00e9"],"%d form was imported into SureForms.":["%d formulaire a \u00e9t\u00e9 import\u00e9 dans SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["Aucun des formulaires s\u00e9lectionn\u00e9s n'a pu \u00eatre migr\u00e9. Voir les avertissements ci-dessous pour plus de d\u00e9tails."],"Imported forms":["Formulaires import\u00e9s"],"Edit in SureForms":["Modifier dans SureForms"],"Some fields were skipped during import":["Certains champs ont \u00e9t\u00e9 ignor\u00e9s lors de l'importation"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Ajoutez-les manuellement dans l'\u00e9diteur de formulaire - ils n'ont pas encore d'\u00e9quivalent SureForms :"],"Some forms failed to import":["Certains formulaires n'ont pas pu \u00eatre import\u00e9s"],"Import more forms":["Importer plus de formulaires"],"Could not load the list of importable plugins.":["Impossible de charger la liste des plugins importables."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Aucun plugin de formulaire pris en charge n'est actif sur ce site. Activez-en un (comme Contact Form 7) avec au moins un formulaire pour l'importer dans SureForms."],"Plugin":["Plugin"],"%d form":["%d formulaire"],"No forms":["Pas de formulaires"],"Multiple choice":["Choix multiple"],"Consent":["Consentement"],"The image uploaded but could not be inserted. Please try again.":["L'image a \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9e mais n'a pas pu \u00eatre ins\u00e9r\u00e9e. Veuillez r\u00e9essayer."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["L'image n'a pas pu \u00eatre t\u00e9l\u00e9charg\u00e9e. Elle est peut-\u00eatre trop grande, ou vous n'avez pas la permission de t\u00e9l\u00e9charger des fichiers."],"Please choose an image file.":["Veuillez choisir un fichier image."],"Show views and conversion rate":["Afficher les vues et le taux de conversion"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Ajoute les colonnes Vues et Taux de conversion \u00e0 la liste des formulaires. Une vue est compt\u00e9e une fois par visite de page lorsque le formulaire appara\u00eet \u00e0 l'\u00e9cran, et le taux de conversion est la part de ces vues qui se sont termin\u00e9es par une soumission. Le comptage commence la premi\u00e8re fois que vous l'activez, donc les soumissions re\u00e7ues avant cela ne sont pas compt\u00e9es dans le taux. Le d\u00e9sactiver par la suite ne fait que masquer les colonnes \u2014 le comptage continue, donc les chiffres sont \u00e0 jour si vous le r\u00e9activez."],"Log cleared.":["Journal effac\u00e9."],"Could not clear the log.":["Impossible d'effacer le journal."],"Enable logs":["Activer les journaux"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Enregistre les \u00e9checs de soumission de formulaire signal\u00e9s par le navigateur, afin que vous puissiez envoyer le journal au support au lieu de lire la console. Rien n'est \u00e9crit tant que vos formulaires fonctionnent, et les valeurs soumises ne sont jamais stock\u00e9es."],"Download log":["T\u00e9l\u00e9charger le journal"],"Confirm delete":["Confirmer la suppression"],"Log is full \u2014 download and clear it to keep recording.":["Le journal est plein \u2014 t\u00e9l\u00e9chargez-le et effacez-le pour continuer l'enregistrement."],"Form Views & Conversion":["Vues de formulaire et conversion"],"Logs":["Journaux"],"Quill heading picker: default paragraph style\u0004Normal":["Normal"]}}} \ No newline at end of file +{"translation-revision-date":"2024-12-13T13:12:49+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Tableau de bord"],"Settings":["Param\u00e8tres"],"Entries":["Entr\u00e9es"],"Status":["Statut"],"Form":["Formulaire"],"Activated":["Activ\u00e9"],"Activate":["Activer"],"Address":["Adresse"],"Checkbox":["Case \u00e0 cocher"],"Dropdown":["Menu d\u00e9roulant"],"Email":["Email"],"Number":["Nombre"],"Phone":["T\u00e9l\u00e9phone"],"Textarea":["Zone de texte"],"Monday":["Lundi"],"Forms":["Formulaires"],"New Form Submission - %s":["Nouvelle soumission de formulaire - %s"],"GitHub":["GitHub"],"(no title)":["(pas de titre)"],"General":["G\u00e9n\u00e9ral"],"No tags available":["Aucune \u00e9tiquette disponible"],"Back":["Retour"],"Generic tags":["Balises g\u00e9n\u00e9riques"],"Other":["Autre"],"Confirm":["Confirmer"],"Cancel":["Annuler"],"Install":["Installer"],"Plugin Installation failed, Please try again later.":["L'installation du plugin a \u00e9chou\u00e9, veuillez r\u00e9essayer plus tard."],"Plugin activation failed, Please try again later.":["L'activation du plugin a \u00e9chou\u00e9, veuillez r\u00e9essayer plus tard."],"Integrations":["Int\u00e9grations"],"What's New?":["Quoi de neuf ?"],"Core":["C\u0153ur"],"Unlicensed":["Sans licence"],"Connecting\u2026":["Connexion\u2026"],"Install & Activate":["Installer et activer"],"Compliance Settings":["Param\u00e8tres de conformit\u00e9"],"Enable GDPR Compliance":["Activer la conformit\u00e9 RGPD"],"Never store entry data after form submission":["Ne jamais conserver les donn\u00e9es d'entr\u00e9e apr\u00e8s la soumission du formulaire"],"When enabled this form will never store Entries.":["Lorsqu'il est activ\u00e9, ce formulaire ne stockera jamais les entr\u00e9es."],"Automatically delete entries":["Supprimer automatiquement les entr\u00e9es"],"When enabled this form will automatically delete entries after a certain period of time.":["Lorsque cette option est activ\u00e9e, ce formulaire supprimera automatiquement les entr\u00e9es apr\u00e8s une certaine p\u00e9riode de temps."],"Entries older than the days set will be deleted automatically.":["Les entr\u00e9es plus anciennes que le nombre de jours d\u00e9fini seront supprim\u00e9es automatiquement."],"Visual":["Visuel"],"HTML":["HTML"],"All Data":["Toutes les donn\u00e9es"],"Add Shortcode":["Ajouter un shortcode"],"Form input tags":["Balises de saisie de formulaire"],"Comma separated values are also accepted.":["Les valeurs s\u00e9par\u00e9es par des virgules sont \u00e9galement accept\u00e9es."],"Email Notification":["Notification par e-mail"],"Name":["Nom"],"Send Email To":["Envoyer un e-mail \u00e0"],"Subject":["Sujet"],"CC":["CC"],"BCC":["Cci"],"Reply To":["R\u00e9pondre \u00e0"],"Add Key":["Ajouter une cl\u00e9"],"Add Value":["Ajouter de la valeur"],"Add":["Ajouter"],"Confirmation Message":["Message de confirmation"],"After Form Submission":["Apr\u00e8s la soumission du formulaire"],"Hide Form":["Masquer le formulaire"],"Reset Form":["R\u00e9initialiser le formulaire"],"Custom URL":["URL personnalis\u00e9e"],"Add Query Parameters":["Ajouter des param\u00e8tres de requ\u00eate"],"Select if you want to add key-value pairs for form fields to include in query parameters":["S\u00e9lectionnez si vous souhaitez ajouter des paires cl\u00e9-valeur pour les champs de formulaire \u00e0 inclure dans les param\u00e8tres de requ\u00eate"],"Query Parameters":["Param\u00e8tres de requ\u00eate"],"Success Message":["Message de r\u00e9ussite"],"Redirect":["Rediriger"],"Redirect to":["Rediriger vers"],"Page":["Page"],"Form Confirmation":["Confirmation du formulaire"],"Confirmation Type":["Type de confirmation"],"Clear":["Clair"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Invisible"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Validations"],"Spam Protection":["Protection contre le spam"],"If this option is turned on, the user's IP address will be saved with the form data":["Si cette option est activ\u00e9e, l'adresse IP de l'utilisateur sera enregistr\u00e9e avec les donn\u00e9es du formulaire"],"Enable Honeypot Security":["Activer la s\u00e9curit\u00e9 Honeypot"],"Enable Honeypot Security for better spam protection":["Activez la s\u00e9curit\u00e9 Honeypot pour une meilleure protection contre le spam"],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s repr\u00e9sente le nombre minimum de s\u00e9lections n\u00e9cessaires. Par exemple : \u00ab Un minimum de 2 s\u00e9lections est requis. \u00bb"],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s repr\u00e9sente le nombre maximum de s\u00e9lections autoris\u00e9es. Par exemple : \u00ab Maximum 4 s\u00e9lections autoris\u00e9es. \u00bb"],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s repr\u00e9sente le nombre minimum de choix n\u00e9cessaires. Par exemple : \u00ab Au moins 1 s\u00e9lection est requise. \u00bb"],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s repr\u00e9sente le nombre maximum de choix autoris\u00e9s. Par exemple : \u00ab Maximum de 3 s\u00e9lections autoris\u00e9es. \u00bb"]," Error Message":["Message d'erreur"],"Email Summaries":["R\u00e9sum\u00e9s d'e-mails"],"Tuesday":["Mardi"],"Wednesday":["Mercredi"],"Thursday":["Jeudi"],"Friday":["Vendredi"],"Saturday":["Samedi"],"Sunday":["Dimanche"],"Schedule Reports":["Programmer les rapports"],"Auto":["Auto"],"Light":["Lumi\u00e8re"],"Dark":["Sombre"],"Turnstile":["Tourniquet"],"Get Keys":["Obtenir les cl\u00e9s"],"Documentation":["Documentation"],"Site Key":["Cl\u00e9 du site"],"Secret Key":["Cl\u00e9 secr\u00e8te"],"Cloudflare Turnstile":["Tourniquet Cloudflare"],"Appearance Mode":["Mode d'apparence"],"Text":["Texte"],"Test Email":["Email de test"],"IP Logging":["Journalisation IP"],"Honeypot":["Pot de miel"],"Confirmation Email Mismatch Message":["Message de non-correspondance de l'email de confirmation"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s repr\u00e9sente la valeur d'entr\u00e9e minimale. Par exemple : \"La valeur minimale est 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s repr\u00e9sente la valeur d'entr\u00e9e maximale. Par exemple : \"La valeur maximale est 100.\""],"OttoKit":["OttoKit"],"Connect with OttoKit":["Connectez-vous avec OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["L'adresse e-mail 'De' actuelle ne correspond pas au nom de domaine de votre site web (%1$s). Cela peut entra\u00eener le blocage ou le marquage de vos e-mails de notification comme spam. Alternativement, essayez d'utiliser une adresse De qui correspond au nom de domaine de votre site web (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["L'adresse e-mail 'De' actuelle ne correspond pas au nom de domaine de votre site web (%s). Cela peut entra\u00eener le blocage de vos e-mails de notification ou leur classement en tant que spam."],"We strongly recommend that you install the free ":["Nous vous recommandons vivement d'installer le gratuit"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["plugin ! L'assistant de configuration facilite la correction de vos e-mails."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Alternativement, essayez d'utiliser une adresse d'exp\u00e9diteur qui correspond au domaine de votre site web (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Veuillez entrer une adresse e-mail valide. Vos notifications ne seront pas envoy\u00e9es si le champ n'est pas correctement rempli."],"From Name":["De la part de Nom"],"From Email":["De l'email"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["L'adresse e-mail actuelle de l'exp\u00e9diteur peut ne pas correspondre au nom de domaine de votre site web (%1$s). Cela peut entra\u00eener le blocage ou le marquage comme spam de vos e-mails de notification. Alternativement, essayez d'utiliser une adresse de l'exp\u00e9diteur qui correspond au nom de domaine de votre site web (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["L'adresse e-mail actuelle 'De' peut ne pas correspondre au nom de domaine de votre site web (%s). Cela peut entra\u00eener le blocage de vos e-mails de notification ou leur marquage comme spam."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Pr\u00eat \u00e0 aller au-del\u00e0 du plan gratuit ?"],"Upgrade now":["Mettez \u00e0 niveau maintenant"],"and unlock the full power of SureForms!":["et d\u00e9bloquez toute la puissance de SureForms !"],"Upgrade SureForms":["Mettre \u00e0 niveau SureForms"],"Upgrade Now":["Mettez \u00e0 niveau maintenant"],"Entries older than the selected days will be deleted.":["Les entr\u00e9es plus anciennes que les jours s\u00e9lectionn\u00e9s seront supprim\u00e9es."],"Entries Time Period":["P\u00e9riode des entr\u00e9es"],"Notifications can use only one From Email so please enter a single address.":["Les notifications ne peuvent utiliser qu'une seule adresse e-mail d'exp\u00e9diteur, veuillez donc entrer une seule adresse."],"Select Page to redirect":["S\u00e9lectionnez la page \u00e0 rediriger"],"Search for a page":["Rechercher une page"],"Select a page":["S\u00e9lectionnez une page"],"Form Validation":["Validation de formulaire"],"Required Error Messages":["Messages d'erreur requis"],"Other Error Messages":["Autres messages d'erreur"],"Input Field Unique":["Champ de saisie unique"],"Email Field Unique":["Champ de courriel unique"],"Invalid URL":["URL invalide"],"Phone Field Unique":["Champ de t\u00e9l\u00e9phone unique"],"Invalid Field Number Block":["Bloc de num\u00e9ro de champ invalide"],"Invalid Email":["Email invalide"],"Number Minimum Value":["Valeur minimale du nombre"],"Number Maximum Value":["Valeur maximale du nombre"],"Dropdown Minimum Selections":["S\u00e9lections minimales du menu d\u00e9roulant"],"Dropdown Maximum Selections":["S\u00e9lections Maximales du Menu D\u00e9roulant"],"Multiple Choice Minimum Selections":["S\u00e9lections minimales \u00e0 choix multiple"],"Multiple Choice Maximum Selections":["S\u00e9lections maximales \u00e0 choix multiple"],"Input Field":["Champ de saisie"],"Email Field":["Champ de courriel"],"URL Field":["Champ URL"],"Phone Field":["Champ T\u00e9l\u00e9phone"],"Textarea Field":["Champ de zone de texte"],"Checkbox Field":["Champ de case \u00e0 cocher"],"Dropdown Field":["Champ d\u00e9roulant"],"Multiple Choice Field":["Champ \u00e0 choix multiple"],"Address Field":["Champ d'adresse"],"Number Field":["Champ num\u00e9rique"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Pour activer la fonctionnalit\u00e9 reCAPTCHA sur vos SureForms, veuillez activer l'option reCAPTCHA dans les param\u00e8tres de vos blocs et s\u00e9lectionner la version. Ajoutez ici la cl\u00e9 secr\u00e8te et la cl\u00e9 de site de Google reCAPTCHA. reCAPTCHA sera ajout\u00e9 \u00e0 votre page sur le front-end."],"Enter your %s here":["Entrez votre %s ici"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Pour activer hCAPTCHA, veuillez ajouter votre cl\u00e9 de site et votre cl\u00e9 secr\u00e8te. Configurez ces param\u00e8tres dans le formulaire individuel."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Pour activer Cloudflare Turnstile, veuillez ajouter votre cl\u00e9 de site et votre cl\u00e9 secr\u00e8te. Configurez ces param\u00e8tres dans le formulaire individuel."],"Save":["Sauvegarder"],"Anonymous Analytics":["Analytique Anonyme"],"Learn More":["En savoir plus"],"Admin Notification":["Notification d'administration"],"Enable Admin Notification":["Activer la notification administrateur"],"Admin notifications keep you informed about new form entries since your last visit.":["Les notifications administratives vous informent des nouvelles entr\u00e9es de formulaire depuis votre derni\u00e8re visite."],"Skip":["Passer"],"Continue":["Continuer"],"Maximum Number of Entries":["Nombre maximum d'entr\u00e9es"],"Maximum Entries":["Entr\u00e9es maximales"],"Response Description After Maximum Entries":["Description de la r\u00e9ponse apr\u00e8s le nombre maximum d'entr\u00e9es"],"Get Started":["Commencer"],"Integration":["Int\u00e9gration"],"Connect Native Integrations with SureForms":["Connectez les int\u00e9grations natives avec SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["D\u00e9bloquez des int\u00e9grations puissantes dans le plan Premium pour automatiser vos flux de travail et connecter SureForms directement \u00e0 vos outils pr\u00e9f\u00e9r\u00e9s."],"Send form submissions straight to CRMs, email, and marketing platforms":["Envoyez les soumissions de formulaires directement aux CRM, par e-mail et aux plateformes de marketing"],"Automate repetitive tasks with seamless data syncing":["Automatisez les t\u00e2ches r\u00e9p\u00e9titives avec une synchronisation des donn\u00e9es transparente"],"Access exclusive native integrations for faster workflows":["Acc\u00e9dez \u00e0 des int\u00e9grations natives exclusives pour des flux de travail plus rapides"],"Expected format for emails - email@sureforms.com or John Doe ":["Format attendu pour les e-mails - email@sureforms.com ou John Doe "],"Payments":["Paiements"],"Stripe account disconnected successfully.":["Compte Stripe d\u00e9connect\u00e9 avec succ\u00e8s."],"Failed to create webhook.":["\u00c9chec de la cr\u00e9ation du webhook."],"Failed to connect to Stripe.":["\u00c9chec de la connexion \u00e0 Stripe."],"Webhook":["Webhook"],"Knowledge Base":["Base de connaissances"],"What\u2019s New":["Quoi de neuf"],"out of":["hors de"],"No entries found":["Aucune entr\u00e9e trouv\u00e9e"],"delete":["supprimer"],"Please type \"%s\" in the input box":["Veuillez taper \"%s\" dans la bo\u00eete de saisie"],"To confirm, type \"%s\" in the box below:":["Pour confirmer, tapez \"%s\" dans la case ci-dessous :"],"Type \"%s\"":["Tapez \"%s\""],"Go to OttoKit Settings":["Acc\u00e9dez aux param\u00e8tres OttoKit"],"USD - US Dollar":["USD - Dollar am\u00e9ricain"],"Payment Mode":["Mode de paiement"],"Test Mode":["Mode Test"],"Live Mode":["Mode en direct"],"Action":["Action"],"General Settings":["Param\u00e8tres g\u00e9n\u00e9raux"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Configurez les r\u00e9sum\u00e9s d'e-mails, les alertes administratives et les pr\u00e9f\u00e9rences de donn\u00e9es pour g\u00e9rer vos formulaires en toute simplicit\u00e9."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Personnalisez les messages d'erreur par d\u00e9faut affich\u00e9s lorsque les utilisateurs soumettent des entr\u00e9es de formulaire invalides ou incompl\u00e8tes."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Activez la protection contre le spam pour vos formulaires en utilisant des services CAPTCHA ou une s\u00e9curit\u00e9 de type honeypot."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Connectez et g\u00e9rez vos passerelles de paiement pour accepter en toute s\u00e9curit\u00e9 les transactions via vos formulaires."],"1% transaction and payment gateway fees apply.":["Des frais de transaction et de passerelle de paiement de 1 % s'appliquent."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["Des frais de transaction et de passerelle de paiement de 2,9 % s'appliquent. Activez la licence pour r\u00e9duire les frais de transaction."],"2.9% transaction and payment gateway fees apply.":["Des frais de transaction et de passerelle de paiement de 2,9 % s'appliquent."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Veuillez visiter %1$s, supprimer un webhook inutilis\u00e9, puis cliquer ci-dessous pour r\u00e9essayer."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms n'a pas pu cr\u00e9er un webhook car votre compte Stripe a \u00e9puis\u00e9 ses emplacements gratuits. Les webhooks sont n\u00e9cessaires pour recevoir des mises \u00e0 jour sur les paiements."],"Stripe Dashboard":["Tableau de bord Stripe"],"Creating\u2026":["Cr\u00e9ation\u2026"],"Create Webhook":["Cr\u00e9er un Webhook"],"Successfully connected to Stripe!":["Connexion r\u00e9ussie \u00e0 Stripe !"],"Invalid response from server. Please try again.":["R\u00e9ponse invalide du serveur. Veuillez r\u00e9essayer."],"Failed to disconnect Stripe account.":["\u00c9chec de la d\u00e9connexion du compte Stripe."],"Webhook created successfully!":["Webhook cr\u00e9\u00e9 avec succ\u00e8s !"],"Select Currency":["S\u00e9lectionner la devise"],"Select the default currency for payment forms.":["S\u00e9lectionnez la devise par d\u00e9faut pour les formulaires de paiement."],"Connection Status":["Statut de la connexion"],"Disconnect Stripe Account":["D\u00e9connecter le compte Stripe"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["\u00cates-vous s\u00fbr de vouloir d\u00e9connecter votre compte Stripe ? Cela arr\u00eatera tous les paiements actifs, abonnements et transactions de formulaire li\u00e9s \u00e0 ce compte."],"Disconnect":["D\u00e9connecter"],"Disconnecting\u2026":["D\u00e9connexion\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook connect\u00e9 avec succ\u00e8s, tous les \u00e9v\u00e9nements Stripe sont suivis."],"Connect your Stripe account to start accepting payments through your forms.":["Connectez votre compte Stripe pour commencer \u00e0 accepter les paiements via vos formulaires."],"Connect to Stripe":["Connectez-vous \u00e0 Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Connectez-vous en toute s\u00e9curit\u00e9 \u00e0 Stripe en quelques clics pour commencer \u00e0 accepter les paiements !"],"Set the total number of submissions allowed for this form.":["D\u00e9finissez le nombre total de soumissions autoris\u00e9es pour ce formulaire."],"Payment Methods":["M\u00e9thodes de paiement"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["Le mode test vous permet de traiter les paiements sans frais r\u00e9els. Passez en mode Live pour des transactions r\u00e9elles."],"General Payment Settings":["Param\u00e8tres g\u00e9n\u00e9raux de paiement"],"These settings apply to all payment gateways.":["Ces param\u00e8tres s'appliquent \u00e0 toutes les passerelles de paiement."],"Stripe Settings":["Param\u00e8tres Stripe"],"Left ($100)":["Gauche (100 $)"],"Right (100$)":["D'accord (100$)"],"Left Space ($ 100)":["Espace gauche (100 $)"],"Right Space (100 $)":["Espace droit (100 $)"],"Currency Sign Position":["Position du signe mon\u00e9taire"],"Select the position of the currency symbol relative to the amount.":["S\u00e9lectionnez la position du symbole mon\u00e9taire par rapport au montant."],"Learn":["Apprendre"],"Enable email summaries":["Activer les r\u00e9sum\u00e9s par e-mail"],"Enable IP logging":["Activer la journalisation IP"],"Turn on Admin Notification from here.":["Activez la notification d'administration \u00e0 partir d'ici."],"New":["Nouveau"],"Send entries to 100+ popular apps.":["Envoyez des entr\u00e9es \u00e0 plus de 100 applications populaires."],"Build automated workflows that run instantly.":["Cr\u00e9ez des flux de travail automatis\u00e9s qui s'ex\u00e9cutent instantan\u00e9ment."],"Create custom app integrations using our Custom App feature.":["Cr\u00e9ez des int\u00e9grations d'applications personnalis\u00e9es en utilisant notre fonctionnalit\u00e9 d'application personnalis\u00e9e."],"Keep your tools in sync automatically.":["Gardez vos outils synchronis\u00e9s automatiquement."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Cela installera et activera OttoKit sur votre site WordPress pour activer les fonctionnalit\u00e9s d'automatisation."],"Automate Your Forms with OttoKit":["Automatisez vos formulaires avec OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Chaque soumission de formulaire devrait d\u00e9clencher quelque chose \u2014 une alerte Slack, un lead CRM, un e-mail de suivi, ou une nouvelle ligne dans Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Configurer les autorisations du client IA et les param\u00e8tres du serveur MCP."],"View documentation":["Voir la documentation"],"Copy to clipboard":["Copier dans le presse-papiers"],"Claude Desktop":["Claude Desktop"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) ou %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["Claude Code"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (projet) ou ~\/.claude.json (global)"],"Cursor":["Curseur"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (projet) ou settings.json > mcp.servers (global)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml ou config.json"],"Your client's MCP configuration file":["Le fichier de configuration MCP de votre client"],"Connect Your AI Client":["Connectez votre client IA"],"AI Client":["Client IA"],"Create an Application Password \u2014 ":["Cr\u00e9er un mot de passe d'application \u2014"],"Open Application Passwords":["Ouvrir les mots de passe de l'application"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Ou utilisez cette commande CLI pour ajouter le serveur rapidement (vous devrez toujours d\u00e9finir les variables d'environnement) :"],"Copy the JSON config below into: ":["Copiez la configuration JSON ci-dessous dans :"],"Replace \"your-application-password\" with the password from Step 1.":["Remplacez \"your-application-password\" par le mot de passe de l'\u00e9tape 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 l'endpoint MCP de votre site. WP_API_USERNAME \u2014 votre nom d'utilisateur WordPress. WP_API_PASSWORD \u2014 le mot de passe de l'application que vous avez g\u00e9n\u00e9r\u00e9."],"View setup docs":["Voir les documents de configuration"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["Le plugin MCP Adapter est install\u00e9 mais pas actif. Activez-le pour configurer les param\u00e8tres MCP."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["Le plugin MCP Adapter est n\u00e9cessaire pour connecter les clients IA \u00e0 vos formulaires. T\u00e9l\u00e9chargez-le et installez-le depuis GitHub, puis activez-le."],"Download the latest release from":["T\u00e9l\u00e9chargez la derni\u00e8re version depuis"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Installez le plugin via Extensions > Ajouter une nouvelle extension > T\u00e9l\u00e9verser une extension."],"Activate the MCP Adapter plugin.":["Activez le plugin d'adaptateur MCP."],"Activating\u2026":["Activation\u2026"],"Activate MCP Adapter":["Activer l'adaptateur MCP"],"Download MCP Adapter":["T\u00e9l\u00e9charger l'adaptateur MCP"],"Experimental":["Exp\u00e9rimental"],"Enable Abilities":["Activer les capacit\u00e9s"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Enregistrez les capacit\u00e9s de SureForms avec l'API des capacit\u00e9s de WordPress. Lorsqu'elle est activ\u00e9e, les clients IA peuvent lister, lire, cr\u00e9er, modifier et supprimer vos formulaires et entr\u00e9es. Lorsqu'elle est d\u00e9sactiv\u00e9e, aucune capacit\u00e9 n'est enregistr\u00e9e et les clients IA ne peuvent effectuer aucune action sur vos formulaires."],"Abilities API \u2014 Edit":["API des capacit\u00e9s \u2014 Modifier"],"Enable Edit Abilities":["Activer les capacit\u00e9s d'\u00e9dition"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Lorsqu'elle est activ\u00e9e, les clients IA peuvent cr\u00e9er de nouveaux formulaires, mettre \u00e0 jour les titres, les champs et les param\u00e8tres des formulaires, dupliquer des formulaires et modifier les statuts des entr\u00e9es. Lorsqu'elle est d\u00e9sactiv\u00e9e, ces capacit\u00e9s sont d\u00e9senregistr\u00e9es et les clients IA peuvent uniquement lire vos donn\u00e9es."],"Abilities API \u2014 Delete":["API des capacit\u00e9s \u2014 Supprimer"],"Enable Delete Abilities":["Activer les capacit\u00e9s de suppression"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Lorsqu'ils sont activ\u00e9s, les clients IA peuvent supprimer d\u00e9finitivement des formulaires et des entr\u00e9es. Les donn\u00e9es supprim\u00e9es ne peuvent pas \u00eatre r\u00e9cup\u00e9r\u00e9es. Lorsqu'ils sont d\u00e9sactiv\u00e9s, les capacit\u00e9s de suppression sont d\u00e9senregistr\u00e9es et les clients IA ne peuvent supprimer aucune donn\u00e9e."],"MCP Server":["Serveur MCP"],"Enable MCP Server":["Activer le serveur MCP"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Cr\u00e9e un point de terminaison SureForms MCP d\u00e9di\u00e9 auquel les clients IA comme Claude peuvent se connecter. Lorsqu'il est d\u00e9sactiv\u00e9, le point de terminaison est supprim\u00e9 et les clients IA externes ne peuvent pas d\u00e9couvrir ou appeler les capacit\u00e9s de SureForms."],"Learn more":["En savoir plus"],"MCP Adapter Required":["Adaptateur MCP requis"],"Heading 1":["Titre 1"],"Heading 2":["Titre 2"],"Heading 3":["Titre 3"],"Heading 4":["Titre 4"],"Heading 5":["Titre 5"],"Heading 6":["Titre 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Configurez la cl\u00e9 API Google Maps pour la saisie semi-automatique des adresses et l'aper\u00e7u de la carte."],"Help shape the future of SureForms":["Aidez \u00e0 fa\u00e7onner l'avenir de SureForms"],"Enable Google Address Autocomplete":["Activer la saisie semi-automatique d'adresse Google"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Passez au plan d'affaires SureForms pour ajouter la saisie semi-automatique d'adresses aliment\u00e9e par Google avec un aper\u00e7u de la carte interactive \u00e0 vos formulaires."],"Auto-suggest addresses as users type for faster, error-free submissions":["Sugg\u00e9rer automatiquement des adresses au fur et \u00e0 mesure que les utilisateurs tapent pour des soumissions plus rapides et sans erreur"],"Show an interactive map preview with draggable pin for precise locations":["Afficher un aper\u00e7u de carte interactif avec un rep\u00e8re d\u00e9pla\u00e7able pour des emplacements pr\u00e9cis"],"Automatically populate address fields like city, state, and postal code":["Remplir automatiquement les champs d'adresse tels que la ville, l'\u00e9tat et le code postal"],"This form is now closed as we've received all the entries.":["Ce formulaire est maintenant ferm\u00e9 car nous avons re\u00e7u toutes les inscriptions."],"Thank you for contacting us! We will be in touch with you shortly.":["Merci de nous avoir contact\u00e9s ! Nous vous contacterons sous peu."],"Saving\u2026":["Enregistrement\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Lorsqu'il est activ\u00e9, ce formulaire ne stockera pas l'IP de l'utilisateur, le nom du navigateur et le nom de l'appareil dans les entr\u00e9es."],"Form data":["Donn\u00e9es du formulaire"],"Unsaved changes":["Modifications non enregistr\u00e9es"],"Keep editing":["Continuez \u00e0 \u00e9diter"],"Global Defaults":["Param\u00e8tres par d\u00e9faut globaux"],"Form Restrictions":["Restrictions de formulaire"],"Configure default settings that apply to newly created forms.":["Configurer les param\u00e8tres par d\u00e9faut qui s'appliquent aux formulaires nouvellement cr\u00e9\u00e9s."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Collectez des informations non sensibles de votre site web, telles que la version PHP et les fonctionnalit\u00e9s utilis\u00e9es, pour nous aider \u00e0 corriger les bugs plus rapidement, \u00e0 prendre des d\u00e9cisions plus \u00e9clair\u00e9es et \u00e0 d\u00e9velopper des fonctionnalit\u00e9s qui comptent r\u00e9ellement pour vous."],"Failed to load pages. Please refresh and try again.":["\u00c9chec du chargement des pages. Veuillez actualiser et r\u00e9essayer."],"Failed to load settings. Please refresh and try again.":["\u00c9chec du chargement des param\u00e8tres. Veuillez actualiser et r\u00e9essayer."],"Form Validation fields cannot be left blank.":["Les champs de validation de formulaire ne peuvent pas \u00eatre laiss\u00e9s vides."],"Recipient email is required when email summaries are enabled.":["L'adresse e-mail du destinataire est requise lorsque les r\u00e9sum\u00e9s par e-mail sont activ\u00e9s."],"Please enter a valid recipient email.":["Veuillez entrer une adresse e-mail de destinataire valide."],"Settings saved.":["Param\u00e8tres enregistr\u00e9s."],"Failed to save settings.":["\u00c9chec de l'enregistrement des param\u00e8tres."],"Some settings failed to save. Please retry.":["Certains param\u00e8tres n'ont pas pu \u00eatre enregistr\u00e9s. Veuillez r\u00e9essayer."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Certains champs contiennent des modifications non enregistr\u00e9es. Abandonnez-les pour continuer, ou restez pour enregistrer vos modifications."],"Discard & switch":["Annuler et changer"],"Import":["Importer"],"Migration":["Migration"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importer des formulaires depuis Contact Form 7, WPForms, Gravity Forms et d'autres plugins dans SureForms."],"Could not generate the import preview.":["Impossible de g\u00e9n\u00e9rer l'aper\u00e7u de l'importation."],"Import failed. Please try again or check your error logs.":["\u00c9chec de l'importation. Veuillez r\u00e9essayer ou v\u00e9rifier vos journaux d'erreurs."],"Go back":["Retourne"],"Update & import":["Mise \u00e0 jour et importation"],"Confirm & import":["Confirmer et importer"],"Form #%s":["Formulaire n\u00b0%s"],"%d field will import":["%d champ sera import\u00e9"],"Some fields can't be migrated yet":["Certains champs ne peuvent pas encore \u00eatre migr\u00e9s"],"These fields will be skipped - add them manually after the form is created:":["Ces champs seront ignor\u00e9s - ajoutez-les manuellement apr\u00e8s la cr\u00e9ation du formulaire :"],"Some forms could not be parsed":["Certains formulaires n'ont pas pu \u00eatre analys\u00e9s"],"Update existing":["Mettre \u00e0 jour l'existant"],"Create a new copy":["Cr\u00e9er une nouvelle copie"],"Could not load forms for this source.":["Impossible de charger les formulaires pour cette source."],"(untitled form)":["(formulaire sans titre)"],"Previously imported":["Import\u00e9 pr\u00e9c\u00e9demment"],"Open existing SureForms form in a new tab":["Ouvrir le formulaire SureForms existant dans un nouvel onglet"],"On re-import":["Lors de la r\u00e9importation"],"No forms found in this plugin.":["Aucun formulaire trouv\u00e9 dans ce plugin."],"%1$d of %2$d form selected":["%1$d sur %2$d formulaire s\u00e9lectionn\u00e9"],"Preview update":["Aper\u00e7u de la mise \u00e0 jour"],"Preview import":["Aper\u00e7u de l'importation"],"Migration complete":["Migration termin\u00e9e"],"Nothing was imported":["Rien n'a \u00e9t\u00e9 import\u00e9"],"%d form was imported into SureForms.":["%d formulaire a \u00e9t\u00e9 import\u00e9 dans SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["Aucun des formulaires s\u00e9lectionn\u00e9s n'a pu \u00eatre migr\u00e9. Voir les avertissements ci-dessous pour plus de d\u00e9tails."],"Imported forms":["Formulaires import\u00e9s"],"Edit in SureForms":["Modifier dans SureForms"],"Some fields were skipped during import":["Certains champs ont \u00e9t\u00e9 ignor\u00e9s lors de l'importation"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Ajoutez-les manuellement dans l'\u00e9diteur de formulaire - ils n'ont pas encore d'\u00e9quivalent SureForms :"],"Some forms failed to import":["Certains formulaires n'ont pas pu \u00eatre import\u00e9s"],"Import more forms":["Importer plus de formulaires"],"Could not load the list of importable plugins.":["Impossible de charger la liste des plugins importables."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Aucun plugin de formulaire pris en charge n'est actif sur ce site. Activez-en un (comme Contact Form 7) avec au moins un formulaire pour l'importer dans SureForms."],"Plugin":["Plugin"],"%d form":["%d formulaire"],"No forms":["Pas de formulaires"],"Multiple choice":["Choix multiple"],"Consent":["Consentement"],"The image uploaded but could not be inserted. Please try again.":["L'image a \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9e mais n'a pas pu \u00eatre ins\u00e9r\u00e9e. Veuillez r\u00e9essayer."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["L'image n'a pas pu \u00eatre t\u00e9l\u00e9charg\u00e9e. Elle est peut-\u00eatre trop grande, ou vous n'avez pas la permission de t\u00e9l\u00e9charger des fichiers."],"Please choose an image file.":["Veuillez choisir un fichier image."],"Show views and conversion rate":["Afficher les vues et le taux de conversion"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Ajoute les colonnes Vues et Taux de conversion \u00e0 la liste des formulaires. Une vue est compt\u00e9e une fois par visite de page lorsque le formulaire appara\u00eet \u00e0 l'\u00e9cran, et le taux de conversion est la part de ces vues qui se sont termin\u00e9es par une soumission. Le comptage commence la premi\u00e8re fois que vous l'activez, donc les soumissions re\u00e7ues avant cela ne sont pas compt\u00e9es dans le taux. Le d\u00e9sactiver par la suite ne fait que masquer les colonnes \u2014 le comptage continue, donc les chiffres sont \u00e0 jour si vous le r\u00e9activez."],"Log cleared.":["Journal effac\u00e9."],"Could not clear the log.":["Impossible d'effacer le journal."],"Enable logs":["Activer les journaux"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Enregistre les \u00e9checs de soumission de formulaire signal\u00e9s par le navigateur, afin que vous puissiez envoyer le journal au support au lieu de lire la console. Rien n'est \u00e9crit tant que vos formulaires fonctionnent, et les valeurs soumises ne sont jamais stock\u00e9es."],"Download log":["T\u00e9l\u00e9charger le journal"],"Confirm delete":["Confirmer la suppression"],"Log is full \u2014 download and clear it to keep recording.":["Le journal est plein \u2014 t\u00e9l\u00e9chargez-le et effacez-le pour continuer l'enregistrement."],"Form Views & Conversion":["Vues de formulaire et conversion"],"Logs":["Journaux"],"Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures.":["Les vues et soumissions par toute personne pouvant \u00e9diter le site sont normalement omises, afin que tester vos propres formulaires ne modifie pas ces chiffres."],"Quill heading picker: default paragraph style\u0004Normal":["Normal"]}}} \ No newline at end of file diff --git a/languages/sureforms-fr_FR-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json b/languages/sureforms-fr_FR-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json index aa35e80ab..a271b150a 100644 --- a/languages/sureforms-fr_FR-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json +++ b/languages/sureforms-fr_FR-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json @@ -1 +1 @@ -{"translation-revision-date":"2024-12-13T13:12:49+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Tableau de bord"],"Settings":["Param\u00e8tres"],"Entries":["Entr\u00e9es"],"Activated":["Activ\u00e9"],"Advanced Fields":["Champs avanc\u00e9s"],"Select Form":["S\u00e9lectionner le formulaire"],"Create New Form":["Cr\u00e9er un nouveau formulaire"],"Forms":["Formulaires"],"Copy":["Copier"],"Business":["Affaires"],"Next":["Suivant"],"Back":["Retour"],"Cancel":["Annuler"],"This is where your form views will appear":["C'est ici que vos vues de formulaire appara\u00eetront"],"Install":["Installer"],"Plugin Installation failed, Please try again later.":["L'installation du plugin a \u00e9chou\u00e9, veuillez r\u00e9essayer plus tard."],"Plugin activation failed, Please try again later.":["L'activation du plugin a \u00e9chou\u00e9, veuillez r\u00e9essayer plus tard."],"What's New?":["Quoi de neuf ?"],"Core":["C\u0153ur"],"Unlicensed":["Sans licence"],"Upgrade":["Mise \u00e0 niveau"],"Webhooks":["Webhooks"],"Install & Activate":["Installer et activer"],"Conditional Logic":["Logique conditionnelle"],"Premium":["Premium"],"Welcome to SureForms!":["Bienvenue chez SureForms !"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms est un plugin WordPress qui permet aux utilisateurs de cr\u00e9er de magnifiques formulaires gr\u00e2ce \u00e0 une interface de glisser-d\u00e9poser, sans avoir besoin de coder. Il s'int\u00e8gre avec l'\u00e9diteur de blocs WordPress."],"Read Full Guide":["Lire le guide complet"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms : Formulaires WordPress personnalis\u00e9s SIMPLIFI\u00c9S"],"No Date":["Aucune date"],"Invalid Date":["Date invalide"],"Ready to go beyond free plan?":["Pr\u00eat \u00e0 aller au-del\u00e0 du plan gratuit ?"],"Upgrade now":["Mettez \u00e0 niveau maintenant"],"and unlock the full power of SureForms!":["et d\u00e9bloquez toute la puissance de SureForms !"],"Upgrade SureForms":["Mettre \u00e0 niveau SureForms"],"Open Support Ticket":["Ouvrir un ticket de support"],"Help Center":["Centre d'aide"],"Join our Community on Facebook":["Rejoignez notre communaut\u00e9 sur Facebook"],"Leave Us a Review":["Laissez-nous un avis"],"Quick Access":["Acc\u00e8s rapide"],"Upgrade Now":["Mettez \u00e0 niveau maintenant"],"Clear Filters":["Effacer les filtres"],"Unnamed Form":["Formulaire sans nom"],"Forms Overview":["Aper\u00e7u des formulaires"],"Clear Form Filters":["Effacer les filtres du formulaire"],"Clear Date Filters":["Effacer les filtres de date"],"Select Date Range":["S\u00e9lectionner la plage de dates"],"Apply":["Appliquer"],"Please wait for the data to load":["Veuillez attendre le chargement des donn\u00e9es"],"No entries to display":["Aucune entr\u00e9e \u00e0 afficher"],"Once you create a form and start receiving submissions, the data will appear here.":["Une fois que vous cr\u00e9ez un formulaire et commencez \u00e0 recevoir des soumissions, les donn\u00e9es appara\u00eetront ici."],"Free":["Gratuit"],"All Forms":["Tous les formulaires"],"Guided Setup":["Configuration guid\u00e9e"],"Exit Guided Setup":["Quitter l'installation guid\u00e9e"],"Skip":["Passer"],"Build beautiful forms visually":["Cr\u00e9ez de beaux formulaires visuellement"],"Works perfectly on mobile":["Fonctionne parfaitement sur mobile"],"Easy to connect with automation tools":["Facile \u00e0 connecter avec des outils d'automatisation"],"Welcome to SureForms":["Bienvenue chez SureForms"],"Smart, Quick and Powerful Forms.":["Formulaires intelligents, rapides et puissants."],"Let's Get Started":["Commen\u00e7ons"],"Build up to 10 forms using AI":["Cr\u00e9ez jusqu'\u00e0 10 formulaires en utilisant l'IA"],"A secure and private connection":["Une connexion s\u00e9curis\u00e9e et priv\u00e9e"],"Smart form drafts based on your input":["Brouillons de formulaires intelligents bas\u00e9s sur votre saisie"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Commencer \u00e0 partir d'un formulaire vierge n'est pas toujours facile. Notre IA peut vous aider en cr\u00e9ant un brouillon de formulaire bas\u00e9 sur ce que vous essayez de faire \u2014 vous faisant gagner du temps et vous donnant une direction claire."],"To do this, you'll need to connect your account.":["Pour ce faire, vous devrez connecter votre compte."],"Let AI Help You Build Smarter, Faster Forms":["Laissez l'IA vous aider \u00e0 cr\u00e9er des formulaires plus intelligents et plus rapides"],"Here's what that gives you:":["Voici ce que cela vous donne :"],"Continue":["Continuer"],"Connect":["Connecter"],"Works smoothly with forms made using SureForms":["Fonctionne parfaitement avec les formulaires cr\u00e9\u00e9s \u00e0 l'aide de SureForms"],"Helps your emails reach the inbox instead of spam":["Aide vos e-mails \u00e0 atteindre la bo\u00eete de r\u00e9ception au lieu du spam"],"Setup is straightforward, even if you're not technical":["L'installation est simple, m\u00eame si vous n'\u00eates pas technique"],"Lightweight and easy to use without adding clutter":["L\u00e9ger et facile \u00e0 utiliser sans ajouter de d\u00e9sordre"],"Make Sure Your Emails Get Delivered":["Assurez-vous que vos e-mails soient livr\u00e9s"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["La plupart des sites WordPress ont du mal \u00e0 envoyer des e-mails de mani\u00e8re fiable, ce qui signifie que les soumissions de formulaires de votre site pourraient ne pas atteindre votre bo\u00eete de r\u00e9ception \u2014 ou finir dans les spams."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail est un plugin SMTP simple qui aide \u00e0 s'assurer que vos e-mails sont effectivement livr\u00e9s."],"What you will get:":["Ce que vous obtiendrez :"],"Install SureMail":["Installez SureMail"],"AI Form Generation":["G\u00e9n\u00e9ration de formulaires par IA"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["Fatigu\u00e9 de cr\u00e9er des formulaires manuellement ? Laissez l'IA faire le travail pour vous. D\u00e9crivez simplement et notre IA cr\u00e9era votre formulaire parfait en quelques secondes."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["D\u00e9composez les formulaires complexes en \u00e9tapes simples, r\u00e9duisant ainsi la surcharge et augmentant les taux de compl\u00e9tion. Guidez les utilisateurs en douceur tout au long du processus"],"Conditional Fields":["Champs conditionnels"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Afficher ou masquer les champs en fonction des r\u00e9ponses des utilisateurs. Posez les bonnes questions et affichez uniquement ce qui est n\u00e9cessaire pour garder les formulaires clairs et pertinents."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Am\u00e9liorez vos formulaires avec des champs avanc\u00e9s tels que le t\u00e9l\u00e9chargement de plusieurs fichiers, les champs de notation et les s\u00e9lecteurs de date et d'heure pour collecter des donn\u00e9es plus riches et flexibles."],"Conversational Forms":["Formes conversationnelles"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Cr\u00e9ez des formulaires qui ressemblent \u00e0 une conversation. Une question \u00e0 la fois maintient l'engagement des utilisateurs et facilite la compl\u00e9tion du formulaire."],"Digital Signatures":["Signatures num\u00e9riques"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Collectez des signatures num\u00e9riques l\u00e9galement contraignantes directement dans vos formulaires pour les accords, les approbations et les contrats."],"Calculators":["Calculatrices"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Ajoutez des calculateurs interactifs \u00e0 vos formulaires pour des estimations, devis et calculs instantan\u00e9s pour vos utilisateurs."],"User Registration and Login":["Inscription et Connexion Utilisateur"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Permettez aux visiteurs de s'inscrire et de se connecter \u00e0 votre site. Utile pour les sites de membres, de communaut\u00e9 ou tout site n\u00e9cessitant un acc\u00e8s utilisateur."],"PDF Generation Made Simple":["G\u00e9n\u00e9ration de PDF simplifi\u00e9e"],"Custom App":["Application personnalis\u00e9e"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Collectez des donn\u00e9es, envoyez-les \u00e0 des applications externes pour traitement, et affichez les r\u00e9sultats instantan\u00e9ment \u2014 le tout int\u00e9gr\u00e9 de mani\u00e8re transparente pour cr\u00e9er des exp\u00e9riences utilisateur dynamiques et interactives."],"Select Your Features":["S\u00e9lectionnez vos fonctionnalit\u00e9s"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Obtenez plus de contr\u00f4le, des flux de travail plus rapides et une personnalisation plus pouss\u00e9e \u2014 tout est con\u00e7u pour vous aider \u00e0 cr\u00e9er de meilleurs sites web avec moins d'effort."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Les fonctionnalit\u00e9s s\u00e9lectionn\u00e9es n\u00e9cessitent %1$s - utilisez le code %2$s pour obtenir 10 % de r\u00e9duction sur n'importe quel plan."],"Copied":["Copi\u00e9"],"Style your form to better match your site's design":["Adaptez le style de votre formulaire pour mieux correspondre au design de votre site"],"Add spam protection to block common bot submissions":["Ajoutez une protection anti-spam pour bloquer les soumissions courantes de bots"],"Get weekly email reports with a summary of form activity":["Recevez des rapports hebdomadaires par e-mail avec un r\u00e9sum\u00e9 de l'activit\u00e9 du formulaire"],"You're All Set! \ud83d\ude80":["Tout est pr\u00eat ! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Utilisez notre g\u00e9n\u00e9rateur de formulaires IA pour commencer rapidement, ou cr\u00e9ez votre formulaire \u00e0 partir de z\u00e9ro si vous savez d\u00e9j\u00e0 ce dont vous avez besoin. Vos formulaires sont pr\u00eats \u00e0 \u00eatre cr\u00e9\u00e9s, partag\u00e9s et connect\u00e9s avec les visiteurs de votre site."],"Final Touches That Make a Difference:":["Touches finales qui font la diff\u00e9rence :"],"Build Your First Form":["Cr\u00e9ez votre premier formulaire"],"File Uploads":["T\u00e9l\u00e9versements de fichiers"],"Signature & Rating":["Signature et \u00e9valuation"],"Calculation Forms":["Formulaires de calcul"],"And Much More\u2026":["Et bien plus encore\u2026"],"Upgrade to Pro":["Passer \u00e0 Pro"],"Unlock Premium Features":["D\u00e9bloquez les fonctionnalit\u00e9s Premium"],"Build Better Forms with SureForms":["Cr\u00e9ez de meilleurs formulaires avec SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Ajoutez des champs avanc\u00e9s, des mises en page conversationnelles et une logique intelligente pour cr\u00e9er des formulaires qui engagent les utilisateurs et capturent de meilleures donn\u00e9es."],"SureForms Video Thumbnail":["Miniature vid\u00e9o SureForms"],"Payments":["Paiements"],"Knowledge Base":["Base de connaissances"],"What\u2019s New":["Quoi de neuf"],"Importing\u2026":["Importation\u2026"],"Learn":["Apprendre"],"Unable to complete action. Please try again.":["Impossible de terminer l'action. Veuillez r\u00e9essayer."],"Supercharge Your Workflow":["Boostez votre flux de travail"],"Spam protection included":["Protection contre le spam incluse"],"Multistep Forms":["Formulaires \u00e0 \u00e9tapes multiples"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Envoyez instantan\u00e9ment les entr\u00e9es de formulaire \u00e0 tout syst\u00e8me ou point de terminaison externe pour alimenter des flux de travail avanc\u00e9s."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Transformez automatiquement les entr\u00e9es de formulaire en PDF propres et pr\u00eats \u00e0 t\u00e9l\u00e9charger. Parfait pour les archives, le partage, l'archivage ou pour garder les choses organis\u00e9es."],"Set up confirmation messages and email notifications for each entry":["Configurer les messages de confirmation et les notifications par e-mail pour chaque entr\u00e9e"],"Something went wrong. Please try again.":["Un probl\u00e8me est survenu. Veuillez r\u00e9essayer."],"Payment Forms":["Formulaires de paiement"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Collectez les paiements directement via vos formulaires. Acceptez les paiements uniques et r\u00e9currents en toute simplicit\u00e9."],"SureForms %s":["SureForms %s"],"First name is required.":["Le pr\u00e9nom est requis."],"Please enter a valid email address.":["Veuillez entrer une adresse e-mail valide."],"Email address is required.":["L'adresse e-mail est requise."],"This is required.":["Ceci est requis."],"Okay, just one last step\u2026":["D'accord, juste une derni\u00e8re \u00e9tape\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Aidez-nous \u00e0 personnaliser votre exp\u00e9rience SureForms en partageant quelques informations sur vous."],"First Name":["Pr\u00e9nom"],"Enter your first name":["Entrez votre pr\u00e9nom"],"Last Name":["Nom de famille"],"Enter your last name":["Entrez votre nom de famille"],"Email Address":["Adresse e-mail"],"Enter your email address":["Entrez votre adresse e-mail"],"Privacy Policy":["Politique de confidentialit\u00e9"],"Finish":["Terminer"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Restez inform\u00e9 et contribuez \u00e0 fa\u00e7onner SureForms ! Recevez des mises \u00e0 jour des fonctionnalit\u00e9s et aidez-nous \u00e0 am\u00e9liorer SureForms en partageant comment vous utilisez le plugin. Politique de confidentialit\u00e9<\/a>."],"%d form ready":["%d formulaire pr\u00eat"],"%d already imported":["%d d\u00e9j\u00e0 import\u00e9"],"(unnamed source)":["(source sans nom)"],"All forms already imported":["Tous les formulaires d\u00e9j\u00e0 import\u00e9s"],"Import forms":["Importer des formulaires"],"Import %d form":["Importer %d formulaire"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Une erreur s'est produite lors de l'importation. Vous pouvez r\u00e9essayer, passer ou ouvrir Param\u00e8tres \u2192 Migration."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Aucun autre plugin de formulaire d\u00e9tect\u00e9. Vous pouvez importer \u00e0 tout moment depuis Param\u00e8tres \u2192 Migration."],"Forms imported":["Formulaires import\u00e9s"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["%1$d formulaire de %2$s est maintenant dans SureForms, pr\u00eat \u00e0 \u00eatre publi\u00e9, styl\u00e9 et connect\u00e9."],"%d form imported":["%d formulaire import\u00e9"],"%d form could not be imported":["%d formulaire n'a pas pu \u00eatre import\u00e9"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d type de champ n'\u00e9tait pas pris en charge. Vous pouvez le reconstruire manuellement dans SureForms."],"Bring your existing forms with you":["Apportez vos formulaires existants avec vous"],"We detected forms in another plugin. Pick one to import into SureForms.":["Nous avons d\u00e9tect\u00e9 des formulaires dans un autre plugin. Choisissez-en un \u00e0 importer dans SureForms."],"Choose a form plugin to import from":["Choisissez un plugin de formulaire \u00e0 importer"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Importer plus d'un plugin ? Vous pouvez importer des sources suppl\u00e9mentaires plus tard depuis Param\u00e8tres \u2192 Migration."],"Import did not complete":["L'importation n'a pas \u00e9t\u00e9 compl\u00e9t\u00e9e"],"I'll do this later":["Je le ferai plus tard"],"Retry":["R\u00e9essayer"],"Form Checks":["V\u00e9rifications de formulaire"],"Collapse form checks":["R\u00e9duire les v\u00e9rifications de formulaire"],"Expand form checks":["D\u00e9velopper les v\u00e9rifications de formulaire"],"Ignore":["Ignorer"],"Working\u2026":["En cours\u2026"]}}} \ No newline at end of file +{"translation-revision-date":"2024-12-13T13:12:49+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Tableau de bord"],"Settings":["Param\u00e8tres"],"Entries":["Entr\u00e9es"],"Activated":["Activ\u00e9"],"Advanced Fields":["Champs avanc\u00e9s"],"Select Form":["S\u00e9lectionner le formulaire"],"Create New Form":["Cr\u00e9er un nouveau formulaire"],"Forms":["Formulaires"],"Copy":["Copier"],"Business":["Affaires"],"Next":["Suivant"],"Back":["Retour"],"Close":["Fermer"],"Cancel":["Annuler"],"This is where your form views will appear":["C'est ici que vos vues de formulaire appara\u00eetront"],"Install":["Installer"],"Plugin Installation failed, Please try again later.":["L'installation du plugin a \u00e9chou\u00e9, veuillez r\u00e9essayer plus tard."],"Plugin activation failed, Please try again later.":["L'activation du plugin a \u00e9chou\u00e9, veuillez r\u00e9essayer plus tard."],"What's New?":["Quoi de neuf ?"],"Core":["C\u0153ur"],"Unlicensed":["Sans licence"],"Upgrade":["Mise \u00e0 niveau"],"Webhooks":["Webhooks"],"Install & Activate":["Installer et activer"],"Contact Support":["Contacter le support"],"Conditional Logic":["Logique conditionnelle"],"Premium":["Premium"],"Welcome to SureForms!":["Bienvenue chez SureForms !"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms est un plugin WordPress qui permet aux utilisateurs de cr\u00e9er de magnifiques formulaires gr\u00e2ce \u00e0 une interface de glisser-d\u00e9poser, sans avoir besoin de coder. Il s'int\u00e8gre avec l'\u00e9diteur de blocs WordPress."],"Read Full Guide":["Lire le guide complet"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms : Formulaires WordPress personnalis\u00e9s SIMPLIFI\u00c9S"],"No Date":["Aucune date"],"Invalid Date":["Date invalide"],"Ready to go beyond free plan?":["Pr\u00eat \u00e0 aller au-del\u00e0 du plan gratuit ?"],"Upgrade now":["Mettez \u00e0 niveau maintenant"],"and unlock the full power of SureForms!":["et d\u00e9bloquez toute la puissance de SureForms !"],"Upgrade SureForms":["Mettre \u00e0 niveau SureForms"],"Open Support Ticket":["Ouvrir un ticket de support"],"Help Center":["Centre d'aide"],"Join our Community on Facebook":["Rejoignez notre communaut\u00e9 sur Facebook"],"Leave Us a Review":["Laissez-nous un avis"],"Quick Access":["Acc\u00e8s rapide"],"Upgrade Now":["Mettez \u00e0 niveau maintenant"],"Clear Filters":["Effacer les filtres"],"Unnamed Form":["Formulaire sans nom"],"Forms Overview":["Aper\u00e7u des formulaires"],"Clear Form Filters":["Effacer les filtres du formulaire"],"Clear Date Filters":["Effacer les filtres de date"],"Select Date Range":["S\u00e9lectionner la plage de dates"],"Apply":["Appliquer"],"Please wait for the data to load":["Veuillez attendre le chargement des donn\u00e9es"],"No entries to display":["Aucune entr\u00e9e \u00e0 afficher"],"Once you create a form and start receiving submissions, the data will appear here.":["Une fois que vous cr\u00e9ez un formulaire et commencez \u00e0 recevoir des soumissions, les donn\u00e9es appara\u00eetront ici."],"Free":["Gratuit"],"All Forms":["Tous les formulaires"],"Guided Setup":["Configuration guid\u00e9e"],"Exit Guided Setup":["Quitter l'installation guid\u00e9e"],"Skip":["Passer"],"Build beautiful forms visually":["Cr\u00e9ez de beaux formulaires visuellement"],"Works perfectly on mobile":["Fonctionne parfaitement sur mobile"],"Easy to connect with automation tools":["Facile \u00e0 connecter avec des outils d'automatisation"],"Welcome to SureForms":["Bienvenue chez SureForms"],"Smart, Quick and Powerful Forms.":["Formulaires intelligents, rapides et puissants."],"Let's Get Started":["Commen\u00e7ons"],"Build up to 10 forms using AI":["Cr\u00e9ez jusqu'\u00e0 10 formulaires en utilisant l'IA"],"A secure and private connection":["Une connexion s\u00e9curis\u00e9e et priv\u00e9e"],"Smart form drafts based on your input":["Brouillons de formulaires intelligents bas\u00e9s sur votre saisie"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Commencer \u00e0 partir d'un formulaire vierge n'est pas toujours facile. Notre IA peut vous aider en cr\u00e9ant un brouillon de formulaire bas\u00e9 sur ce que vous essayez de faire \u2014 vous faisant gagner du temps et vous donnant une direction claire."],"To do this, you'll need to connect your account.":["Pour ce faire, vous devrez connecter votre compte."],"Let AI Help You Build Smarter, Faster Forms":["Laissez l'IA vous aider \u00e0 cr\u00e9er des formulaires plus intelligents et plus rapides"],"Here's what that gives you:":["Voici ce que cela vous donne :"],"Continue":["Continuer"],"Connect":["Connecter"],"Works smoothly with forms made using SureForms":["Fonctionne parfaitement avec les formulaires cr\u00e9\u00e9s \u00e0 l'aide de SureForms"],"Helps your emails reach the inbox instead of spam":["Aide vos e-mails \u00e0 atteindre la bo\u00eete de r\u00e9ception au lieu du spam"],"Setup is straightforward, even if you're not technical":["L'installation est simple, m\u00eame si vous n'\u00eates pas technique"],"Lightweight and easy to use without adding clutter":["L\u00e9ger et facile \u00e0 utiliser sans ajouter de d\u00e9sordre"],"Make Sure Your Emails Get Delivered":["Assurez-vous que vos e-mails soient livr\u00e9s"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["La plupart des sites WordPress ont du mal \u00e0 envoyer des e-mails de mani\u00e8re fiable, ce qui signifie que les soumissions de formulaires de votre site pourraient ne pas atteindre votre bo\u00eete de r\u00e9ception \u2014 ou finir dans les spams."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail est un plugin SMTP simple qui aide \u00e0 s'assurer que vos e-mails sont effectivement livr\u00e9s."],"What you will get:":["Ce que vous obtiendrez :"],"Install SureMail":["Installez SureMail"],"AI Form Generation":["G\u00e9n\u00e9ration de formulaires par IA"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["Fatigu\u00e9 de cr\u00e9er des formulaires manuellement ? Laissez l'IA faire le travail pour vous. D\u00e9crivez simplement et notre IA cr\u00e9era votre formulaire parfait en quelques secondes."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["D\u00e9composez les formulaires complexes en \u00e9tapes simples, r\u00e9duisant ainsi la surcharge et augmentant les taux de compl\u00e9tion. Guidez les utilisateurs en douceur tout au long du processus"],"Conditional Fields":["Champs conditionnels"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Afficher ou masquer les champs en fonction des r\u00e9ponses des utilisateurs. Posez les bonnes questions et affichez uniquement ce qui est n\u00e9cessaire pour garder les formulaires clairs et pertinents."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Am\u00e9liorez vos formulaires avec des champs avanc\u00e9s tels que le t\u00e9l\u00e9chargement de plusieurs fichiers, les champs de notation et les s\u00e9lecteurs de date et d'heure pour collecter des donn\u00e9es plus riches et flexibles."],"Conversational Forms":["Formes conversationnelles"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Cr\u00e9ez des formulaires qui ressemblent \u00e0 une conversation. Une question \u00e0 la fois maintient l'engagement des utilisateurs et facilite la compl\u00e9tion du formulaire."],"Digital Signatures":["Signatures num\u00e9riques"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Collectez des signatures num\u00e9riques l\u00e9galement contraignantes directement dans vos formulaires pour les accords, les approbations et les contrats."],"Calculators":["Calculatrices"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Ajoutez des calculateurs interactifs \u00e0 vos formulaires pour des estimations, devis et calculs instantan\u00e9s pour vos utilisateurs."],"User Registration and Login":["Inscription et Connexion Utilisateur"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Permettez aux visiteurs de s'inscrire et de se connecter \u00e0 votre site. Utile pour les sites de membres, de communaut\u00e9 ou tout site n\u00e9cessitant un acc\u00e8s utilisateur."],"PDF Generation Made Simple":["G\u00e9n\u00e9ration de PDF simplifi\u00e9e"],"Custom App":["Application personnalis\u00e9e"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Collectez des donn\u00e9es, envoyez-les \u00e0 des applications externes pour traitement, et affichez les r\u00e9sultats instantan\u00e9ment \u2014 le tout int\u00e9gr\u00e9 de mani\u00e8re transparente pour cr\u00e9er des exp\u00e9riences utilisateur dynamiques et interactives."],"Select Your Features":["S\u00e9lectionnez vos fonctionnalit\u00e9s"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Obtenez plus de contr\u00f4le, des flux de travail plus rapides et une personnalisation plus pouss\u00e9e \u2014 tout est con\u00e7u pour vous aider \u00e0 cr\u00e9er de meilleurs sites web avec moins d'effort."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Les fonctionnalit\u00e9s s\u00e9lectionn\u00e9es n\u00e9cessitent %1$s - utilisez le code %2$s pour obtenir 10 % de r\u00e9duction sur n'importe quel plan."],"Copied":["Copi\u00e9"],"Style your form to better match your site's design":["Adaptez le style de votre formulaire pour mieux correspondre au design de votre site"],"Add spam protection to block common bot submissions":["Ajoutez une protection anti-spam pour bloquer les soumissions courantes de bots"],"Get weekly email reports with a summary of form activity":["Recevez des rapports hebdomadaires par e-mail avec un r\u00e9sum\u00e9 de l'activit\u00e9 du formulaire"],"You're All Set! \ud83d\ude80":["Tout est pr\u00eat ! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Utilisez notre g\u00e9n\u00e9rateur de formulaires IA pour commencer rapidement, ou cr\u00e9ez votre formulaire \u00e0 partir de z\u00e9ro si vous savez d\u00e9j\u00e0 ce dont vous avez besoin. Vos formulaires sont pr\u00eats \u00e0 \u00eatre cr\u00e9\u00e9s, partag\u00e9s et connect\u00e9s avec les visiteurs de votre site."],"Final Touches That Make a Difference:":["Touches finales qui font la diff\u00e9rence :"],"Build Your First Form":["Cr\u00e9ez votre premier formulaire"],"File Uploads":["T\u00e9l\u00e9versements de fichiers"],"Signature & Rating":["Signature et \u00e9valuation"],"Calculation Forms":["Formulaires de calcul"],"And Much More\u2026":["Et bien plus encore\u2026"],"Upgrade to Pro":["Passer \u00e0 Pro"],"Unlock Premium Features":["D\u00e9bloquez les fonctionnalit\u00e9s Premium"],"Build Better Forms with SureForms":["Cr\u00e9ez de meilleurs formulaires avec SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Ajoutez des champs avanc\u00e9s, des mises en page conversationnelles et une logique intelligente pour cr\u00e9er des formulaires qui engagent les utilisateurs et capturent de meilleures donn\u00e9es."],"SureForms Video Thumbnail":["Miniature vid\u00e9o SureForms"],"Payments":["Paiements"],"Knowledge Base":["Base de connaissances"],"What\u2019s New":["Quoi de neuf"],"Importing\u2026":["Importation\u2026"],"Learn":["Apprendre"],"Unable to complete action. Please try again.":["Impossible de terminer l'action. Veuillez r\u00e9essayer."],"Supercharge Your Workflow":["Boostez votre flux de travail"],"Spam protection included":["Protection contre le spam incluse"],"Multistep Forms":["Formulaires \u00e0 \u00e9tapes multiples"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Envoyez instantan\u00e9ment les entr\u00e9es de formulaire \u00e0 tout syst\u00e8me ou point de terminaison externe pour alimenter des flux de travail avanc\u00e9s."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Transformez automatiquement les entr\u00e9es de formulaire en PDF propres et pr\u00eats \u00e0 t\u00e9l\u00e9charger. Parfait pour les archives, le partage, l'archivage ou pour garder les choses organis\u00e9es."],"Set up confirmation messages and email notifications for each entry":["Configurer les messages de confirmation et les notifications par e-mail pour chaque entr\u00e9e"],"Something went wrong. Please try again.":["Un probl\u00e8me est survenu. Veuillez r\u00e9essayer."],"Payment Forms":["Formulaires de paiement"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Collectez les paiements directement via vos formulaires. Acceptez les paiements uniques et r\u00e9currents en toute simplicit\u00e9."],"SureForms %s":["SureForms %s"],"First name is required.":["Le pr\u00e9nom est requis."],"Please enter a valid email address.":["Veuillez entrer une adresse e-mail valide."],"Email address is required.":["L'adresse e-mail est requise."],"This is required.":["Ceci est requis."],"Okay, just one last step\u2026":["D'accord, juste une derni\u00e8re \u00e9tape\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Aidez-nous \u00e0 personnaliser votre exp\u00e9rience SureForms en partageant quelques informations sur vous."],"First Name":["Pr\u00e9nom"],"Enter your first name":["Entrez votre pr\u00e9nom"],"Last Name":["Nom de famille"],"Enter your last name":["Entrez votre nom de famille"],"Email Address":["Adresse e-mail"],"Enter your email address":["Entrez votre adresse e-mail"],"Privacy Policy":["Politique de confidentialit\u00e9"],"Finish":["Terminer"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Restez inform\u00e9 et contribuez \u00e0 fa\u00e7onner SureForms ! Recevez des mises \u00e0 jour des fonctionnalit\u00e9s et aidez-nous \u00e0 am\u00e9liorer SureForms en partageant comment vous utilisez le plugin. Politique de confidentialit\u00e9<\/a>."],"%d form ready":["%d formulaire pr\u00eat"],"%d already imported":["%d d\u00e9j\u00e0 import\u00e9"],"(unnamed source)":["(source sans nom)"],"All forms already imported":["Tous les formulaires d\u00e9j\u00e0 import\u00e9s"],"Import forms":["Importer des formulaires"],"Import %d form":["Importer %d formulaire"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Une erreur s'est produite lors de l'importation. Vous pouvez r\u00e9essayer, passer ou ouvrir Param\u00e8tres \u2192 Migration."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Aucun autre plugin de formulaire d\u00e9tect\u00e9. Vous pouvez importer \u00e0 tout moment depuis Param\u00e8tres \u2192 Migration."],"Forms imported":["Formulaires import\u00e9s"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["%1$d formulaire de %2$s est maintenant dans SureForms, pr\u00eat \u00e0 \u00eatre publi\u00e9, styl\u00e9 et connect\u00e9."],"%d form imported":["%d formulaire import\u00e9"],"%d form could not be imported":["%d formulaire n'a pas pu \u00eatre import\u00e9"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d type de champ n'\u00e9tait pas pris en charge. Vous pouvez le reconstruire manuellement dans SureForms."],"Bring your existing forms with you":["Apportez vos formulaires existants avec vous"],"We detected forms in another plugin. Pick one to import into SureForms.":["Nous avons d\u00e9tect\u00e9 des formulaires dans un autre plugin. Choisissez-en un \u00e0 importer dans SureForms."],"Choose a form plugin to import from":["Choisissez un plugin de formulaire \u00e0 importer"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Importer plus d'un plugin ? Vous pouvez importer des sources suppl\u00e9mentaires plus tard depuis Param\u00e8tres \u2192 Migration."],"Import did not complete":["L'importation n'a pas \u00e9t\u00e9 compl\u00e9t\u00e9e"],"I'll do this later":["Je le ferai plus tard"],"Retry":["R\u00e9essayer"],"Form Checks":["V\u00e9rifications de formulaire"],"Collapse form checks":["R\u00e9duire les v\u00e9rifications de formulaire"],"Expand form checks":["D\u00e9velopper les v\u00e9rifications de formulaire"],"Ignore":["Ignorer"],"Working\u2026":["En cours\u2026"],"Details":["D\u00e9tails"],"Copy details":["Copier les d\u00e9tails"]}}} \ No newline at end of file diff --git a/languages/sureforms-fr_FR.mo b/languages/sureforms-fr_FR.mo index d4226a08d..05722a013 100644 Binary files a/languages/sureforms-fr_FR.mo and b/languages/sureforms-fr_FR.mo differ diff --git a/languages/sureforms-fr_FR.po b/languages/sureforms-fr_FR.po index 5df75c5fc..191b884e7 100644 --- a/languages/sureforms-fr_FR.po +++ b/languages/sureforms-fr_FR.po @@ -14,9 +14,9 @@ msgstr "" #. Plugin Name of the plugin #. Author of the plugin #: sureforms.php -#: admin/admin.php:1152 -#: admin/admin.php:1153 -#: admin/admin.php:3021 +#: admin/admin.php:1198 +#: admin/admin.php:1199 +#: admin/admin.php:3185 #: inc/abilities/abilities-registrar.php:139 #: inc/gutenberg-hooks.php:109 #: inc/page-builders/bricks/elements/form-widget.php:67 @@ -43,8 +43,8 @@ msgstr "Un moyen simple mais puissant de créer des formulaires modernes pour vo msgid "https://sureforms.com/" msgstr "https://sureforms.com/" -#: admin/admin.php:1165 -#: admin/admin.php:1166 +#: admin/admin.php:1211 +#: admin/admin.php:1212 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -59,9 +59,9 @@ msgstr "https://sureforms.com/" msgid "Dashboard" msgstr "Tableau de bord" -#: admin/admin.php:1183 -#: admin/admin.php:1184 -#: admin/admin.php:1616 +#: admin/admin.php:1229 +#: admin/admin.php:1230 +#: admin/admin.php:1662 #: inc/compatibility/multilingual/string-collector.php:236 #: inc/compatibility/multilingual/string-collector.php:245 #: inc/compatibility/multilingual/string-collector.php:313 @@ -79,15 +79,15 @@ msgstr "Tableau de bord" msgid "Settings" msgstr "Paramètres" -#: admin/admin.php:1452 -#: admin/admin.php:1453 +#: admin/admin.php:1498 +#: admin/admin.php:1499 #: inc/post-types.php:270 msgid "New Form" msgstr "Nouveau formulaire" -#: admin/admin.php:1461 -#: admin/admin.php:1462 -#: admin/admin.php:3340 +#: admin/admin.php:1507 +#: admin/admin.php:1508 +#: admin/admin.php:3504 #: inc/generate-form-markup.php:211 #: inc/generate-form-markup.php:224 #: inc/global-settings/email-summary.php:225 @@ -105,7 +105,7 @@ msgid "Entries" msgstr "Entrées" #. Translators: Post Title. -#: admin/admin.php:1704 +#: admin/admin.php:1750 #, php-format msgid "Edit %1$s" msgstr "Modifier %1$s" @@ -118,7 +118,7 @@ msgstr "Modifier %1$s" #: inc/duplicate-form.php:191 #: inc/export.php:126 #: inc/export.php:184 -#: inc/forms-data.php:88 +#: inc/forms-data.php:108 #: inc/global-settings/global-settings.php:89 #: inc/global-settings/global-settings.php:639 #: inc/rest-api.php:203 @@ -126,12 +126,12 @@ msgid "Nonce verification failed." msgstr "La vérification du nonce a échoué." #. translators: %1$s: Opening anchor tag with URL, %2$s: Closing anchor tag, %3$s: SureForms Pro Plugin Name. -#: admin/admin.php:2572 +#: admin/admin.php:2626 #, php-format msgid "Please %1$sactivate%2$s your copy of %3$s to get new features, access support, receive update notifications, and more." msgstr "Veuillez %1$sactiver%2$s votre copie de %3$s pour obtenir de nouvelles fonctionnalités, accéder au support, recevoir des notifications de mise à jour, et plus encore." -#: admin/admin.php:3339 +#: admin/admin.php:3503 #: inc/global-settings/email-summary.php:224 #: assets/build/entries.js:172 #: assets/build/payments.js:172 @@ -201,7 +201,7 @@ msgstr "Poubelle" msgid "Published" msgstr "Publié" -#: admin/admin.php:3331 +#: admin/admin.php:3495 msgid "View" msgstr "Voir" @@ -288,11 +288,11 @@ msgstr "Aucun plugin spécifié" msgid "Plugin Successfully Activated" msgstr "Plugin activé avec succès" -#: admin/admin.php:1780 +#: admin/admin.php:1834 msgid "Activating..." msgstr "Activation..." -#: admin/admin.php:1781 +#: admin/admin.php:1835 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/formEditor.js:172 @@ -307,17 +307,17 @@ msgstr "Activation..." msgid "Activated" msgstr "Activé" -#: admin/admin.php:1782 +#: admin/admin.php:1836 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Activate" msgstr "Activer" -#: admin/admin.php:1783 +#: admin/admin.php:1837 msgid "Installing..." msgstr "Installation en cours..." -#: admin/admin.php:1784 +#: admin/admin.php:1838 msgid "Installed" msgstr "Installé" @@ -325,12 +325,13 @@ msgstr "Installé" msgid "You do not have permission to access this page." msgstr "Vous n'avez pas la permission d'accéder à cette page." -#: admin/admin.php:2784 -#: admin/admin.php:2912 -#: admin/admin.php:2950 -#: admin/admin.php:2971 -#: admin/admin.php:3294 -#: admin/admin.php:3601 +#: admin/admin.php:2874 +#: admin/admin.php:2917 +#: admin/admin.php:3076 +#: admin/admin.php:3114 +#: admin/admin.php:3135 +#: admin/admin.php:3458 +#: admin/admin.php:3847 #: inc/admin-ajax.php:164 #: inc/payments/admin/admin-handler.php:638 #: inc/payments/stripe/admin-stripe-handler.php:80 @@ -343,7 +344,7 @@ msgid "Form ID is required." msgstr "L'identifiant du formulaire est requis." #: inc/admin-ajax.php:184 -#: inc/form-submit.php:1153 +#: inc/form-submit.php:1261 msgid "Invalid form ID." msgstr "ID de formulaire invalide." @@ -582,28 +583,28 @@ msgstr "Téléphone" msgid "Textarea" msgstr "Zone de texte" -#: inc/form-submit.php:231 +#: inc/form-submit.php:281 msgid "Cloudflare Turnstile secret key is invalid." msgstr "La clé secrète de Cloudflare Turnstile est invalide." -#: inc/form-submit.php:238 +#: inc/form-submit.php:288 msgid "Cloudflare Turnstile response is missing." msgstr "La réponse de Cloudflare Turnstile est manquante." -#: inc/form-submit.php:282 +#: inc/form-submit.php:332 msgid "hCaptcha secret key is invalid." msgstr "La clé secrète hCaptcha est invalide." -#: inc/form-submit.php:289 +#: inc/form-submit.php:339 msgid "hCaptcha response is missing." msgstr "La réponse hCaptcha est manquante." -#: inc/form-submit.php:330 -#: inc/form-submit.php:589 +#: inc/form-submit.php:380 +#: inc/form-submit.php:639 msgid "Form data is not found." msgstr "Les données du formulaire sont introuvables." -#: inc/forms-data.php:68 +#: inc/forms-data.php:88 msgid "Sorry, you are not allowed to view the form." msgstr "Désolé, vous n'êtes pas autorisé à voir le formulaire." @@ -713,7 +714,7 @@ msgstr "Modifier le formulaire" msgid "Edit" msgstr "Modifier" -#: admin/admin.php:3072 +#: admin/admin.php:3236 #: inc/page-builders/elementor/form-widget.php:346 #: assets/build/dashboard.js:2 msgid "Create New Form" @@ -750,8 +751,8 @@ msgstr "Voir le formulaire" msgid "View Forms" msgstr "Afficher les formulaires" -#: admin/admin.php:1443 -#: admin/admin.php:1444 +#: admin/admin.php:1489 +#: admin/admin.php:1490 #: inc/post-types.php:274 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -8265,7 +8266,7 @@ msgstr "Social" msgid "Travel" msgstr "Voyage" -#: inc/helper.php:2375 +#: inc/helper.php:2368 msgid "Blank Form" msgstr "Formulaire vierge" @@ -8584,7 +8585,9 @@ msgstr "Veuillez ajouter une option props à MultiButtonsControl" msgid "Icon Library" msgstr "Bibliothèque d'icônes" +#: admin/admin.php:4062 #: assets/build/blocks.js:172 +#: assets/build/dashboard.js:172 #: modules/gutenberg/build/blocks.js:4 msgid "Close" msgstr "Fermer" @@ -8873,9 +8876,9 @@ msgstr "Ajouter des blocs à la barre d'action rapide" msgid "Re-arrange block inside Quick Action Bar" msgstr "Réorganiser le bloc dans la barre d'action rapide" -#: admin/admin.php:1236 -#: admin/admin.php:1237 -#: admin/admin.php:4129 +#: admin/admin.php:1282 +#: admin/admin.php:1283 +#: admin/admin.php:4737 #: assets/build/blocks.js:172 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -9248,7 +9251,7 @@ msgstr "Centre" msgid "Right" msgstr "D'accord" -#: inc/form-submit.php:1344 +#: inc/form-submit.php:1452 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Google reCAPTCHA" @@ -9258,7 +9261,7 @@ msgstr "Google reCAPTCHA" msgid "CloudFlare Turnstile" msgstr "Tourniquet CloudFlare" -#: inc/form-submit.php:1348 +#: inc/form-submit.php:1456 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "hCaptcha" @@ -9536,7 +9539,7 @@ msgstr "Clé du site" msgid "Secret Key" msgstr "Clé secrète" -#: inc/form-submit.php:1352 +#: inc/form-submit.php:1460 #: assets/build/settings.js:172 msgid "Cloudflare Turnstile" msgstr "Tourniquet Cloudflare" @@ -9553,7 +9556,8 @@ msgstr "Connectez-vous maintenant" msgid "Authentication Failed" msgstr "Échec de l'authentification" -#: admin/admin.php:3516 +#: admin/admin.php:4061 +#: assets/build/dashboard.js:172 #: assets/build/templatePicker.js:172 msgid "Contact Support" msgstr "Contacter le support" @@ -10488,7 +10492,7 @@ msgid "icon" msgstr "icône" #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version, %4$s: Anchor tag open, %5$s: Closing anchor tag. -#: admin/admin.php:2590 +#: admin/admin.php:2644 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version from %4$shere%5$s." msgstr "SureForms %1$s nécessite au minimum %2$s %3$s pour fonctionner correctement. Veuillez mettre à jour vers la dernière version depuis %4$scet endroit%5$s." @@ -10510,7 +10514,7 @@ msgstr "Journalisation IP" msgid "Honeypot" msgstr "Pot de miel" -#: admin/admin.php:2639 +#: admin/admin.php:2693 msgid "Rate SureForms" msgstr "Évaluez SureForms" @@ -10566,18 +10570,18 @@ msgstr "Déverrouiller Ajouter une note" msgid "With the SureForms Starter plan, enhance your submitted form entries by adding personalized notes for better clarity and tracking." msgstr "Avec le plan SureForms Starter, améliorez vos entrées de formulaire soumises en ajoutant des notes personnalisées pour une meilleure clarté et un suivi amélioré." -#: inc/form-submit.php:990 +#: inc/form-submit.php:1046 msgid "Email notification passed to the sending server" msgstr "Notification par e-mail transmise au serveur d'envoi" #. translators: Here, %s is the comma separated emails list. -#: inc/form-submit.php:1063 +#: inc/form-submit.php:1130 #, php-format msgid "Email notification recipient: %s" msgstr "Destinataire de la notification par e-mail : %s" #. translators: Here, %1$s is the comma separated emails list and %2$s is error report ( if any ). -#: inc/form-submit.php:1080 +#: inc/form-submit.php:1147 #, php-format msgid "Email server was unable to send the email notification. Recipient: %1$s. Reason: %2$s" msgstr "Le serveur de messagerie n'a pas pu envoyer la notification par e-mail. Destinataire : %1$s. Raison : %2$s" @@ -10620,7 +10624,7 @@ msgstr "Déverrouiller les formulaires conversationnels" msgid "With the SureForms Pro Plan, you can transform your forms into engaging conversational layouts for a seamless user experience." msgstr "Avec le plan SureForms Pro, vous pouvez transformer vos formulaires en mises en page conversationnelles engageantes pour une expérience utilisateur fluide." -#: admin/admin.php:1075 +#: admin/admin.php:1121 msgid "Get SureForms Pro" msgstr "Obtenez SureForms Pro" @@ -10832,24 +10836,24 @@ msgstr "Sélectionner le dégradé" msgid "reCAPTCHA" msgstr "reCAPTCHA" -#: inc/form-submit.php:1288 +#: inc/form-submit.php:1396 msgid "Captcha validation failed. No error code provided." msgstr "La validation du captcha a échoué. Aucun code d'erreur fourni." -#: inc/form-submit.php:1289 +#: inc/form-submit.php:1397 msgid "Captcha validation failed." msgstr "La validation du captcha a échoué." -#: inc/form-submit.php:1356 +#: inc/form-submit.php:1464 msgid "Unknown Captcha" msgstr "Captcha inconnu" -#: inc/form-submit.php:1357 +#: inc/form-submit.php:1465 msgid "Invalid captcha type." msgstr "Type de captcha invalide." #. translators: %s is the captcha title. -#: inc/form-submit.php:1370 +#: inc/form-submit.php:1478 #, php-format msgid "%s verification failed. Please contact your site administrator." msgstr "La vérification de %s a échoué. Veuillez contacter votre administrateur de site." @@ -11246,8 +11250,8 @@ msgstr "Décrivez le formulaire que vous souhaitez créer" msgid "We are building your form…" msgstr "Nous construisons votre formulaire…" -#: admin/admin.php:1351 -#: admin/admin.php:1352 +#: admin/admin.php:1397 +#: admin/admin.php:1398 msgid "SMTP" msgstr "SMTP" @@ -11379,31 +11383,32 @@ msgstr "Activer la notification administrateur" msgid "Admin notifications keep you informed about new form entries since your last visit." msgstr "Les notifications administratives vous informent des nouvelles entrées de formulaire depuis votre dernière visite." -#: admin/admin.php:2789 -#: admin/admin.php:2908 -#: admin/admin.php:2946 -#: admin/admin.php:2967 -#: admin/admin.php:3298 -#: admin/admin.php:3596 +#: admin/admin.php:2869 +#: admin/admin.php:2922 +#: admin/admin.php:3072 +#: admin/admin.php:3110 +#: admin/admin.php:3131 +#: admin/admin.php:3462 +#: admin/admin.php:3842 msgid "Unauthorized user." msgstr "Utilisateur non autorisé." #. translators: 1: opening span, 2: opening strong (inline), 3: closing strong, 4: closing span, 5: opening strong (block), 6: closing strong -#: admin/admin.php:2917 +#: admin/admin.php:3081 #, php-format msgid "%1$sGet started by %2$sbuilding your first form%3$s.%4$s%5$sExperience the power of our intuitive AI Form Builder%6$s" msgstr "%1$sCommencez par %2$scréer votre premier formulaire%3$s.%4$s%5$sDécouvrez la puissance de notre créateur de formulaires intuitif alimenté par l'IA%6$s" -#: admin/admin.php:2928 +#: admin/admin.php:3092 msgid "SureForms is waiting for you!" msgstr "SureForms vous attend !" -#: admin/admin.php:2930 +#: admin/admin.php:3094 msgid "Build My First Form" msgstr "Construire mon premier formulaire" -#: admin/admin.php:2931 -#: admin/admin.php:3418 +#: admin/admin.php:3095 +#: admin/admin.php:3650 msgid "Dismiss" msgstr "Rejeter" @@ -11423,51 +11428,51 @@ msgstr "Connexion" msgid "Register" msgstr "Inscrire" -#: admin/admin.php:3327 +#: admin/admin.php:3491 msgid "Recent Entries" msgstr "Entrées récentes" -#: admin/admin.php:3328 +#: admin/admin.php:3492 msgid "( Last 7 days )" msgstr "( 7 derniers jours )" -#: admin/admin.php:4070 +#: admin/admin.php:4678 msgid "Use Conditional Logic to show only what matters" msgstr "Utilisez la logique conditionnelle pour montrer uniquement ce qui compte" -#: admin/admin.php:4071 +#: admin/admin.php:4679 msgid "Split your form into steps to keep it easy" msgstr "Divisez votre formulaire en étapes pour le rendre facile." -#: admin/admin.php:4072 +#: admin/admin.php:4680 msgid "Let people upload files directly to your form" msgstr "Permettez aux gens de télécharger des fichiers directement sur votre formulaire" -#: admin/admin.php:4073 +#: admin/admin.php:4681 msgid "Turn responses into downloadable PDFs automatically" msgstr "Transformez les réponses en PDF téléchargeables automatiquement" -#: admin/admin.php:4074 +#: admin/admin.php:4682 msgid "Let users sign with a simple signature field" msgstr "Permettez aux utilisateurs de signer avec un simple champ de signature" -#: admin/admin.php:4075 +#: admin/admin.php:4683 msgid "Connect your form to other tools using webhooks" msgstr "Connectez votre formulaire à d'autres outils en utilisant des webhooks" -#: admin/admin.php:4076 +#: admin/admin.php:4684 msgid "Use Conversational Forms for a chat-like experience" msgstr "Utilisez des formulaires conversationnels pour une expérience de type chat" -#: admin/admin.php:4077 +#: admin/admin.php:4685 msgid "Let users register or log in through your form" msgstr "Permettez aux utilisateurs de s'inscrire ou de se connecter via votre formulaire" -#: admin/admin.php:4078 +#: admin/admin.php:4686 msgid "Build forms that create WordPress user accounts" msgstr "Créez des formulaires qui génèrent des comptes utilisateurs WordPress" -#: admin/admin.php:4079 +#: admin/admin.php:4687 msgid "Add calculations to auto-total scores or prices" msgstr "Ajoutez des calculs pour totaliser automatiquement les scores ou les prix" @@ -11666,6 +11671,7 @@ msgstr "Obtenez plus de contrôle, des flux de travail plus rapides et une perso msgid "Selected features require %1$s - use code %2$s to get 10% off on any plan." msgstr "Les fonctionnalités sélectionnées nécessitent %1$s - utilisez le code %2$s pour obtenir 10 % de réduction sur n'importe quel plan." +#: admin/admin.php:4060 #: assets/build/dashboard.js:172 msgid "Copied" msgstr "Copié" @@ -11889,7 +11895,7 @@ msgstr "Explorez SureDash" msgid "Something went wrong. We have logged the error for further investigation" msgstr "Un problème est survenu. Nous avons enregistré l'erreur pour une enquête plus approfondie." -#: inc/field-validation.php:413 +#: inc/field-validation.php:452 msgid "Field is not valid." msgstr "Le champ n'est pas valide." @@ -11957,8 +11963,8 @@ msgstr "Miniature vidéo SureForms" msgid "Expected format for emails - email@sureforms.com or John Doe " msgstr "Format attendu pour les e-mails - email@sureforms.com ou John Doe " -#: admin/admin.php:1471 -#: admin/admin.php:1472 +#: admin/admin.php:1517 +#: admin/admin.php:1518 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -12176,7 +12182,7 @@ msgstr "Élevez votre SEO et grimpez dans les classements de recherche sans effo msgid "Boost your website's visibility with smart SEO automation. Optimize content, track keyword performance, and get actionable insights, all inside WordPress." msgstr "Boostez la visibilité de votre site web avec une automatisation SEO intelligente. Optimisez le contenu, suivez la performance des mots-clés et obtenez des insights exploitables, le tout dans WordPress." -#: inc/form-submit.php:129 +#: inc/form-submit.php:174 #: inc/form-views.php:205 #: inc/payments/admin/admin-handler.php:99 #: inc/payments/admin/admin-handler.php:183 @@ -15375,12 +15381,12 @@ msgid "Stripe Settings" msgstr "Paramètres Stripe" #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version. -#: admin/admin.php:2281 +#: admin/admin.php:2335 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version." msgstr "SureForms %1$s nécessite au minimum %2$s %3$s pour fonctionner correctement. Veuillez mettre à jour vers la dernière version." -#: admin/admin.php:2294 +#: admin/admin.php:2348 msgid "Update Now" msgstr "Mettez à jour maintenant" @@ -15428,8 +15434,8 @@ msgstr "Position du signe monétaire" msgid "Select the position of the currency symbol relative to the amount." msgstr "Sélectionnez la position du symbole monétaire par rapport au montant." -#: admin/admin.php:1414 -#: admin/admin.php:1415 +#: admin/admin.php:1460 +#: admin/admin.php:1461 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -15443,41 +15449,41 @@ msgstr "Sélectionnez la position du symbole monétaire par rapport au montant." msgid "Learn" msgstr "Apprendre" -#: admin/admin.php:2635 +#: admin/admin.php:2689 msgid "Amazing! SureForms is powering your forms and submissions - let's keep growing together!" msgstr "Incroyable ! SureForms alimente vos formulaires et soumissions - continuons à grandir ensemble !" -#: admin/admin.php:2636 +#: admin/admin.php:2690 msgid "If SureForms has been helpful, would you mind taking a moment to leave a 5-star review on WordPress.org?" msgstr "Si SureForms vous a été utile, pourriez-vous prendre un moment pour laisser un avis 5 étoiles sur WordPress.org ?" -#: admin/admin.php:2647 -#: admin/admin.php:2711 +#: admin/admin.php:2701 +#: admin/admin.php:2765 msgid "Maybe later" msgstr "Peut-être plus tard" -#: admin/admin.php:2653 +#: admin/admin.php:2707 msgid "I already did" msgstr "Je l'ai déjà fait" -#: admin/admin.php:2702 +#: admin/admin.php:2756 msgid "SureForms is ready to power your forms — explore what's possible!" msgstr "SureForms est prêt à dynamiser vos formulaires — explorez ce qui est possible !" -#: admin/admin.php:2703 +#: admin/admin.php:2757 msgid "Manage your forms, track submissions, and discover features like AI Form Builder, payment integrations, and more from the SureForms dashboard." msgstr "Gérez vos formulaires, suivez les soumissions et découvrez des fonctionnalités telles que le constructeur de formulaires IA, les intégrations de paiement et bien plus encore depuis le tableau de bord SureForms." -#: admin/admin.php:2706 +#: admin/admin.php:2760 msgid "Go to Dashboard" msgstr "Aller au tableau de bord" -#: admin/admin.php:2717 +#: admin/admin.php:2771 msgid "I already know" msgstr "Je sais déjà" -#: admin/admin.php:2833 -#: admin/admin.php:3608 +#: admin/admin.php:2981 +#: admin/admin.php:3854 msgid "Invalid parameters." msgstr "Paramètres invalides." @@ -15861,10 +15867,10 @@ msgid "This form is not yet available. Check back after the scheduled start time msgstr "Ce formulaire n'est pas encore disponible. Revenez après l'heure de début prévue." #: inc/admin/html-form-detector.php:268 -#: inc/form-submit.php:197 -#: inc/form-submit.php:503 -#: inc/form-submit.php:548 -#: inc/form-submit.php:1149 +#: inc/form-submit.php:247 +#: inc/form-submit.php:553 +#: inc/form-submit.php:598 +#: inc/form-submit.php:1257 #: inc/migrator/bootstrap.php:357 #: inc/payments/front-end.php:79 #: inc/payments/front-end.php:265 @@ -15887,48 +15893,48 @@ msgstr "Ce formulaire n'est pas encore disponible. Revenez après l'heure de dé msgid "Security verification failed. Please refresh the page and try again." msgstr "La vérification de sécurité a échoué. Veuillez actualiser la page et réessayer." -#: inc/form-submit.php:582 +#: inc/form-submit.php:632 msgid "Form data was not found." msgstr "Les données du formulaire n'ont pas été trouvées." -#: inc/form-submit.php:336 +#: inc/form-submit.php:386 msgid "Form ID is missing." msgstr "L'identifiant du formulaire est manquant." -#: inc/form-submit.php:213 +#: inc/form-submit.php:263 msgid "Sorry, you do not have permission to access this resource." msgstr "Désolé, vous n'avez pas la permission d'accéder à cette ressource." -#: inc/form-submit.php:368 +#: inc/form-submit.php:418 msgid "You do not have permission to submit this form." msgstr "Vous n'avez pas la permission de soumettre ce formulaire." -#: inc/form-submit.php:378 +#: inc/form-submit.php:428 msgid "This form is no longer available." msgstr "Ce formulaire n'est plus disponible." -#: inc/form-submit.php:396 +#: inc/form-submit.php:446 msgid "Please check the form for errors." msgstr "Veuillez vérifier le formulaire pour les erreurs." -#: inc/form-submit.php:523 -#: inc/form-submit.php:564 +#: inc/form-submit.php:573 +#: inc/form-submit.php:614 msgid "Your submission was flagged as spam. Please try again." msgstr "Votre soumission a été signalée comme spam. Veuillez réessayer." -#: inc/form-submit.php:818 +#: inc/form-submit.php:868 msgid "Unable to submit form. Please try again." msgstr "Impossible de soumettre le formulaire. Veuillez réessayer." -#: inc/form-submit.php:1070 +#: inc/form-submit.php:1137 msgid "No SMTP plugin detected. Please configure an SMTP plugin to enable email sending." msgstr "Aucun plugin SMTP détecté. Veuillez configurer un plugin SMTP pour activer l'envoi d'e-mails." -#: inc/form-submit.php:1071 +#: inc/form-submit.php:1138 msgid "Email sending failed for an unknown reason." msgstr "L'envoi de l'email a échoué pour une raison inconnue." -#: inc/form-submit.php:1124 +#: inc/form-submit.php:1201 msgid "No emails were sent." msgstr "Aucun e-mail n'a été envoyé." @@ -16441,7 +16447,7 @@ msgid "Duplicate form?" msgstr "Dupliquer le formulaire ?" #: assets/build/formSubmit.js:2 -#: assets/js/unminified/form-submit.js:917 +#: assets/js/unminified/form-submit.js:938 msgid "An error occurred while submitting your form. Please try again." msgstr "Une erreur s'est produite lors de la soumission de votre formulaire. Veuillez réessayer." @@ -16818,28 +16824,28 @@ msgstr "Secret du webhook non configuré." msgid "Invalid webhook signature." msgstr "Signature de webhook invalide." -#: admin/admin.php:1253 -#: admin/admin.php:1851 +#: admin/admin.php:1299 +#: admin/admin.php:1905 #: assets/build/formEditor.js:172 msgid "Quizzes" msgstr "Quiz" -#: admin/admin.php:1252 +#: admin/admin.php:1298 msgid "Quiz Entries" msgstr "Participations au quiz" -#: admin/admin.php:1255 -#: admin/admin.php:1288 -#: admin/admin.php:1321 +#: admin/admin.php:1301 +#: admin/admin.php:1334 +#: admin/admin.php:1367 #: assets/build/settings.js:172 msgid "New" msgstr "Nouveau" -#: inc/form-submit.php:1158 +#: inc/form-submit.php:1266 msgid "Invalid form." msgstr "Formulaire invalide." -#: inc/form-submit.php:1163 +#: inc/form-submit.php:1271 msgid "Too many requests. Please try again shortly." msgstr "Trop de demandes. Veuillez réessayer sous peu." @@ -17348,9 +17354,9 @@ msgstr "Parfait pour l'éducation, la formation et les quiz amusants" msgid "Select this to create a quiz with scored questions and graded results." msgstr "Sélectionnez ceci pour créer un quiz avec des questions notées et des résultats évalués." -#: admin/admin.php:1285 -#: admin/admin.php:1286 -#: admin/admin.php:1856 +#: admin/admin.php:1331 +#: admin/admin.php:1332 +#: admin/admin.php:1910 msgid "Survey Reports" msgstr "Rapports d'enquête" @@ -17756,7 +17762,7 @@ msgid "Error creating SureForms Form." msgstr "Erreur lors de la création du formulaire SureForms." #. translators: %s represents the minimum number of characters required -#: inc/field-validation.php:426 +#: inc/field-validation.php:465 #: inc/translatable.php:94 #, php-format msgid "Please enter at least %s characters." @@ -17914,9 +17920,9 @@ msgstr "La réponse de l'IA était vide. Veuillez affiner votre invite et réess msgid "Unable to build form fields from the AI response." msgstr "Impossible de créer les champs de formulaire à partir de la réponse de l'IA." -#: admin/admin.php:1318 -#: admin/admin.php:1319 -#: admin/admin.php:1861 +#: admin/admin.php:1364 +#: admin/admin.php:1365 +#: admin/admin.php:1915 msgid "Partial Entries" msgstr "Entrées partielles" @@ -18787,23 +18793,23 @@ msgstr "Le montant du paiement n'a pas pu être vérifié pour ce formulaire. Ve msgid "Cancellation is not supported for this payment gateway." msgstr "L'annulation n'est pas prise en charge pour cette passerelle de paiement." -#: admin/admin.php:3039 +#: admin/admin.php:3203 msgid "SureForms AI Quick Draft" msgstr "SureForms AI Brouillon Rapide" -#: admin/admin.php:3058 +#: admin/admin.php:3222 msgid "Describe the form and let SureForms AI generate it for you." msgstr "Décrivez le formulaire et laissez SureForms AI le générer pour vous." -#: admin/admin.php:3061 +#: admin/admin.php:3225 msgid "Describe your form" msgstr "Décrivez votre formulaire" -#: admin/admin.php:3068 +#: admin/admin.php:3232 msgid "Example: Create a contact form with name, email, phone, and message fields." msgstr "Exemple : Créez un formulaire de contact avec des champs pour le nom, l'email, le téléphone et le message." -#: admin/admin.php:3109 +#: admin/admin.php:3273 msgid "Redirecting..." msgstr "Redirection..." @@ -18816,14 +18822,14 @@ msgid "The prompt is too long. Please shorten it and try again." msgstr "L'invite est trop longue. Veuillez la raccourcir et réessayer." #. translators: %s: maximum characters allowed before the @ symbol. -#: inc/field-validation.php:448 +#: inc/field-validation.php:487 #: inc/translatable.php:97 #, php-format msgid "The part before @ may not exceed %s characters." msgstr "La partie avant @ ne peut pas dépasser %s caractères." #. translators: %s: maximum characters allowed after the @ symbol. -#: inc/field-validation.php:454 +#: inc/field-validation.php:493 #: inc/translatable.php:100 #, php-format msgid "The part after @ may not exceed %s characters." @@ -18910,74 +18916,74 @@ msgstr "Désolé, vous n'êtes pas autorisé à afficher ce formulaire." msgid "This form requires a payment. Please complete the payment and submit again." msgstr "Ce formulaire nécessite un paiement. Veuillez effectuer le paiement et soumettre à nouveau." -#: admin/admin.php:552 +#: admin/admin.php:598 msgid "You are not allowed to update this prompt." msgstr "Vous n'êtes pas autorisé à mettre à jour cette invite." -#: admin/admin.php:595 +#: admin/admin.php:641 msgid "Finish setting up your form" msgstr "Terminez la configuration de votre formulaire" -#: admin/admin.php:627 +#: admin/admin.php:673 msgid "Review or edit your form" msgstr "Révisez ou modifiez votre formulaire" -#: admin/admin.php:628 -#: admin/admin.php:3907 +#: admin/admin.php:674 +#: admin/admin.php:4515 msgid "Edit form" msgstr "Modifier le formulaire" -#: admin/admin.php:633 +#: admin/admin.php:679 msgid "Personalize the Thank You message" msgstr "Personnalisez le message de remerciement" -#: admin/admin.php:634 +#: admin/admin.php:680 msgid "Edit message" msgstr "Modifier le message" -#: admin/admin.php:639 +#: admin/admin.php:685 msgid "Choose who gets notified of new replies" msgstr "Choisissez qui sera notifié des nouvelles réponses" -#: admin/admin.php:640 +#: admin/admin.php:686 msgid "Set up email" msgstr "Configurer l'email" -#: admin/admin.php:648 +#: admin/admin.php:694 msgid "your form" msgstr "votre formulaire" #. translators: %s: form title. -#: admin/admin.php:651 +#: admin/admin.php:697 #, php-format msgid "Finish setting up %s" msgstr "Terminez la configuration de %s" #. translators: %s: form title. -#: admin/admin.php:659 +#: admin/admin.php:705 #, php-format msgid "View %s (opens in a new tab)" msgstr "Voir %s (s'ouvre dans un nouvel onglet)" -#: admin/admin.php:664 +#: admin/admin.php:710 msgid "Customize your form to get it ready for real submissions:" msgstr "Personnalisez votre formulaire pour le préparer à recevoir de vraies soumissions :" -#: admin/admin.php:3896 +#: admin/admin.php:4504 msgid "We’ve already created this form for you. Finish customising it so it’s ready to collect real submissions." msgstr "Nous avons déjà créé ce formulaire pour vous. Terminez de le personnaliser pour qu'il soit prêt à collecter de vraies soumissions." #. translators: %s: form name. -#: admin/admin.php:3901 +#: admin/admin.php:4509 #, php-format msgid "Finish setting up “%s”" msgstr "Terminez la configuration de « %s »" -#: admin/admin.php:3914 +#: admin/admin.php:4522 msgid "Edit the Thank You message" msgstr "Modifier le message de remerciement" -#: admin/admin.php:3920 +#: admin/admin.php:4528 msgid "Set where replies go" msgstr "Définir où vont les réponses" @@ -19005,123 +19011,90 @@ msgstr "Veuillez choisir un fichier image." msgid "This form could not be submitted. Please refresh the page and try again." msgstr "Ce formulaire n'a pas pu être soumis. Veuillez rafraîchir la page et réessayer." -#: admin/admin.php:2341 -#: admin/admin.php:2430 +#: admin/admin.php:2395 +#: admin/admin.php:2484 msgid "Your SureForms database is up to date. New form entries will be saved as usual." msgstr "Votre base de données SureForms est à jour. Les nouvelles entrées de formulaire seront enregistrées comme d'habitude." -#: admin/admin.php:2355 -#: admin/admin.php:2439 +#: admin/admin.php:2409 +#: admin/admin.php:2493 #: inc/rest-api.php:1447 msgid "SureForms could not finish updating the database. Your hosting may not allow SureForms to create database tables — please contact your hosting provider or SureForms support." msgstr "SureForms n'a pas pu terminer la mise à jour de la base de données. Votre hébergement peut ne pas permettre à SureForms de créer des tables de base de données — veuillez contacter votre fournisseur d'hébergement ou le support de SureForms." -#: admin/admin.php:2358 +#: admin/admin.php:2412 msgid "Contact support" msgstr "Contacter le support" -#: admin/admin.php:2378 +#: admin/admin.php:2432 msgid "Database update needed" msgstr "Mise à jour de la base de données nécessaire" -#: admin/admin.php:2384 +#: admin/admin.php:2438 msgid "Fix now" msgstr "Corriger maintenant" -#: admin/admin.php:2453 +#: admin/admin.php:2507 msgid "SureForms — database update needed" msgstr "SureForms — mise à jour de la base de données nécessaire" -#: admin/admin.php:2458 +#: admin/admin.php:2512 msgid "Update database" msgstr "Mettre à jour la base de données" -#: admin/admin.php:2478 +#: admin/admin.php:2532 msgid "You do not have permission to update the database." msgstr "Vous n'avez pas la permission de mettre à jour la base de données." -#: admin/admin.php:3437 +#: admin/admin.php:3669 msgid "You do not have permission to do this." msgstr "Vous n'avez pas la permission de faire cela." -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:3507 -msgid "%d form submission in a row could not be completed." -msgid_plural "%d form submissions in a row could not be completed." -msgstr[0] "%d soumission de formulaire d'affilée n'a pas pu être complétée." -msgstr[1] "" - -#: admin/admin.php:3515 -msgid "Visitors may be unable to reach you, and those entries were not saved." -msgstr "Les visiteurs peuvent être incapables de vous joindre, et ces entrées n'ont pas été enregistrées." - -#: admin/admin.php:3525 -msgid "Form submissions are completing normally." -msgstr "Les soumissions de formulaire se terminent normalement." - -#: admin/admin.php:3539 -msgid "No caching plugin that needs configuring was found." -msgstr "Aucun plugin de mise en cache nécessitant une configuration n'a été trouvé." - #. translators: %s: caching plugin name. -#: admin/admin.php:3551 +#: admin/admin.php:4209 msgid "%s may interfere with your forms." msgstr "%s peut interférer avec vos formulaires." -#: admin/admin.php:3554 -msgid "Caching and JavaScript optimisation can serve a stale copy of your form or load its scripts out of order." -msgstr "La mise en cache et l'optimisation JavaScript peuvent servir une copie obsolète de votre formulaire ou charger ses scripts dans le désordre." - -#: admin/admin.php:3555 +#: admin/admin.php:4185 +#: admin/admin.php:4213 msgid "Help Me Fix" msgstr "Aidez-moi à corriger" -#: admin/admin.php:3650 +#: admin/admin.php:4258 msgid "SureForms found your form entries stored under a different database table prefix. Reconnecting them takes a moment, and your existing entries will be kept." msgstr "SureForms a trouvé vos entrées de formulaire stockées sous un préfixe de table de base de données différent. Les reconnecter prend un moment, et vos entrées existantes seront conservées." -#: admin/admin.php:3653 +#: admin/admin.php:4261 msgid "SureForms needs to update your database before it can save new form entries. This only takes a moment and will not change your forms or existing content. Entries submitted before now cannot be recovered from here." msgstr "SureForms doit mettre à jour votre base de données avant de pouvoir enregistrer de nouvelles entrées de formulaire. Cela ne prend qu'un moment et ne changera pas vos formulaires ou le contenu existant. Les entrées soumises avant maintenant ne peuvent pas être récupérées d'ici." #. translators: %s: site host. -#: admin/admin.php:4265 +#: admin/admin.php:5032 msgid "SureForms: form submissions are failing on %s" msgstr "SureForms : les soumissions de formulaire échouent sur %s" -#: admin/admin.php:4274 +#: admin/admin.php:4990 msgid "Debug log: no entries recorded." msgstr "Journal de débogage : aucune entrée enregistrée." #. translators: 1: entries shown, 2: entries recorded. -#: admin/admin.php:4278 +#: admin/admin.php:4995 msgid "Debug log (most recent %1$d of %2$d entries)" msgstr "Journal de débogage (les %1$d plus récentes de %2$d entrées)" -#: admin/admin.php:4288 -msgid "Older entries were left out to keep this email within the length a mail client accepts. The full log can be downloaded from SureForms → Settings → General." -msgstr "Les entrées plus anciennes ont été omises pour que cet e-mail reste dans la longueur acceptée par un client de messagerie. Le journal complet peut être téléchargé depuis SureForms → Paramètres → Général." - -#: admin/admin.php:4318 +#: admin/admin.php:5158 msgid "Hello SureForms support," msgstr "Bonjour support SureForms," -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:4322 -msgid "SureForms has recorded %d form submission in a row that could not be completed." -msgid_plural "SureForms has recorded %d form submissions in a row that could not be completed." -msgstr[0] "SureForms a enregistré %d soumission de formulaire d'affilée qui n'a pas pu être complétée." -msgstr[1] "" - -#: admin/admin.php:4332 +#: admin/admin.php:5182 msgid "Site details" msgstr "Détails du site" -#: admin/admin.php:4335 +#: admin/admin.php:5185 msgid "not active" msgstr "non actif" -#: admin/admin.php:4338 +#: admin/admin.php:5188 msgid "none detected" msgstr "aucun détecté" @@ -19129,7 +19102,7 @@ msgstr "aucun détecté" msgid "No form submission failures have been recorded." msgstr "Aucun échec de soumission de formulaire n'a été enregistré." -#: inc/form-submit.php:118 +#: inc/form-submit.php:163 msgid "Not found." msgstr "Non trouvé." @@ -19214,6 +19187,193 @@ msgstr "Vues de formulaire et conversion" msgid "Logs" msgstr "Journaux" +#: admin/admin.php:2831 +msgid "Previous notice" +msgstr "Avis précédent" + +#: admin/admin.php:2832 +msgid "Next notice" +msgstr "Avis suivant" + +#. translators: 1: current position, 2: total notices. +#: admin/admin.php:2834 +msgid "%1$d of %2$d" +msgstr "%1$d sur %2$d" + +#: admin/admin.php:2891 +msgid "Nothing to report." +msgstr "Rien à signaler." + +#: admin/admin.php:4057 +#: assets/build/dashboard.js:172 +msgid "Details" +msgstr "Détails" + +#: admin/admin.php:4058 +msgid "What we recorded about this problem. Copy it into your support request so we can start from the cause rather than a description of it." +msgstr "Ce que nous avons enregistré à propos de ce problème. Copiez-le dans votre demande de support afin que nous puissions partir de la cause plutôt que d'une description de celle-ci." + +#: admin/admin.php:4059 +#: assets/build/dashboard.js:172 +msgid "Copy details" +msgstr "Copier les détails" + +#: admin/admin.php:4068 +msgid "Copy the details first, so you have them to paste." +msgstr "Copiez d'abord les détails, afin de les avoir à coller." + +#: admin/admin.php:4072 +msgid "Copied. Contact Support is now available." +msgstr "Copié. Contacter le support est maintenant disponible." + +#: admin/admin.php:4073 +msgid "Your browser would not let us copy. Select the text above and copy it by hand." +msgstr "Votre navigateur ne nous a pas permis de copier. Sélectionnez le texte ci-dessus et copiez-le à la main." + +#: admin/admin.php:4076 +msgid "Recorded diagnostics" +msgstr "Diagnostics enregistrés" + +#: admin/admin.php:4080 +msgid "Collecting the details…" +msgstr "Collecte des détails…" + +#: admin/admin.php:4081 +msgid "We could not collect the details. Contact Support and describe what happened, and we will take it from there." +msgstr "Nous n'avons pas pu collecter les détails. Contactez le support et décrivez ce qui s'est passé, et nous prendrons le relais à partir de là." + +#. translators: %s: form title. +#: admin/admin.php:4108 +msgid "We noticed a form submission failure on %s." +msgstr "Nous avons remarqué un échec de soumission de formulaire sur %s." + +#: admin/admin.php:4109 +msgid "We noticed a form submission failure." +msgstr "Nous avons remarqué un échec de soumission de formulaire." + +#: admin/admin.php:4110 +msgid "Visitors may not be able to reach you, and their entries were not saved." +msgstr "Les visiteurs peuvent ne pas être en mesure de vous joindre, et leurs entrées n'ont pas été enregistrées." + +#. translators: %s: form title. +#: admin/admin.php:4115 +msgid "We noticed a notification failure on %s." +msgstr "Nous avons remarqué un échec de notification sur %s." + +#: admin/admin.php:4116 +msgid "We noticed a notification failure." +msgstr "Nous avons remarqué un échec de notification." + +#: admin/admin.php:4117 +msgid "The entry was saved, but we could not send the email about it. New entries may be coming in without you knowing." +msgstr "L'entrée a été enregistrée, mais nous n'avons pas pu envoyer l'email à ce sujet. De nouvelles entrées peuvent arriver sans que vous le sachiez." + +#. translators: %s: form title. +#: admin/admin.php:4132 +msgid "We noticed an integration failure on %s." +msgstr "Nous avons remarqué un échec d'intégration sur %s." + +#: admin/admin.php:4133 +msgid "We noticed an integration failure." +msgstr "Nous avons remarqué un échec d'intégration." + +#: admin/admin.php:4134 +msgid "The entry was saved, but we could not send it to a connected service." +msgstr "L'entrée a été enregistrée, mais nous n'avons pas pu l'envoyer à un service connecté." + +#: admin/admin.php:4158 +msgid "View details" +msgstr "Voir les détails" + +#: admin/admin.php:4212 +msgid "Caching can show visitors an old copy of your form, or load its scripts in the wrong order." +msgstr "La mise en cache peut montrer aux visiteurs une ancienne copie de votre formulaire, ou charger ses scripts dans le mauvais ordre." + +#: admin/admin.php:5005 +msgid "Older entries were left out to keep this excerpt readable. The full log can be downloaded from SureForms → Settings → General." +msgstr "Les entrées plus anciennes ont été omises pour garder cet extrait lisible. Le journal complet peut être téléchargé depuis SureForms → Paramètres → Général." + +#. translators: %s: site host. +#: admin/admin.php:5034 +msgid "SureForms has recorded form submissions on %s that could not be completed." +msgstr "SureForms a enregistré des soumissions de formulaire sur %s qui n'ont pas pu être complétées." + +#. translators: %s: site host. +#: admin/admin.php:5038 +msgid "SureForms: notification emails are not being sent on %s" +msgstr "SureForms : les emails de notification ne sont pas envoyés sur %s" + +#. translators: %s: site host. +#: admin/admin.php:5040 +msgid "SureForms saved entries on %s but could not send the notification emails for them." +msgstr "SureForms a enregistré des entrées sur %s mais n'a pas pu envoyer les emails de notification pour celles-ci." + +#. translators: %s: site host. +#: admin/admin.php:5044 +msgid "SureForms: an integration is not receiving entries on %s" +msgstr "SureForms : une intégration ne reçoit pas d'entrées sur %s" + +#. translators: %s: site host. +#: admin/admin.php:5046 +msgid "SureForms saved entries on %s but could not pass them to a connected service." +msgstr "SureForms a enregistré des entrées sur %s mais n'a pas pu les transmettre à un service connecté." + +#. translators: %s: site host. +#: admin/admin.php:5056 +msgid "SureForms: a problem with the forms on %s" +msgstr "SureForms : un problème avec les formulaires sur %s" + +#. translators: %s: site host. +#: admin/admin.php:5058 +msgid "SureForms has recorded a problem with the forms on %s." +msgstr "SureForms a enregistré un problème avec les formulaires sur %s." + +#. translators: %d: number of failed submissions. +#: admin/admin.php:5083 +msgid "SureForms has recorded %d form submission that could not be completed." +msgid_plural "SureForms has recorded %d form submissions that could not be completed." +msgstr[0] "SureForms a enregistré %d soumission de formulaire qui n'a pas pu être complétée." +msgstr[1] "" + +#. translators: %d: number of failed notifications. +#: admin/admin.php:5095 +msgid "SureForms saved %d entry but could not send the notification email for it." +msgid_plural "SureForms saved %d entries but could not send the notification emails for them." +msgstr[0] "SureForms a enregistré %d entrée mais n'a pas pu envoyer l'email de notification pour celle-ci." +msgstr[1] "" + +#. translators: %d: number of failed integration hand-offs. +#: admin/admin.php:5107 +msgid "SureForms saved %d entry but could not pass it to a connected service." +msgid_plural "SureForms saved %d entries but could not pass them to a connected service." +msgstr[0] "SureForms a enregistré %d entrée mais n'a pas pu la transmettre à un service connecté." +msgstr[1] "" + +#. translators: %d: number of recorded problems. +#: admin/admin.php:5119 +msgid "SureForms has recorded %d problem with the forms on this site." +msgid_plural "SureForms has recorded %d problems with the forms on this site." +msgstr[0] "SureForms a enregistré %d problème avec les formulaires sur ce site." +msgstr[1] "" + +#. translators: %s: form title. +#: admin/admin.php:5169 +msgid "Form: %s" +msgstr "Formulaire : %s" + +#: admin/admin.php:5189 +msgid "none recorded" +msgstr "aucun enregistré" + +#. translators: %s: date and time of the previous report, in the site's timezone. +#: admin/admin.php:5212 +msgid "Previously reported: %s" +msgstr "Déjà signalé : %s" + +#: assets/build/settings.js:172 +msgid "Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures." +msgstr "Les vues et soumissions par toute personne pouvant éditer le site sont normalement omises, afin que tester vos propres formulaires ne modifie pas ces chiffres." + #: inc/post-types.php:265 msgctxt "post type general name" msgid "Forms" diff --git a/languages/sureforms-it_IT-51635fe6489fc8288d603fe596c755ca.json b/languages/sureforms-it_IT-51635fe6489fc8288d603fe596c755ca.json index 199fdd162..65f72aef6 100644 --- a/languages/sureforms-it_IT-51635fe6489fc8288d603fe596c755ca.json +++ b/languages/sureforms-it_IT-51635fe6489fc8288d603fe596c755ca.json @@ -1 +1 @@ -{"translation-revision-date":"2025-01-01T06:16:29+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Cruscotto"],"Settings":["Impostazioni"],"Entries":["Voci"],"Status":["Stato"],"Form":["Modulo"],"Activated":["Attivato"],"Activate":["Attiva"],"Address":["Indirizzo"],"Checkbox":["Casella di controllo"],"Dropdown":["Menu a tendina"],"Email":["Email"],"Number":["Numero"],"Phone":["Telefono"],"Textarea":["Area di testo"],"Monday":["Luned\u00ec"],"Forms":["Moduli"],"New Form Submission - %s":["Nuova presentazione del modulo - %s"],"GitHub":["GitHub"],"(no title)":["(nessun titolo)"],"General":["Generale"],"No tags available":["Nessun tag disponibile"],"Back":["Indietro"],"Generic tags":["Tag generici"],"Other":["Altro"],"Confirm":["Conferma"],"Cancel":["Annulla"],"Install":["Installa"],"Plugin Installation failed, Please try again later.":["Installazione del plugin fallita, per favore riprova pi\u00f9 tardi."],"Plugin activation failed, Please try again later.":["Attivazione del plugin fallita, riprova pi\u00f9 tardi."],"Integrations":["Integrazioni"],"What's New?":["Novit\u00e0?"],"Core":["Nucleo"],"Unlicensed":["Senza licenza"],"Connecting\u2026":["Connessione in corso\u2026"],"Install & Activate":["Installa e attiva"],"Compliance Settings":["Impostazioni di conformit\u00e0"],"Enable GDPR Compliance":["Abilita la conformit\u00e0 GDPR"],"Never store entry data after form submission":["Non memorizzare mai i dati di ingresso dopo l'invio del modulo"],"When enabled this form will never store Entries.":["Quando abilitato, questo modulo non memorizzer\u00e0 mai le voci."],"Automatically delete entries":["Elimina automaticamente le voci"],"When enabled this form will automatically delete entries after a certain period of time.":["Quando abilitato, questo modulo eliminer\u00e0 automaticamente le voci dopo un certo periodo di tempo."],"Entries older than the days set will be deleted automatically.":["Le voci pi\u00f9 vecchie dei giorni impostati verranno eliminate automaticamente."],"Visual":["Visivo"],"HTML":["HTML"],"All Data":["Tutti i dati"],"Add Shortcode":["Aggiungi shortcode"],"Form input tags":["Tag di input del modulo"],"Comma separated values are also accepted.":["Sono accettati anche i valori separati da virgola."],"Email Notification":["Notifica email"],"Name":["Nome"],"Send Email To":["Invia email a"],"Subject":["Oggetto"],"CC":["CC"],"BCC":["Ccn"],"Reply To":["Rispondi a"],"Add Key":["Aggiungi chiave"],"Add Value":["Aggiungi valore"],"Add":["Aggiungi"],"Confirmation Message":["Messaggio di conferma"],"After Form Submission":["Dopo l'invio del modulo"],"Hide Form":["Nascondi modulo"],"Reset Form":["Reimposta modulo"],"Custom URL":["URL personalizzato"],"Add Query Parameters":["Aggiungi parametri di query"],"Select if you want to add key-value pairs for form fields to include in query parameters":["Seleziona se desideri aggiungere coppie chiave-valore per i campi del modulo da includere nei parametri di query"],"Query Parameters":["Parametri di query"],"Success Message":["Messaggio di successo"],"Redirect":["Reindirizza"],"Redirect to":["Reindirizza a"],"Page":["Pagina"],"Form Confirmation":["Conferma del modulo"],"Confirmation Type":["Tipo di conferma"],"Clear":["Chiaro"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Invisibile"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Convalide"],"Spam Protection":["Protezione antispam"],"Email Summaries":["Riepiloghi email"],"Tuesday":["Marted\u00ec"],"Wednesday":["Mercoled\u00ec"],"Thursday":["Gioved\u00ec"],"Friday":["Venerd\u00ec"],"Saturday":["Sabato"],"Sunday":["Domenica"],"Test Email":["Email di prova"],"Schedule Reports":["Programma rapporti"],"IP Logging":["Registrazione IP"],"If this option is turned on, the user's IP address will be saved with the form data":["Se questa opzione \u00e8 attivata, l'indirizzo IP dell'utente verr\u00e0 salvato con i dati del modulo"],"Confirmation Email Mismatch Message":["Messaggio di mancata corrispondenza dell'email di conferma"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s rappresenta il valore minimo di input. Ad esempio: \"Il valore minimo \u00e8 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s rappresenta il valore massimo di input. Ad esempio: \"Il valore massimo \u00e8 100.\""],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s rappresenta le selezioni minime necessarie. Ad esempio: \"Sono necessarie almeno 2 selezioni.\""],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s rappresenta il numero massimo di selezioni consentite. Ad esempio: \"Sono consentite al massimo 4 selezioni.\""],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s rappresenta le scelte minime necessarie. Ad esempio: \"\u00c8 richiesta almeno 1 selezione.\""],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s rappresenta il numero massimo di scelte consentite. Ad esempio: \"Sono consentite un massimo di 3 selezioni.\""]," Error Message":["Messaggio di errore"],"Auto":["Auto"],"Light":["Luce"],"Dark":["Scuro"],"Turnstile":["Tornello"],"Honeypot":["Trappola"],"Get Keys":["Ottieni chiavi"],"Documentation":["Documentazione"],"Site Key":["Chiave del sito"],"Secret Key":["Chiave segreta"],"Cloudflare Turnstile":["Cloudflare Turnstile"],"Appearance Mode":["Modalit\u00e0 Aspetto"],"Enable Honeypot Security":["Abilita la Sicurezza Honeypot"],"Enable Honeypot Security for better spam protection":["Abilita la Sicurezza Honeypot per una migliore protezione dallo spam"],"Text":["Testo"],"OttoKit":["OttoKit"],"Connect with OttoKit":["Connettiti con OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["L'attuale indirizzo 'Da Email' non corrisponde al nome di dominio del tuo sito web (%1$s). Questo pu\u00f2 causare il blocco o la classificazione come spam delle tue email di notifica. In alternativa, prova a utilizzare un indirizzo Da che corrisponda al dominio del tuo sito web (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["L'indirizzo email 'Da' attuale non corrisponde al nome di dominio del tuo sito web (%s). Questo pu\u00f2 causare il blocco o la classificazione come spam delle tue email di notifica."],"We strongly recommend that you install the free ":["Consigliamo vivamente di installare il gratuito"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["plugin! Il Wizard di configurazione rende facile correggere le tue email."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["In alternativa, prova a utilizzare un indirizzo mittente che corrisponda al dominio del tuo sito web (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Per favore, inserisci un indirizzo email valido. Le tue notifiche non verranno inviate se il campo non \u00e8 compilato correttamente."],"From Name":["Da Nome"],"From Email":["Da Email"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["L'attuale indirizzo 'Da Email' potrebbe non corrispondere al nome di dominio del tuo sito web (%1$s). Questo pu\u00f2 causare il blocco o la classificazione come spam delle tue email di notifica. In alternativa, prova a utilizzare un indirizzo Da che corrisponda al dominio del tuo sito web (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["L'attuale indirizzo 'Da Email' potrebbe non corrispondere al nome di dominio del tuo sito web (%s). Questo pu\u00f2 causare il blocco o la classificazione come spam delle tue email di notifica."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Pronto a superare il piano gratuito?"],"Upgrade now":["Aggiorna ora"],"and unlock the full power of SureForms!":["e sblocca tutta la potenza di SureForms!"],"Upgrade SureForms":["Aggiorna SureForms"],"Upgrade Now":["Aggiorna ora"],"Entries older than the selected days will be deleted.":["Le voci pi\u00f9 vecchie dei giorni selezionati verranno eliminate."],"Entries Time Period":["Periodo di tempo delle voci"],"Notifications can use only one From Email so please enter a single address.":["Le notifiche possono utilizzare un solo indirizzo email del mittente, quindi inserisci un solo indirizzo."],"Select Page to redirect":["Seleziona la pagina a cui reindirizzare"],"Search for a page":["Cerca una pagina"],"Select a page":["Seleziona una pagina"],"Form Validation":["Validazione del modulo"],"Required Error Messages":["Messaggi di errore richiesti"],"Other Error Messages":["Altri messaggi di errore"],"Input Field Unique":["Campo di input univoco"],"Email Field Unique":["Campo email univoco"],"Invalid URL":["URL non valido"],"Phone Field Unique":["Campo Telefono Unico"],"Invalid Field Number Block":["Blocco Numero Campo Non Valido"],"Invalid Email":["Email non valido"],"Number Minimum Value":["Valore Minimo Numero"],"Number Maximum Value":["Valore Massimo Numero"],"Dropdown Minimum Selections":["Selezioni Minime del Menu a Tendina"],"Dropdown Maximum Selections":["Selezioni massime del menu a tendina"],"Multiple Choice Minimum Selections":["Selezioni Minime a Scelta Multipla"],"Multiple Choice Maximum Selections":["Selezioni massime a scelta multipla"],"Input Field":["Campo di input"],"Email Field":["Campo Email"],"URL Field":["Campo URL"],"Phone Field":["Campo Telefono"],"Textarea Field":["Campo di testo"],"Checkbox Field":["Campo di selezione"],"Dropdown Field":["Campo a discesa"],"Multiple Choice Field":["Campo a scelta multipla"],"Address Field":["Campo Indirizzo"],"Number Field":["Campo numerico"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Per abilitare la funzione reCAPTCHA su SureForms, attiva l'opzione reCAPTCHA nelle impostazioni dei tuoi blocchi e seleziona la versione. Aggiungi qui la chiave segreta e la chiave del sito di Google reCAPTCHA. reCAPTCHA verr\u00e0 aggiunto alla tua pagina nel front-end."],"Enter your %s here":["Inserisci qui il tuo %s"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Per abilitare hCAPTCHA, aggiungi la tua chiave del sito e la chiave segreta. Configura queste impostazioni all'interno del modulo individuale."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Per abilitare Cloudflare Turnstile, aggiungi la tua chiave del sito e la chiave segreta. Configura queste impostazioni all'interno del modulo individuale."],"Save":["Salva"],"Anonymous Analytics":["Analisi Anonime"],"Learn More":["Scopri di pi\u00f9"],"Admin Notification":["Notifica dell'amministratore"],"Enable Admin Notification":["Abilita la Notifica Amministratore"],"Admin notifications keep you informed about new form entries since your last visit.":["Le notifiche dell'amministratore ti tengono informato sui nuovi invii di moduli dalla tua ultima visita."],"Skip":["Salta"],"Continue":["Continua"],"Maximum Number of Entries":["Numero massimo di voci"],"Maximum Entries":["Voci massime"],"Response Description After Maximum Entries":["Descrizione della risposta dopo il numero massimo di voci"],"Get Started":["Inizia"],"Integration":["Integrazione"],"Connect Native Integrations with SureForms":["Collega le integrazioni native con SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Sblocca potenti integrazioni nel piano Premium per automatizzare i tuoi flussi di lavoro e collegare SureForms direttamente con i tuoi strumenti preferiti."],"Send form submissions straight to CRMs, email, and marketing platforms":["Invia le sottomissioni dei moduli direttamente ai CRM, email e piattaforme di marketing"],"Automate repetitive tasks with seamless data syncing":["Automatizza le attivit\u00e0 ripetitive con una sincronizzazione dei dati senza interruzioni"],"Access exclusive native integrations for faster workflows":["Accedi a integrazioni native esclusive per flussi di lavoro pi\u00f9 veloci"],"Expected format for emails - email@sureforms.com or John Doe ":["Formato previsto per le email - email@sureforms.com o John Doe "],"Payments":["Pagamenti"],"Stripe account disconnected successfully.":["Account Stripe disconnesso con successo."],"Failed to create webhook.":["Impossibile creare il webhook."],"Failed to connect to Stripe.":["Connessione a Stripe non riuscita."],"Webhook":["Webhook"],"Knowledge Base":["Base di conoscenza"],"What\u2019s New":["Novit\u00e0"],"out of":["fuori da"],"No entries found":["Nessuna voce trovata"],"delete":["elimina"],"Please type \"%s\" in the input box":["Per favore digita \"%s\" nella casella di input"],"To confirm, type \"%s\" in the box below:":["Per confermare, digita \"%s\" nella casella sottostante:"],"Type \"%s\"":["Digita \"%s\""],"Go to OttoKit Settings":["Vai alle Impostazioni di OttoKit"],"USD - US Dollar":["USD - Dollaro statunitense"],"Payment Mode":["Modalit\u00e0 di pagamento"],"Test Mode":["Modalit\u00e0 di test"],"Live Mode":["Modalit\u00e0 Live"],"Action":["Azione"],"General Settings":["Impostazioni generali"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Imposta i riepiloghi delle email, gli avvisi amministrativi e le preferenze sui dati per gestire i tuoi moduli con facilit\u00e0."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Personalizza i messaggi di errore predefiniti mostrati quando gli utenti inviano voci di modulo non valide o incomplete."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Abilita la protezione antispam per i tuoi moduli utilizzando servizi CAPTCHA o la sicurezza honeypot."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Collega e gestisci i tuoi gateway di pagamento per accettare transazioni in modo sicuro attraverso i tuoi moduli."],"1% transaction and payment gateway fees apply.":["Si applicano commissioni di transazione e gateway di pagamento dell'1%."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["Si applicano commissioni di transazione e gateway di pagamento del 2,9%. Attiva la licenza per ridurre le commissioni di transazione."],"2.9% transaction and payment gateway fees apply.":["Si applicano commissioni di transazione e gateway di pagamento del 2,9%."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Si prega di visitare %1$s, eliminare un webhook non utilizzato, quindi fare clic qui sotto per riprovare."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms non \u00e8 riuscito a creare un webhook perch\u00e9 il tuo account Stripe ha esaurito gli slot gratuiti. I webhook sono necessari per ricevere aggiornamenti sui pagamenti."],"Stripe Dashboard":["Dashboard di Stripe"],"Creating\u2026":["Creando\u2026"],"Create Webhook":["Crea Webhook"],"Successfully connected to Stripe!":["Connessione a Stripe riuscita!"],"Invalid response from server. Please try again.":["Risposta non valida dal server. Per favore riprova."],"Failed to disconnect Stripe account.":["Impossibile disconnettere l'account Stripe."],"Webhook created successfully!":["Webhook creato con successo!"],"Select Currency":["Seleziona valuta"],"Select the default currency for payment forms.":["Seleziona la valuta predefinita per i moduli di pagamento."],"Connection Status":["Stato della connessione"],"Disconnect Stripe Account":["Disconnetti l'account Stripe"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["Sei sicuro di voler scollegare il tuo account Stripe? Questo interromper\u00e0 tutti i pagamenti attivi, gli abbonamenti e le transazioni dei moduli collegati a questo account."],"Disconnect":["Disconnetti"],"Disconnecting\u2026":["Disconnessione in corso\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook collegato con successo, tutti gli eventi di Stripe vengono tracciati."],"Connect your Stripe account to start accepting payments through your forms.":["Collega il tuo account Stripe per iniziare ad accettare pagamenti tramite i tuoi moduli."],"Connect to Stripe":["Connetti a Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Collegati in modo sicuro a Stripe con pochi clic per iniziare ad accettare pagamenti!"],"Set the total number of submissions allowed for this form.":["Imposta il numero totale di invii consentiti per questo modulo."],"Payment Methods":["Metodi di pagamento"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["La modalit\u00e0 di test ti consente di elaborare pagamenti senza addebiti reali. Passa alla modalit\u00e0 Live per le transazioni effettive."],"General Payment Settings":["Impostazioni generali di pagamento"],"These settings apply to all payment gateways.":["Queste impostazioni si applicano a tutti i gateway di pagamento."],"Stripe Settings":["Impostazioni di Stripe"],"Left ($100)":["Sinistra ($100)"],"Right (100$)":["Destra (100$)"],"Left Space ($ 100)":["Spazio Sinistro ($ 100)"],"Right Space (100 $)":["Spazio destro (100 $)"],"Currency Sign Position":["Posizione del simbolo di valuta"],"Select the position of the currency symbol relative to the amount.":["Seleziona la posizione del simbolo della valuta rispetto all'importo."],"Learn":["Impara"],"Enable email summaries":["Abilita i riepiloghi email"],"Enable IP logging":["Abilita la registrazione IP"],"Turn on Admin Notification from here.":["Attiva la notifica amministratore da qui."],"New":["Nuovo"],"Send entries to 100+ popular apps.":["Invia voci a oltre 100 app popolari."],"Build automated workflows that run instantly.":["Crea flussi di lavoro automatizzati che vengono eseguiti istantaneamente."],"Create custom app integrations using our Custom App feature.":["Crea integrazioni di app personalizzate utilizzando la nostra funzione App personalizzata."],"Keep your tools in sync automatically.":["Mantieni i tuoi strumenti sincronizzati automaticamente."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Questo installer\u00e0 e attiver\u00e0 OttoKit sul tuo sito WordPress per abilitare le funzionalit\u00e0 di automazione."],"Automate Your Forms with OttoKit":["Automatizza i tuoi moduli con OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Ogni invio di modulo dovrebbe attivare qualcosa: un avviso Slack, un lead CRM, un'email di follow-up o una nuova riga in Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Configura le autorizzazioni del client AI e le impostazioni del server MCP."],"View documentation":["Visualizza la documentazione"],"Copy to clipboard":["Copia negli appunti"],"Claude Desktop":["Claude Desktop"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) o %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["Codice Claude"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (progetto) o ~\/.claude.json (globale)"],"Cursor":["Cursore"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (progetto) o settings.json > mcp.servers (globale)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml o config.json"],"Your client's MCP configuration file":["Il file di configurazione MCP del tuo cliente"],"Connect Your AI Client":["Collega il tuo client AI"],"AI Client":["Cliente AI"],"Create an Application Password \u2014 ":["Crea una Password per l'Applicazione \u2014"],"Open Application Passwords":["Apri Password Applicazioni"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Oppure usa questo comando CLI per aggiungere rapidamente il server (dovrai comunque impostare le variabili d'ambiente):"],"Copy the JSON config below into: ":["Copia la configurazione JSON qui sotto in:"],"Replace \"your-application-password\" with the password from Step 1.":["Sostituisci \"your-application-password\" con la password del Passo 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 l'endpoint MCP del tuo sito. WP_API_USERNAME \u2014 il tuo nome utente WordPress. WP_API_PASSWORD \u2014 la password dell'applicazione che hai generato."],"View setup docs":["Visualizza i documenti di configurazione"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["Il plugin MCP Adapter \u00e8 installato ma non attivo. Attivalo per configurare le impostazioni MCP."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["Il plugin MCP Adapter \u00e8 necessario per connettere i client AI ai tuoi moduli. Scaricalo e installalo da GitHub, quindi attivalo."],"Download the latest release from":["Scarica l'ultima versione da"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Installa il plugin tramite Plugin > Aggiungi nuovo plugin > Carica plugin."],"Activate the MCP Adapter plugin.":["Attiva il plugin dell'adattatore MCP."],"Activating\u2026":["Attivazione in corso\u2026"],"Activate MCP Adapter":["Attiva l'adattatore MCP"],"Download MCP Adapter":["Scarica l'adattatore MCP"],"Experimental":["Sperimentale"],"Enable Abilities":["Abilita Abilit\u00e0"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Registra le abilit\u00e0 di SureForms con l'API Abilities di WordPress. Quando \u00e8 abilitato, i client AI possono elencare, leggere, creare, modificare e eliminare i tuoi moduli e le voci. Quando \u00e8 disabilitato, nessuna abilit\u00e0 \u00e8 registrata e i client AI non possono eseguire alcuna azione sui tuoi moduli."],"Abilities API \u2014 Edit":["API delle abilit\u00e0 \u2014 Modifica"],"Enable Edit Abilities":["Abilita le capacit\u00e0 di modifica"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Quando abilitato, i client AI possono creare nuovi moduli, aggiornare i titoli dei moduli, i campi e le impostazioni, duplicare i moduli e modificare gli stati delle voci. Quando disabilitato, queste capacit\u00e0 vengono annullate e i client AI possono solo leggere i tuoi dati."],"Abilities API \u2014 Delete":["API delle abilit\u00e0 \u2014 Elimina"],"Enable Delete Abilities":["Abilita Elimina Abilit\u00e0"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Quando abilitato, i client AI possono eliminare permanentemente moduli e voci. I dati eliminati non possono essere recuperati. Quando disabilitato, le capacit\u00e0 di eliminazione vengono annullate e i client AI non possono rimuovere alcun dato."],"MCP Server":["Server MCP"],"Enable MCP Server":["Abilita server MCP"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Crea un endpoint SureForms MCP dedicato a cui i clienti AI come Claude possono connettersi. Quando \u00e8 disabilitato, l'endpoint viene rimosso e i clienti AI esterni non possono scoprire o chiamare alcuna funzionalit\u00e0 di SureForms."],"Learn more":["Scopri di pi\u00f9"],"MCP Adapter Required":["Adattatore MCP richiesto"],"Heading 1":["Intestazione 1"],"Heading 2":["Intestazione 2"],"Heading 3":["Intestazione 3"],"Heading 4":["Intestazione 4"],"Heading 5":["Intestazione 5"],"Heading 6":["Intestazione 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Configura la chiave API di Google Maps per il completamento automatico degli indirizzi e l'anteprima della mappa."],"Help shape the future of SureForms":["Aiuta a plasmare il futuro di SureForms"],"Enable Google Address Autocomplete":["Abilita il completamento automatico degli indirizzi di Google"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Passa al piano SureForms Business per aggiungere il completamento automatico degli indirizzi con tecnologia Google e l'anteprima della mappa interattiva ai tuoi moduli."],"Auto-suggest addresses as users type for faster, error-free submissions":["Suggerisci automaticamente gli indirizzi mentre gli utenti digitano per invii pi\u00f9 rapidi e senza errori"],"Show an interactive map preview with draggable pin for precise locations":["Mostra un'anteprima della mappa interattiva con un segnaposto trascinabile per posizioni precise"],"Automatically populate address fields like city, state, and postal code":["Compila automaticamente i campi dell'indirizzo come citt\u00e0, stato e codice postale"],"This form is now closed as we've received all the entries.":["Questo modulo \u00e8 ora chiuso poich\u00e9 abbiamo ricevuto tutte le iscrizioni."],"Thank you for contacting us! We will be in touch with you shortly.":["Grazie per averci contattato! Saremo in contatto con te a breve."],"Saving\u2026":["Salvataggio in corso\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Quando abilitato, questo modulo non memorizzer\u00e0 l'IP dell'utente, il nome del browser e il nome del dispositivo nelle voci."],"Form data":["Dati del modulo"],"Unsaved changes":["Modifiche non salvate"],"Keep editing":["Continua a modificare"],"Global Defaults":["Impostazioni predefinite globali"],"Form Restrictions":["Restrizioni del modulo"],"Configure default settings that apply to newly created forms.":["Configura le impostazioni predefinite che si applicano ai moduli appena creati."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Raccogli informazioni non sensibili dal tuo sito web, come la versione PHP e le funzionalit\u00e0 utilizzate, per aiutarci a correggere i bug pi\u00f9 velocemente, prendere decisioni pi\u00f9 intelligenti e sviluppare funzionalit\u00e0 che contano davvero per te."],"Failed to load pages. Please refresh and try again.":["Caricamento delle pagine non riuscito. Si prega di aggiornare e riprovare."],"Failed to load settings. Please refresh and try again.":["Caricamento delle impostazioni non riuscito. Si prega di aggiornare e riprovare."],"Form Validation fields cannot be left blank.":["I campi di convalida del modulo non possono essere lasciati vuoti."],"Recipient email is required when email summaries are enabled.":["L'email del destinatario \u00e8 necessaria quando i riepiloghi email sono abilitati."],"Please enter a valid recipient email.":["Si prega di inserire un'email del destinatario valida."],"Settings saved.":["Impostazioni salvate."],"Failed to save settings.":["Impossibile salvare le impostazioni."],"Some settings failed to save. Please retry.":["Alcune impostazioni non sono state salvate. Riprova."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Alcuni campi hanno modifiche non salvate. Scartale per continuare, oppure rimani per salvare le tue modifiche."],"Discard & switch":["Scarta e cambia"],"Import":["Importa"],"Migration":["Migrazione"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importa moduli da Contact Form 7, WPForms, Gravity Forms e altri plugin in SureForms."],"Could not generate the import preview.":["Impossibile generare l'anteprima dell'importazione."],"Import failed. Please try again or check your error logs.":["Importazione non riuscita. Riprova o controlla i tuoi registri degli errori."],"Go back":["Torna indietro"],"Update & import":["Aggiorna e importa"],"Confirm & import":["Conferma e importa"],"Form #%s":["Modulo n.%s"],"%d field will import":["%d campo verr\u00e0 importato"],"Some fields can't be migrated yet":["Alcuni campi non possono essere ancora migrati"],"These fields will be skipped - add them manually after the form is created:":["Questi campi verranno saltati - aggiungili manualmente dopo che il modulo \u00e8 stato creato:"],"Some forms could not be parsed":["Alcuni moduli non possono essere analizzati"],"Update existing":["Aggiorna esistente"],"Create a new copy":["Crea una nuova copia"],"Could not load forms for this source.":["Impossibile caricare i moduli per questa fonte."],"(untitled form)":["(modulo senza titolo)"],"Previously imported":["Importato in precedenza"],"Open existing SureForms form in a new tab":["Apri il modulo SureForms esistente in una nuova scheda"],"On re-import":["Al momento della reimportazione"],"No forms found in this plugin.":["Nessun modulo trovato in questo plugin."],"%1$d of %2$d form selected":["%1$d di %2$d modulo selezionato"],"Preview update":["Anteprima aggiornamento"],"Preview import":["Anteprima importazione"],"Migration complete":["Migrazione completata"],"Nothing was imported":["Non \u00e8 stato importato nulla"],"%d form was imported into SureForms.":["%d modulo \u00e8 stato importato in SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["Nessuno dei moduli selezionati pu\u00f2 essere migrato. Vedi gli avvisi qui sotto per i dettagli."],"Imported forms":["Moduli importati"],"Edit in SureForms":["Modifica in SureForms"],"Some fields were skipped during import":["Alcuni campi sono stati saltati durante l'importazione"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Aggiungi questi manualmente nell'editor di moduli - non hanno ancora un equivalente SureForms:"],"Some forms failed to import":["Alcuni moduli non sono stati importati"],"Import more forms":["Importa pi\u00f9 moduli"],"Could not load the list of importable plugins.":["Impossibile caricare l'elenco dei plugin importabili."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Non ci sono plugin di moduli supportati attivi su questo sito. Attiva uno (come Contact Form 7) con almeno un modulo per importarlo in SureForms."],"Plugin":["Plugin"],"%d form":["%d modulo"],"No forms":["Nessun modulo"],"Multiple choice":["Scelta multipla"],"Consent":["Consenso"],"The image uploaded but could not be inserted. Please try again.":["L'immagine \u00e8 stata caricata ma non \u00e8 stato possibile inserirla. Per favore riprova."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["Non \u00e8 stato possibile caricare l'immagine. Potrebbe essere troppo grande o potresti non avere il permesso di caricare file."],"Please choose an image file.":["Per favore scegli un file immagine."],"Show views and conversion rate":["Mostra visualizzazioni e tasso di conversione"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Aggiunge le colonne Visualizzazioni e Tasso di Conversione all'elenco dei Moduli. Una visualizzazione viene conteggiata una volta per visita alla pagina quando il modulo appare sullo schermo, e il tasso di conversione \u00e8 la quota di quelle visualizzazioni che si sono concluse con un invio. Il conteggio inizia la prima volta che lo attivi, quindi gli invii ricevuti prima non vengono conteggiati nel tasso. Disattivarlo successivamente nasconde solo le colonne \u2014 il conteggio continua, quindi le cifre sono aggiornate se lo riattivi."],"Log cleared.":["Registro cancellato."],"Could not clear the log.":["Impossibile cancellare il registro."],"Enable logs":["Abilita registri"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Registra i fallimenti di invio dei moduli segnalati dal browser, cos\u00ec puoi inviare il registro al supporto invece di leggere la console. Nulla viene scritto mentre i tuoi moduli funzionano, e i valori inviati non vengono mai memorizzati."],"Download log":["Scarica registro"],"Confirm delete":["Conferma eliminazione"],"Log is full \u2014 download and clear it to keep recording.":["Il registro \u00e8 pieno \u2014 scaricalo e cancellalo per continuare a registrare."],"Form Views & Conversion":["Visualizzazioni e Conversione Moduli"],"Logs":["Registri"],"Quill heading picker: default paragraph style\u0004Normal":["Normale"]}}} \ No newline at end of file +{"translation-revision-date":"2025-01-01T06:16:29+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Cruscotto"],"Settings":["Impostazioni"],"Entries":["Voci"],"Status":["Stato"],"Form":["Modulo"],"Activated":["Attivato"],"Activate":["Attiva"],"Address":["Indirizzo"],"Checkbox":["Casella di controllo"],"Dropdown":["Menu a tendina"],"Email":["Email"],"Number":["Numero"],"Phone":["Telefono"],"Textarea":["Area di testo"],"Monday":["Luned\u00ec"],"Forms":["Moduli"],"New Form Submission - %s":["Nuova presentazione del modulo - %s"],"GitHub":["GitHub"],"(no title)":["(nessun titolo)"],"General":["Generale"],"No tags available":["Nessun tag disponibile"],"Back":["Indietro"],"Generic tags":["Tag generici"],"Other":["Altro"],"Confirm":["Conferma"],"Cancel":["Annulla"],"Install":["Installa"],"Plugin Installation failed, Please try again later.":["Installazione del plugin fallita, per favore riprova pi\u00f9 tardi."],"Plugin activation failed, Please try again later.":["Attivazione del plugin fallita, riprova pi\u00f9 tardi."],"Integrations":["Integrazioni"],"What's New?":["Novit\u00e0?"],"Core":["Nucleo"],"Unlicensed":["Senza licenza"],"Connecting\u2026":["Connessione in corso\u2026"],"Install & Activate":["Installa e attiva"],"Compliance Settings":["Impostazioni di conformit\u00e0"],"Enable GDPR Compliance":["Abilita la conformit\u00e0 GDPR"],"Never store entry data after form submission":["Non memorizzare mai i dati di ingresso dopo l'invio del modulo"],"When enabled this form will never store Entries.":["Quando abilitato, questo modulo non memorizzer\u00e0 mai le voci."],"Automatically delete entries":["Elimina automaticamente le voci"],"When enabled this form will automatically delete entries after a certain period of time.":["Quando abilitato, questo modulo eliminer\u00e0 automaticamente le voci dopo un certo periodo di tempo."],"Entries older than the days set will be deleted automatically.":["Le voci pi\u00f9 vecchie dei giorni impostati verranno eliminate automaticamente."],"Visual":["Visivo"],"HTML":["HTML"],"All Data":["Tutti i dati"],"Add Shortcode":["Aggiungi shortcode"],"Form input tags":["Tag di input del modulo"],"Comma separated values are also accepted.":["Sono accettati anche i valori separati da virgola."],"Email Notification":["Notifica email"],"Name":["Nome"],"Send Email To":["Invia email a"],"Subject":["Oggetto"],"CC":["CC"],"BCC":["Ccn"],"Reply To":["Rispondi a"],"Add Key":["Aggiungi chiave"],"Add Value":["Aggiungi valore"],"Add":["Aggiungi"],"Confirmation Message":["Messaggio di conferma"],"After Form Submission":["Dopo l'invio del modulo"],"Hide Form":["Nascondi modulo"],"Reset Form":["Reimposta modulo"],"Custom URL":["URL personalizzato"],"Add Query Parameters":["Aggiungi parametri di query"],"Select if you want to add key-value pairs for form fields to include in query parameters":["Seleziona se desideri aggiungere coppie chiave-valore per i campi del modulo da includere nei parametri di query"],"Query Parameters":["Parametri di query"],"Success Message":["Messaggio di successo"],"Redirect":["Reindirizza"],"Redirect to":["Reindirizza a"],"Page":["Pagina"],"Form Confirmation":["Conferma del modulo"],"Confirmation Type":["Tipo di conferma"],"Clear":["Chiaro"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Invisibile"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Convalide"],"Spam Protection":["Protezione antispam"],"Email Summaries":["Riepiloghi email"],"Tuesday":["Marted\u00ec"],"Wednesday":["Mercoled\u00ec"],"Thursday":["Gioved\u00ec"],"Friday":["Venerd\u00ec"],"Saturday":["Sabato"],"Sunday":["Domenica"],"Test Email":["Email di prova"],"Schedule Reports":["Programma rapporti"],"IP Logging":["Registrazione IP"],"If this option is turned on, the user's IP address will be saved with the form data":["Se questa opzione \u00e8 attivata, l'indirizzo IP dell'utente verr\u00e0 salvato con i dati del modulo"],"Confirmation Email Mismatch Message":["Messaggio di mancata corrispondenza dell'email di conferma"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s rappresenta il valore minimo di input. Ad esempio: \"Il valore minimo \u00e8 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s rappresenta il valore massimo di input. Ad esempio: \"Il valore massimo \u00e8 100.\""],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s rappresenta le selezioni minime necessarie. Ad esempio: \"Sono necessarie almeno 2 selezioni.\""],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s rappresenta il numero massimo di selezioni consentite. Ad esempio: \"Sono consentite al massimo 4 selezioni.\""],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s rappresenta le scelte minime necessarie. Ad esempio: \"\u00c8 richiesta almeno 1 selezione.\""],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s rappresenta il numero massimo di scelte consentite. Ad esempio: \"Sono consentite un massimo di 3 selezioni.\""]," Error Message":["Messaggio di errore"],"Auto":["Auto"],"Light":["Luce"],"Dark":["Scuro"],"Turnstile":["Tornello"],"Honeypot":["Trappola"],"Get Keys":["Ottieni chiavi"],"Documentation":["Documentazione"],"Site Key":["Chiave del sito"],"Secret Key":["Chiave segreta"],"Cloudflare Turnstile":["Cloudflare Turnstile"],"Appearance Mode":["Modalit\u00e0 Aspetto"],"Enable Honeypot Security":["Abilita la Sicurezza Honeypot"],"Enable Honeypot Security for better spam protection":["Abilita la Sicurezza Honeypot per una migliore protezione dallo spam"],"Text":["Testo"],"OttoKit":["OttoKit"],"Connect with OttoKit":["Connettiti con OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["L'attuale indirizzo 'Da Email' non corrisponde al nome di dominio del tuo sito web (%1$s). Questo pu\u00f2 causare il blocco o la classificazione come spam delle tue email di notifica. In alternativa, prova a utilizzare un indirizzo Da che corrisponda al dominio del tuo sito web (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["L'indirizzo email 'Da' attuale non corrisponde al nome di dominio del tuo sito web (%s). Questo pu\u00f2 causare il blocco o la classificazione come spam delle tue email di notifica."],"We strongly recommend that you install the free ":["Consigliamo vivamente di installare il gratuito"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["plugin! Il Wizard di configurazione rende facile correggere le tue email."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["In alternativa, prova a utilizzare un indirizzo mittente che corrisponda al dominio del tuo sito web (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Per favore, inserisci un indirizzo email valido. Le tue notifiche non verranno inviate se il campo non \u00e8 compilato correttamente."],"From Name":["Da Nome"],"From Email":["Da Email"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["L'attuale indirizzo 'Da Email' potrebbe non corrispondere al nome di dominio del tuo sito web (%1$s). Questo pu\u00f2 causare il blocco o la classificazione come spam delle tue email di notifica. In alternativa, prova a utilizzare un indirizzo Da che corrisponda al dominio del tuo sito web (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["L'attuale indirizzo 'Da Email' potrebbe non corrispondere al nome di dominio del tuo sito web (%s). Questo pu\u00f2 causare il blocco o la classificazione come spam delle tue email di notifica."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Pronto a superare il piano gratuito?"],"Upgrade now":["Aggiorna ora"],"and unlock the full power of SureForms!":["e sblocca tutta la potenza di SureForms!"],"Upgrade SureForms":["Aggiorna SureForms"],"Upgrade Now":["Aggiorna ora"],"Entries older than the selected days will be deleted.":["Le voci pi\u00f9 vecchie dei giorni selezionati verranno eliminate."],"Entries Time Period":["Periodo di tempo delle voci"],"Notifications can use only one From Email so please enter a single address.":["Le notifiche possono utilizzare un solo indirizzo email del mittente, quindi inserisci un solo indirizzo."],"Select Page to redirect":["Seleziona la pagina a cui reindirizzare"],"Search for a page":["Cerca una pagina"],"Select a page":["Seleziona una pagina"],"Form Validation":["Validazione del modulo"],"Required Error Messages":["Messaggi di errore richiesti"],"Other Error Messages":["Altri messaggi di errore"],"Input Field Unique":["Campo di input univoco"],"Email Field Unique":["Campo email univoco"],"Invalid URL":["URL non valido"],"Phone Field Unique":["Campo Telefono Unico"],"Invalid Field Number Block":["Blocco Numero Campo Non Valido"],"Invalid Email":["Email non valido"],"Number Minimum Value":["Valore Minimo Numero"],"Number Maximum Value":["Valore Massimo Numero"],"Dropdown Minimum Selections":["Selezioni Minime del Menu a Tendina"],"Dropdown Maximum Selections":["Selezioni massime del menu a tendina"],"Multiple Choice Minimum Selections":["Selezioni Minime a Scelta Multipla"],"Multiple Choice Maximum Selections":["Selezioni massime a scelta multipla"],"Input Field":["Campo di input"],"Email Field":["Campo Email"],"URL Field":["Campo URL"],"Phone Field":["Campo Telefono"],"Textarea Field":["Campo di testo"],"Checkbox Field":["Campo di selezione"],"Dropdown Field":["Campo a discesa"],"Multiple Choice Field":["Campo a scelta multipla"],"Address Field":["Campo Indirizzo"],"Number Field":["Campo numerico"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Per abilitare la funzione reCAPTCHA su SureForms, attiva l'opzione reCAPTCHA nelle impostazioni dei tuoi blocchi e seleziona la versione. Aggiungi qui la chiave segreta e la chiave del sito di Google reCAPTCHA. reCAPTCHA verr\u00e0 aggiunto alla tua pagina nel front-end."],"Enter your %s here":["Inserisci qui il tuo %s"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Per abilitare hCAPTCHA, aggiungi la tua chiave del sito e la chiave segreta. Configura queste impostazioni all'interno del modulo individuale."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Per abilitare Cloudflare Turnstile, aggiungi la tua chiave del sito e la chiave segreta. Configura queste impostazioni all'interno del modulo individuale."],"Save":["Salva"],"Anonymous Analytics":["Analisi Anonime"],"Learn More":["Scopri di pi\u00f9"],"Admin Notification":["Notifica dell'amministratore"],"Enable Admin Notification":["Abilita la Notifica Amministratore"],"Admin notifications keep you informed about new form entries since your last visit.":["Le notifiche dell'amministratore ti tengono informato sui nuovi invii di moduli dalla tua ultima visita."],"Skip":["Salta"],"Continue":["Continua"],"Maximum Number of Entries":["Numero massimo di voci"],"Maximum Entries":["Voci massime"],"Response Description After Maximum Entries":["Descrizione della risposta dopo il numero massimo di voci"],"Get Started":["Inizia"],"Integration":["Integrazione"],"Connect Native Integrations with SureForms":["Collega le integrazioni native con SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Sblocca potenti integrazioni nel piano Premium per automatizzare i tuoi flussi di lavoro e collegare SureForms direttamente con i tuoi strumenti preferiti."],"Send form submissions straight to CRMs, email, and marketing platforms":["Invia le sottomissioni dei moduli direttamente ai CRM, email e piattaforme di marketing"],"Automate repetitive tasks with seamless data syncing":["Automatizza le attivit\u00e0 ripetitive con una sincronizzazione dei dati senza interruzioni"],"Access exclusive native integrations for faster workflows":["Accedi a integrazioni native esclusive per flussi di lavoro pi\u00f9 veloci"],"Expected format for emails - email@sureforms.com or John Doe ":["Formato previsto per le email - email@sureforms.com o John Doe "],"Payments":["Pagamenti"],"Stripe account disconnected successfully.":["Account Stripe disconnesso con successo."],"Failed to create webhook.":["Impossibile creare il webhook."],"Failed to connect to Stripe.":["Connessione a Stripe non riuscita."],"Webhook":["Webhook"],"Knowledge Base":["Base di conoscenza"],"What\u2019s New":["Novit\u00e0"],"out of":["fuori da"],"No entries found":["Nessuna voce trovata"],"delete":["elimina"],"Please type \"%s\" in the input box":["Per favore digita \"%s\" nella casella di input"],"To confirm, type \"%s\" in the box below:":["Per confermare, digita \"%s\" nella casella sottostante:"],"Type \"%s\"":["Digita \"%s\""],"Go to OttoKit Settings":["Vai alle Impostazioni di OttoKit"],"USD - US Dollar":["USD - Dollaro statunitense"],"Payment Mode":["Modalit\u00e0 di pagamento"],"Test Mode":["Modalit\u00e0 di test"],"Live Mode":["Modalit\u00e0 Live"],"Action":["Azione"],"General Settings":["Impostazioni generali"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Imposta i riepiloghi delle email, gli avvisi amministrativi e le preferenze sui dati per gestire i tuoi moduli con facilit\u00e0."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Personalizza i messaggi di errore predefiniti mostrati quando gli utenti inviano voci di modulo non valide o incomplete."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Abilita la protezione antispam per i tuoi moduli utilizzando servizi CAPTCHA o la sicurezza honeypot."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Collega e gestisci i tuoi gateway di pagamento per accettare transazioni in modo sicuro attraverso i tuoi moduli."],"1% transaction and payment gateway fees apply.":["Si applicano commissioni di transazione e gateway di pagamento dell'1%."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["Si applicano commissioni di transazione e gateway di pagamento del 2,9%. Attiva la licenza per ridurre le commissioni di transazione."],"2.9% transaction and payment gateway fees apply.":["Si applicano commissioni di transazione e gateway di pagamento del 2,9%."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Si prega di visitare %1$s, eliminare un webhook non utilizzato, quindi fare clic qui sotto per riprovare."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms non \u00e8 riuscito a creare un webhook perch\u00e9 il tuo account Stripe ha esaurito gli slot gratuiti. I webhook sono necessari per ricevere aggiornamenti sui pagamenti."],"Stripe Dashboard":["Dashboard di Stripe"],"Creating\u2026":["Creando\u2026"],"Create Webhook":["Crea Webhook"],"Successfully connected to Stripe!":["Connessione a Stripe riuscita!"],"Invalid response from server. Please try again.":["Risposta non valida dal server. Per favore riprova."],"Failed to disconnect Stripe account.":["Impossibile disconnettere l'account Stripe."],"Webhook created successfully!":["Webhook creato con successo!"],"Select Currency":["Seleziona valuta"],"Select the default currency for payment forms.":["Seleziona la valuta predefinita per i moduli di pagamento."],"Connection Status":["Stato della connessione"],"Disconnect Stripe Account":["Disconnetti l'account Stripe"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["Sei sicuro di voler scollegare il tuo account Stripe? Questo interromper\u00e0 tutti i pagamenti attivi, gli abbonamenti e le transazioni dei moduli collegati a questo account."],"Disconnect":["Disconnetti"],"Disconnecting\u2026":["Disconnessione in corso\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook collegato con successo, tutti gli eventi di Stripe vengono tracciati."],"Connect your Stripe account to start accepting payments through your forms.":["Collega il tuo account Stripe per iniziare ad accettare pagamenti tramite i tuoi moduli."],"Connect to Stripe":["Connetti a Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Collegati in modo sicuro a Stripe con pochi clic per iniziare ad accettare pagamenti!"],"Set the total number of submissions allowed for this form.":["Imposta il numero totale di invii consentiti per questo modulo."],"Payment Methods":["Metodi di pagamento"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["La modalit\u00e0 di test ti consente di elaborare pagamenti senza addebiti reali. Passa alla modalit\u00e0 Live per le transazioni effettive."],"General Payment Settings":["Impostazioni generali di pagamento"],"These settings apply to all payment gateways.":["Queste impostazioni si applicano a tutti i gateway di pagamento."],"Stripe Settings":["Impostazioni di Stripe"],"Left ($100)":["Sinistra ($100)"],"Right (100$)":["Destra (100$)"],"Left Space ($ 100)":["Spazio Sinistro ($ 100)"],"Right Space (100 $)":["Spazio destro (100 $)"],"Currency Sign Position":["Posizione del simbolo di valuta"],"Select the position of the currency symbol relative to the amount.":["Seleziona la posizione del simbolo della valuta rispetto all'importo."],"Learn":["Impara"],"Enable email summaries":["Abilita i riepiloghi email"],"Enable IP logging":["Abilita la registrazione IP"],"Turn on Admin Notification from here.":["Attiva la notifica amministratore da qui."],"New":["Nuovo"],"Send entries to 100+ popular apps.":["Invia voci a oltre 100 app popolari."],"Build automated workflows that run instantly.":["Crea flussi di lavoro automatizzati che vengono eseguiti istantaneamente."],"Create custom app integrations using our Custom App feature.":["Crea integrazioni di app personalizzate utilizzando la nostra funzione App personalizzata."],"Keep your tools in sync automatically.":["Mantieni i tuoi strumenti sincronizzati automaticamente."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Questo installer\u00e0 e attiver\u00e0 OttoKit sul tuo sito WordPress per abilitare le funzionalit\u00e0 di automazione."],"Automate Your Forms with OttoKit":["Automatizza i tuoi moduli con OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Ogni invio di modulo dovrebbe attivare qualcosa: un avviso Slack, un lead CRM, un'email di follow-up o una nuova riga in Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Configura le autorizzazioni del client AI e le impostazioni del server MCP."],"View documentation":["Visualizza la documentazione"],"Copy to clipboard":["Copia negli appunti"],"Claude Desktop":["Claude Desktop"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) o %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["Codice Claude"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (progetto) o ~\/.claude.json (globale)"],"Cursor":["Cursore"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (progetto) o settings.json > mcp.servers (globale)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml o config.json"],"Your client's MCP configuration file":["Il file di configurazione MCP del tuo cliente"],"Connect Your AI Client":["Collega il tuo client AI"],"AI Client":["Cliente AI"],"Create an Application Password \u2014 ":["Crea una Password per l'Applicazione \u2014"],"Open Application Passwords":["Apri Password Applicazioni"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Oppure usa questo comando CLI per aggiungere rapidamente il server (dovrai comunque impostare le variabili d'ambiente):"],"Copy the JSON config below into: ":["Copia la configurazione JSON qui sotto in:"],"Replace \"your-application-password\" with the password from Step 1.":["Sostituisci \"your-application-password\" con la password del Passo 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 l'endpoint MCP del tuo sito. WP_API_USERNAME \u2014 il tuo nome utente WordPress. WP_API_PASSWORD \u2014 la password dell'applicazione che hai generato."],"View setup docs":["Visualizza i documenti di configurazione"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["Il plugin MCP Adapter \u00e8 installato ma non attivo. Attivalo per configurare le impostazioni MCP."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["Il plugin MCP Adapter \u00e8 necessario per connettere i client AI ai tuoi moduli. Scaricalo e installalo da GitHub, quindi attivalo."],"Download the latest release from":["Scarica l'ultima versione da"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Installa il plugin tramite Plugin > Aggiungi nuovo plugin > Carica plugin."],"Activate the MCP Adapter plugin.":["Attiva il plugin dell'adattatore MCP."],"Activating\u2026":["Attivazione in corso\u2026"],"Activate MCP Adapter":["Attiva l'adattatore MCP"],"Download MCP Adapter":["Scarica l'adattatore MCP"],"Experimental":["Sperimentale"],"Enable Abilities":["Abilita Abilit\u00e0"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Registra le abilit\u00e0 di SureForms con l'API Abilities di WordPress. Quando \u00e8 abilitato, i client AI possono elencare, leggere, creare, modificare e eliminare i tuoi moduli e le voci. Quando \u00e8 disabilitato, nessuna abilit\u00e0 \u00e8 registrata e i client AI non possono eseguire alcuna azione sui tuoi moduli."],"Abilities API \u2014 Edit":["API delle abilit\u00e0 \u2014 Modifica"],"Enable Edit Abilities":["Abilita le capacit\u00e0 di modifica"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Quando abilitato, i client AI possono creare nuovi moduli, aggiornare i titoli dei moduli, i campi e le impostazioni, duplicare i moduli e modificare gli stati delle voci. Quando disabilitato, queste capacit\u00e0 vengono annullate e i client AI possono solo leggere i tuoi dati."],"Abilities API \u2014 Delete":["API delle abilit\u00e0 \u2014 Elimina"],"Enable Delete Abilities":["Abilita Elimina Abilit\u00e0"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Quando abilitato, i client AI possono eliminare permanentemente moduli e voci. I dati eliminati non possono essere recuperati. Quando disabilitato, le capacit\u00e0 di eliminazione vengono annullate e i client AI non possono rimuovere alcun dato."],"MCP Server":["Server MCP"],"Enable MCP Server":["Abilita server MCP"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Crea un endpoint SureForms MCP dedicato a cui i clienti AI come Claude possono connettersi. Quando \u00e8 disabilitato, l'endpoint viene rimosso e i clienti AI esterni non possono scoprire o chiamare alcuna funzionalit\u00e0 di SureForms."],"Learn more":["Scopri di pi\u00f9"],"MCP Adapter Required":["Adattatore MCP richiesto"],"Heading 1":["Intestazione 1"],"Heading 2":["Intestazione 2"],"Heading 3":["Intestazione 3"],"Heading 4":["Intestazione 4"],"Heading 5":["Intestazione 5"],"Heading 6":["Intestazione 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Configura la chiave API di Google Maps per il completamento automatico degli indirizzi e l'anteprima della mappa."],"Help shape the future of SureForms":["Aiuta a plasmare il futuro di SureForms"],"Enable Google Address Autocomplete":["Abilita il completamento automatico degli indirizzi di Google"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Passa al piano SureForms Business per aggiungere il completamento automatico degli indirizzi con tecnologia Google e l'anteprima della mappa interattiva ai tuoi moduli."],"Auto-suggest addresses as users type for faster, error-free submissions":["Suggerisci automaticamente gli indirizzi mentre gli utenti digitano per invii pi\u00f9 rapidi e senza errori"],"Show an interactive map preview with draggable pin for precise locations":["Mostra un'anteprima della mappa interattiva con un segnaposto trascinabile per posizioni precise"],"Automatically populate address fields like city, state, and postal code":["Compila automaticamente i campi dell'indirizzo come citt\u00e0, stato e codice postale"],"This form is now closed as we've received all the entries.":["Questo modulo \u00e8 ora chiuso poich\u00e9 abbiamo ricevuto tutte le iscrizioni."],"Thank you for contacting us! We will be in touch with you shortly.":["Grazie per averci contattato! Saremo in contatto con te a breve."],"Saving\u2026":["Salvataggio in corso\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Quando abilitato, questo modulo non memorizzer\u00e0 l'IP dell'utente, il nome del browser e il nome del dispositivo nelle voci."],"Form data":["Dati del modulo"],"Unsaved changes":["Modifiche non salvate"],"Keep editing":["Continua a modificare"],"Global Defaults":["Impostazioni predefinite globali"],"Form Restrictions":["Restrizioni del modulo"],"Configure default settings that apply to newly created forms.":["Configura le impostazioni predefinite che si applicano ai moduli appena creati."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Raccogli informazioni non sensibili dal tuo sito web, come la versione PHP e le funzionalit\u00e0 utilizzate, per aiutarci a correggere i bug pi\u00f9 velocemente, prendere decisioni pi\u00f9 intelligenti e sviluppare funzionalit\u00e0 che contano davvero per te."],"Failed to load pages. Please refresh and try again.":["Caricamento delle pagine non riuscito. Si prega di aggiornare e riprovare."],"Failed to load settings. Please refresh and try again.":["Caricamento delle impostazioni non riuscito. Si prega di aggiornare e riprovare."],"Form Validation fields cannot be left blank.":["I campi di convalida del modulo non possono essere lasciati vuoti."],"Recipient email is required when email summaries are enabled.":["L'email del destinatario \u00e8 necessaria quando i riepiloghi email sono abilitati."],"Please enter a valid recipient email.":["Si prega di inserire un'email del destinatario valida."],"Settings saved.":["Impostazioni salvate."],"Failed to save settings.":["Impossibile salvare le impostazioni."],"Some settings failed to save. Please retry.":["Alcune impostazioni non sono state salvate. Riprova."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Alcuni campi hanno modifiche non salvate. Scartale per continuare, oppure rimani per salvare le tue modifiche."],"Discard & switch":["Scarta e cambia"],"Import":["Importa"],"Migration":["Migrazione"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importa moduli da Contact Form 7, WPForms, Gravity Forms e altri plugin in SureForms."],"Could not generate the import preview.":["Impossibile generare l'anteprima dell'importazione."],"Import failed. Please try again or check your error logs.":["Importazione non riuscita. Riprova o controlla i tuoi registri degli errori."],"Go back":["Torna indietro"],"Update & import":["Aggiorna e importa"],"Confirm & import":["Conferma e importa"],"Form #%s":["Modulo n.%s"],"%d field will import":["%d campo verr\u00e0 importato"],"Some fields can't be migrated yet":["Alcuni campi non possono essere ancora migrati"],"These fields will be skipped - add them manually after the form is created:":["Questi campi verranno saltati - aggiungili manualmente dopo che il modulo \u00e8 stato creato:"],"Some forms could not be parsed":["Alcuni moduli non possono essere analizzati"],"Update existing":["Aggiorna esistente"],"Create a new copy":["Crea una nuova copia"],"Could not load forms for this source.":["Impossibile caricare i moduli per questa fonte."],"(untitled form)":["(modulo senza titolo)"],"Previously imported":["Importato in precedenza"],"Open existing SureForms form in a new tab":["Apri il modulo SureForms esistente in una nuova scheda"],"On re-import":["Al momento della reimportazione"],"No forms found in this plugin.":["Nessun modulo trovato in questo plugin."],"%1$d of %2$d form selected":["%1$d di %2$d modulo selezionato"],"Preview update":["Anteprima aggiornamento"],"Preview import":["Anteprima importazione"],"Migration complete":["Migrazione completata"],"Nothing was imported":["Non \u00e8 stato importato nulla"],"%d form was imported into SureForms.":["%d modulo \u00e8 stato importato in SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["Nessuno dei moduli selezionati pu\u00f2 essere migrato. Vedi gli avvisi qui sotto per i dettagli."],"Imported forms":["Moduli importati"],"Edit in SureForms":["Modifica in SureForms"],"Some fields were skipped during import":["Alcuni campi sono stati saltati durante l'importazione"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Aggiungi questi manualmente nell'editor di moduli - non hanno ancora un equivalente SureForms:"],"Some forms failed to import":["Alcuni moduli non sono stati importati"],"Import more forms":["Importa pi\u00f9 moduli"],"Could not load the list of importable plugins.":["Impossibile caricare l'elenco dei plugin importabili."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Non ci sono plugin di moduli supportati attivi su questo sito. Attiva uno (come Contact Form 7) con almeno un modulo per importarlo in SureForms."],"Plugin":["Plugin"],"%d form":["%d modulo"],"No forms":["Nessun modulo"],"Multiple choice":["Scelta multipla"],"Consent":["Consenso"],"The image uploaded but could not be inserted. Please try again.":["L'immagine \u00e8 stata caricata ma non \u00e8 stato possibile inserirla. Per favore riprova."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["Non \u00e8 stato possibile caricare l'immagine. Potrebbe essere troppo grande o potresti non avere il permesso di caricare file."],"Please choose an image file.":["Per favore scegli un file immagine."],"Show views and conversion rate":["Mostra visualizzazioni e tasso di conversione"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Aggiunge le colonne Visualizzazioni e Tasso di Conversione all'elenco dei Moduli. Una visualizzazione viene conteggiata una volta per visita alla pagina quando il modulo appare sullo schermo, e il tasso di conversione \u00e8 la quota di quelle visualizzazioni che si sono concluse con un invio. Il conteggio inizia la prima volta che lo attivi, quindi gli invii ricevuti prima non vengono conteggiati nel tasso. Disattivarlo successivamente nasconde solo le colonne \u2014 il conteggio continua, quindi le cifre sono aggiornate se lo riattivi."],"Log cleared.":["Registro cancellato."],"Could not clear the log.":["Impossibile cancellare il registro."],"Enable logs":["Abilita registri"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Registra i fallimenti di invio dei moduli segnalati dal browser, cos\u00ec puoi inviare il registro al supporto invece di leggere la console. Nulla viene scritto mentre i tuoi moduli funzionano, e i valori inviati non vengono mai memorizzati."],"Download log":["Scarica registro"],"Confirm delete":["Conferma eliminazione"],"Log is full \u2014 download and clear it to keep recording.":["Il registro \u00e8 pieno \u2014 scaricalo e cancellalo per continuare a registrare."],"Form Views & Conversion":["Visualizzazioni e Conversione Moduli"],"Logs":["Registri"],"Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures.":["Le visualizzazioni e gli invii da parte di chiunque possa modificare il sito sono normalmente omessi, quindi testare i propri moduli non modifica queste cifre."],"Quill heading picker: default paragraph style\u0004Normal":["Normale"]}}} \ No newline at end of file diff --git a/languages/sureforms-it_IT-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json b/languages/sureforms-it_IT-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json index 9eef0678f..129468c65 100644 --- a/languages/sureforms-it_IT-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json +++ b/languages/sureforms-it_IT-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json @@ -1 +1 @@ -{"translation-revision-date":"2025-01-01T06:16:29+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Cruscotto"],"Settings":["Impostazioni"],"Entries":["Voci"],"Activated":["Attivato"],"Advanced Fields":["Campi Avanzati"],"Select Form":["Seleziona modulo"],"Create New Form":["Crea nuovo modulo"],"Forms":["Moduli"],"Copy":["Copia"],"Business":["Affari"],"Next":["Avanti"],"Back":["Indietro"],"Cancel":["Annulla"],"This is where your form views will appear":["Qui \u00e8 dove appariranno le visualizzazioni del tuo modulo"],"Install":["Installa"],"Plugin Installation failed, Please try again later.":["Installazione del plugin fallita, per favore riprova pi\u00f9 tardi."],"Plugin activation failed, Please try again later.":["Attivazione del plugin fallita, riprova pi\u00f9 tardi."],"What's New?":["Novit\u00e0?"],"Core":["Nucleo"],"Unlicensed":["Senza licenza"],"Upgrade":["Aggiornamento"],"Webhooks":["Webhooks"],"Install & Activate":["Installa e attiva"],"Conditional Logic":["Logica Condizionale"],"Premium":["Premium"],"Welcome to SureForms!":["Benvenuto su SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms \u00e8 un plugin per WordPress che consente agli utenti di creare moduli dall'aspetto elegante tramite un'interfaccia drag-and-drop, senza bisogno di programmare. Si integra con l'editor a blocchi di WordPress."],"Read Full Guide":["Leggi la guida completa"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Moduli personalizzati per WordPress RESI SEMPLICI"],"No Date":["Nessuna data"],"Invalid Date":["Data non valida"],"Ready to go beyond free plan?":["Pronto a superare il piano gratuito?"],"Upgrade now":["Aggiorna ora"],"and unlock the full power of SureForms!":["e sblocca tutta la potenza di SureForms!"],"Upgrade SureForms":["Aggiorna SureForms"],"Open Support Ticket":["Apri un ticket di supporto"],"Help Center":["Centro assistenza"],"Join our Community on Facebook":["Unisciti alla nostra community su Facebook"],"Leave Us a Review":["Lasciaci una recensione"],"Quick Access":["Accesso rapido"],"Upgrade Now":["Aggiorna ora"],"Clear Filters":["Cancella filtri"],"Unnamed Form":["Modulo senza nome"],"Forms Overview":["Panoramica dei moduli"],"Clear Form Filters":["Cancella i filtri del modulo"],"Clear Date Filters":["Cancella i filtri di data"],"Select Date Range":["Seleziona intervallo di date"],"Apply":["Applica"],"Please wait for the data to load":["Per favore, attendi che i dati vengano caricati"],"No entries to display":["Nessuna voce da visualizzare"],"Once you create a form and start receiving submissions, the data will appear here.":["Una volta che crei un modulo e inizi a ricevere invii, i dati appariranno qui."],"Free":["Gratis"],"All Forms":["Tutti i moduli"],"Guided Setup":["Configurazione guidata"],"Exit Guided Setup":["Esci dalla configurazione guidata"],"Skip":["Salta"],"Build beautiful forms visually":["Crea moduli belli visivamente"],"Works perfectly on mobile":["Funziona perfettamente su mobile"],"Easy to connect with automation tools":["Facile da collegare con strumenti di automazione"],"Welcome to SureForms":["Benvenuto su SureForms"],"Smart, Quick and Powerful Forms.":["Moduli intelligenti, rapidi e potenti."],"Let's Get Started":["Iniziamo"],"Build up to 10 forms using AI":["Costruisci fino a 10 moduli utilizzando l'IA"],"A secure and private connection":["Una connessione sicura e privata"],"Smart form drafts based on your input":["Bozze di moduli intelligenti basate sul tuo input"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Iniziare da un modulo vuoto non \u00e8 sempre facile. La nostra IA pu\u00f2 aiutarti creando un modulo di bozza basato su ci\u00f2 che stai cercando di fare, risparmiando tempo e fornendoti una direzione chiara."],"To do this, you'll need to connect your account.":["Per fare ci\u00f2, dovrai collegare il tuo account."],"Let AI Help You Build Smarter, Faster Forms":["Lascia che l'IA ti aiuti a creare moduli pi\u00f9 intelligenti e veloci"],"Here's what that gives you:":["Ecco cosa ti d\u00e0:"],"Continue":["Continua"],"Connect":["Connetti"],"Works smoothly with forms made using SureForms":["Funziona senza problemi con i moduli creati utilizzando SureForms"],"Helps your emails reach the inbox instead of spam":["Aiuta le tue email a raggiungere la casella di posta invece della cartella spam"],"Setup is straightforward, even if you're not technical":["L'installazione \u00e8 semplice, anche se non sei esperto di tecnologia"],"Lightweight and easy to use without adding clutter":["Leggero e facile da usare senza aggiungere disordine"],"Make Sure Your Emails Get Delivered":["Assicurati che le tue email vengano consegnate"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["La maggior parte dei siti WordPress fatica a inviare email in modo affidabile, il che significa che le invii dei moduli dal tuo sito potrebbero non raggiungere la tua casella di posta \u2014 o finire nello spam."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail \u00e8 un semplice plugin SMTP che aiuta a garantire che le tue email vengano effettivamente consegnate."],"What you will get:":["Cosa otterrai:"],"Install SureMail":["Installa SureMail"],"AI Form Generation":["Generazione di moduli AI"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["Stanco di creare moduli manualmente? Lascia che l'IA faccia il lavoro per te. Basta descrivere e la nostra IA creer\u00e0 il tuo modulo perfetto in pochi secondi."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Scomponi moduli complessi in passaggi semplici, riducendo il sovraccarico e aumentando i tassi di completamento. Guida gli utenti senza intoppi attraverso il processo"],"Conditional Fields":["Campi Condizionali"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Mostra o nascondi i campi in base alle risposte degli utenti. Fai le domande giuste e visualizza solo ci\u00f2 che \u00e8 necessario per mantenere i moduli puliti e pertinenti."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Migliora i tuoi moduli con campi avanzati come il caricamento di pi\u00f9 file, campi di valutazione e selettori di data e ora per raccogliere dati pi\u00f9 ricchi e flessibili."],"Conversational Forms":["Forme Conversazionali"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Crea moduli che sembrano una conversazione. Una domanda alla volta mantiene gli utenti coinvolti e rende facile il completamento del modulo."],"Digital Signatures":["Firme digitali"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Raccogli firme digitali legalmente vincolanti direttamente nei tuoi moduli per accordi, approvazioni e contratti."],"Calculators":["Calcolatrici"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Aggiungi calcolatori interattivi ai tuoi moduli per stime, preventivi e calcoli istantanei per i tuoi utenti."],"User Registration and Login":["Registrazione e accesso utente"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Consenti ai visitatori di registrarsi e accedere al tuo sito. Utile per siti di abbonamento, comunit\u00e0 o qualsiasi sito che richieda l'accesso degli utenti."],"PDF Generation Made Simple":["Generazione PDF resa semplice"],"Custom App":["App personalizzata"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Raccogli dati, inviali ad applicazioni esterne per l'elaborazione e visualizza i risultati istantaneamente, tutto perfettamente integrato per creare esperienze utente dinamiche e interattive."],"Select Your Features":["Seleziona le tue funzionalit\u00e0"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Ottieni pi\u00f9 controllo, flussi di lavoro pi\u00f9 rapidi e una personalizzazione pi\u00f9 profonda, tutto progettato per aiutarti a creare siti web migliori con meno sforzo."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Le funzionalit\u00e0 selezionate richiedono %1$s - usa il codice %2$s per ottenere il 10% di sconto su qualsiasi piano."],"Copied":["Copiato"],"Style your form to better match your site's design":["Stilizza il tuo modulo per adattarlo meglio al design del tuo sito"],"Add spam protection to block common bot submissions":["Aggiungi protezione antispam per bloccare le comuni sottomissioni di bot"],"Get weekly email reports with a summary of form activity":["Ricevi rapporti settimanali via email con un riepilogo dell'attivit\u00e0 del modulo"],"You're All Set! \ud83d\ude80":["Tutto pronto! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Usa il nostro generatore di moduli AI per iniziare rapidamente, oppure crea il tuo modulo da zero se sai gi\u00e0 cosa ti serve. I tuoi moduli sono pronti per essere creati, condivisi e collegati con i visitatori del tuo sito."],"Final Touches That Make a Difference:":["Ritocchi finali che fanno la differenza:"],"Build Your First Form":["Crea il tuo primo modulo"],"File Uploads":["Caricamenti di file"],"Signature & Rating":["Firma e Valutazione"],"Calculation Forms":["Moduli di Calcolo"],"And Much More\u2026":["E molto altro ancora\u2026"],"Upgrade to Pro":["Passa a Pro"],"Unlock Premium Features":["Sblocca le funzionalit\u00e0 premium"],"Build Better Forms with SureForms":["Costruisci moduli migliori con SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Aggiungi campi avanzati, layout conversazionali e logica intelligente per creare moduli che coinvolgano gli utenti e catturino dati migliori."],"SureForms Video Thumbnail":["Miniatura video di SureForms"],"Payments":["Pagamenti"],"Knowledge Base":["Base di conoscenza"],"What\u2019s New":["Novit\u00e0"],"Importing\u2026":["Importazione in corso\u2026"],"Learn":["Impara"],"Unable to complete action. Please try again.":["Impossibile completare l'azione. Per favore riprova."],"Supercharge Your Workflow":["Potenzia il tuo flusso di lavoro"],"Spam protection included":["Protezione antispam inclusa"],"Multistep Forms":["Moduli a pi\u00f9 fasi"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Invia le voci del modulo istantaneamente a qualsiasi sistema o endpoint esterno per alimentare flussi di lavoro avanzati."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Trasforma automaticamente le voci del modulo in PDF puliti e pronti per il download. Perfetto per registri, condivisione, archiviazione o per mantenere tutto organizzato."],"Set up confirmation messages and email notifications for each entry":["Imposta i messaggi di conferma e le notifiche email per ogni voce"],"Something went wrong. Please try again.":["Qualcosa \u00e8 andato storto. Per favore riprova."],"Payment Forms":["Moduli di pagamento"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Raccogli pagamenti direttamente attraverso i tuoi moduli. Accetta pagamenti una tantum e ricorrenti senza problemi."],"SureForms %s":["SureForms %s"],"First name is required.":["Il nome \u00e8 obbligatorio."],"Please enter a valid email address.":["Per favore inserisci un indirizzo email valido."],"Email address is required.":["L'indirizzo email \u00e8 obbligatorio."],"This is required.":["Questo \u00e8 necessario."],"Okay, just one last step\u2026":["Va bene, solo un ultimo passo\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Aiutaci a personalizzare la tua esperienza con SureForms condividendo alcune informazioni su di te."],"First Name":["Nome"],"Enter your first name":["Inserisci il tuo nome"],"Last Name":["Cognome"],"Enter your last name":["Inserisci il tuo cognome"],"Email Address":["Indirizzo email"],"Enter your email address":["Inserisci il tuo indirizzo email"],"Privacy Policy":["Informativa sulla privacy"],"Finish":["Finire"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Rimani aggiornato e contribuisci a plasmare SureForms! Ricevi aggiornamenti sulle funzionalit\u00e0 e aiutaci a migliorare SureForms condividendo come utilizzi il plugin. Informativa sulla privacy<\/a>."],"%d form ready":["%d modulo pronto"],"%d already imported":["%d gi\u00e0 importati"],"(unnamed source)":["(fonte senza nome)"],"All forms already imported":["Tutti i moduli gi\u00e0 importati"],"Import forms":["Importa moduli"],"Import %d form":["Importa %d modulo"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Si \u00e8 verificato un errore durante l'importazione. Puoi riprovare, saltare o aprire Impostazioni \u2192 Migrazione."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Nessun altro plugin di moduli rilevato. Puoi importare in qualsiasi momento da Impostazioni \u2192 Migrazione."],"Forms imported":["Moduli importati"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["Il modulo %1$d da %2$s \u00e8 ora in SureForms, pronto per essere pubblicato, stilizzato e connesso."],"%d form imported":["%d modulo importato"],"%d form could not be imported":["%d modulo non pu\u00f2 essere importato"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d tipo di campo non era supportato. Puoi ricostruirlo manualmente all'interno di SureForms."],"Bring your existing forms with you":["Porta con te i tuoi moduli esistenti"],"We detected forms in another plugin. Pick one to import into SureForms.":["Abbiamo rilevato moduli in un altro plugin. Scegli uno da importare in SureForms."],"Choose a form plugin to import from":["Scegli un plugin di modulo da cui importare"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Importare pi\u00f9 di un plugin? Puoi importare ulteriori fonti successivamente da Impostazioni \u2192 Migrazione."],"Import did not complete":["L'importazione non \u00e8 stata completata"],"I'll do this later":["Lo far\u00f2 pi\u00f9 tardi"],"Retry":["Riprova"],"Form Checks":["Controlli del modulo"],"Collapse form checks":["Comprimi i controlli del modulo"],"Expand form checks":["Espandi i controlli del modulo"],"Ignore":["Ignora"],"Working\u2026":["Lavorando\u2026"]}}} \ No newline at end of file +{"translation-revision-date":"2025-01-01T06:16:29+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Cruscotto"],"Settings":["Impostazioni"],"Entries":["Voci"],"Activated":["Attivato"],"Advanced Fields":["Campi Avanzati"],"Select Form":["Seleziona modulo"],"Create New Form":["Crea nuovo modulo"],"Forms":["Moduli"],"Copy":["Copia"],"Business":["Affari"],"Next":["Avanti"],"Back":["Indietro"],"Close":["Chiudi"],"Cancel":["Annulla"],"This is where your form views will appear":["Qui \u00e8 dove appariranno le visualizzazioni del tuo modulo"],"Install":["Installa"],"Plugin Installation failed, Please try again later.":["Installazione del plugin fallita, per favore riprova pi\u00f9 tardi."],"Plugin activation failed, Please try again later.":["Attivazione del plugin fallita, riprova pi\u00f9 tardi."],"What's New?":["Novit\u00e0?"],"Core":["Nucleo"],"Unlicensed":["Senza licenza"],"Upgrade":["Aggiornamento"],"Webhooks":["Webhooks"],"Install & Activate":["Installa e attiva"],"Contact Support":["Contatta il supporto"],"Conditional Logic":["Logica Condizionale"],"Premium":["Premium"],"Welcome to SureForms!":["Benvenuto su SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms \u00e8 un plugin per WordPress che consente agli utenti di creare moduli dall'aspetto elegante tramite un'interfaccia drag-and-drop, senza bisogno di programmare. Si integra con l'editor a blocchi di WordPress."],"Read Full Guide":["Leggi la guida completa"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Moduli personalizzati per WordPress RESI SEMPLICI"],"No Date":["Nessuna data"],"Invalid Date":["Data non valida"],"Ready to go beyond free plan?":["Pronto a superare il piano gratuito?"],"Upgrade now":["Aggiorna ora"],"and unlock the full power of SureForms!":["e sblocca tutta la potenza di SureForms!"],"Upgrade SureForms":["Aggiorna SureForms"],"Open Support Ticket":["Apri un ticket di supporto"],"Help Center":["Centro assistenza"],"Join our Community on Facebook":["Unisciti alla nostra community su Facebook"],"Leave Us a Review":["Lasciaci una recensione"],"Quick Access":["Accesso rapido"],"Upgrade Now":["Aggiorna ora"],"Clear Filters":["Cancella filtri"],"Unnamed Form":["Modulo senza nome"],"Forms Overview":["Panoramica dei moduli"],"Clear Form Filters":["Cancella i filtri del modulo"],"Clear Date Filters":["Cancella i filtri di data"],"Select Date Range":["Seleziona intervallo di date"],"Apply":["Applica"],"Please wait for the data to load":["Per favore, attendi che i dati vengano caricati"],"No entries to display":["Nessuna voce da visualizzare"],"Once you create a form and start receiving submissions, the data will appear here.":["Una volta che crei un modulo e inizi a ricevere invii, i dati appariranno qui."],"Free":["Gratis"],"All Forms":["Tutti i moduli"],"Guided Setup":["Configurazione guidata"],"Exit Guided Setup":["Esci dalla configurazione guidata"],"Skip":["Salta"],"Build beautiful forms visually":["Crea moduli belli visivamente"],"Works perfectly on mobile":["Funziona perfettamente su mobile"],"Easy to connect with automation tools":["Facile da collegare con strumenti di automazione"],"Welcome to SureForms":["Benvenuto su SureForms"],"Smart, Quick and Powerful Forms.":["Moduli intelligenti, rapidi e potenti."],"Let's Get Started":["Iniziamo"],"Build up to 10 forms using AI":["Costruisci fino a 10 moduli utilizzando l'IA"],"A secure and private connection":["Una connessione sicura e privata"],"Smart form drafts based on your input":["Bozze di moduli intelligenti basate sul tuo input"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Iniziare da un modulo vuoto non \u00e8 sempre facile. La nostra IA pu\u00f2 aiutarti creando un modulo di bozza basato su ci\u00f2 che stai cercando di fare, risparmiando tempo e fornendoti una direzione chiara."],"To do this, you'll need to connect your account.":["Per fare ci\u00f2, dovrai collegare il tuo account."],"Let AI Help You Build Smarter, Faster Forms":["Lascia che l'IA ti aiuti a creare moduli pi\u00f9 intelligenti e veloci"],"Here's what that gives you:":["Ecco cosa ti d\u00e0:"],"Continue":["Continua"],"Connect":["Connetti"],"Works smoothly with forms made using SureForms":["Funziona senza problemi con i moduli creati utilizzando SureForms"],"Helps your emails reach the inbox instead of spam":["Aiuta le tue email a raggiungere la casella di posta invece della cartella spam"],"Setup is straightforward, even if you're not technical":["L'installazione \u00e8 semplice, anche se non sei esperto di tecnologia"],"Lightweight and easy to use without adding clutter":["Leggero e facile da usare senza aggiungere disordine"],"Make Sure Your Emails Get Delivered":["Assicurati che le tue email vengano consegnate"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["La maggior parte dei siti WordPress fatica a inviare email in modo affidabile, il che significa che le invii dei moduli dal tuo sito potrebbero non raggiungere la tua casella di posta \u2014 o finire nello spam."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail \u00e8 un semplice plugin SMTP che aiuta a garantire che le tue email vengano effettivamente consegnate."],"What you will get:":["Cosa otterrai:"],"Install SureMail":["Installa SureMail"],"AI Form Generation":["Generazione di moduli AI"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["Stanco di creare moduli manualmente? Lascia che l'IA faccia il lavoro per te. Basta descrivere e la nostra IA creer\u00e0 il tuo modulo perfetto in pochi secondi."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Scomponi moduli complessi in passaggi semplici, riducendo il sovraccarico e aumentando i tassi di completamento. Guida gli utenti senza intoppi attraverso il processo"],"Conditional Fields":["Campi Condizionali"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Mostra o nascondi i campi in base alle risposte degli utenti. Fai le domande giuste e visualizza solo ci\u00f2 che \u00e8 necessario per mantenere i moduli puliti e pertinenti."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Migliora i tuoi moduli con campi avanzati come il caricamento di pi\u00f9 file, campi di valutazione e selettori di data e ora per raccogliere dati pi\u00f9 ricchi e flessibili."],"Conversational Forms":["Forme Conversazionali"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Crea moduli che sembrano una conversazione. Una domanda alla volta mantiene gli utenti coinvolti e rende facile il completamento del modulo."],"Digital Signatures":["Firme digitali"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Raccogli firme digitali legalmente vincolanti direttamente nei tuoi moduli per accordi, approvazioni e contratti."],"Calculators":["Calcolatrici"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Aggiungi calcolatori interattivi ai tuoi moduli per stime, preventivi e calcoli istantanei per i tuoi utenti."],"User Registration and Login":["Registrazione e accesso utente"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Consenti ai visitatori di registrarsi e accedere al tuo sito. Utile per siti di abbonamento, comunit\u00e0 o qualsiasi sito che richieda l'accesso degli utenti."],"PDF Generation Made Simple":["Generazione PDF resa semplice"],"Custom App":["App personalizzata"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Raccogli dati, inviali ad applicazioni esterne per l'elaborazione e visualizza i risultati istantaneamente, tutto perfettamente integrato per creare esperienze utente dinamiche e interattive."],"Select Your Features":["Seleziona le tue funzionalit\u00e0"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Ottieni pi\u00f9 controllo, flussi di lavoro pi\u00f9 rapidi e una personalizzazione pi\u00f9 profonda, tutto progettato per aiutarti a creare siti web migliori con meno sforzo."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Le funzionalit\u00e0 selezionate richiedono %1$s - usa il codice %2$s per ottenere il 10% di sconto su qualsiasi piano."],"Copied":["Copiato"],"Style your form to better match your site's design":["Stilizza il tuo modulo per adattarlo meglio al design del tuo sito"],"Add spam protection to block common bot submissions":["Aggiungi protezione antispam per bloccare le comuni sottomissioni di bot"],"Get weekly email reports with a summary of form activity":["Ricevi rapporti settimanali via email con un riepilogo dell'attivit\u00e0 del modulo"],"You're All Set! \ud83d\ude80":["Tutto pronto! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Usa il nostro generatore di moduli AI per iniziare rapidamente, oppure crea il tuo modulo da zero se sai gi\u00e0 cosa ti serve. I tuoi moduli sono pronti per essere creati, condivisi e collegati con i visitatori del tuo sito."],"Final Touches That Make a Difference:":["Ritocchi finali che fanno la differenza:"],"Build Your First Form":["Crea il tuo primo modulo"],"File Uploads":["Caricamenti di file"],"Signature & Rating":["Firma e Valutazione"],"Calculation Forms":["Moduli di Calcolo"],"And Much More\u2026":["E molto altro ancora\u2026"],"Upgrade to Pro":["Passa a Pro"],"Unlock Premium Features":["Sblocca le funzionalit\u00e0 premium"],"Build Better Forms with SureForms":["Costruisci moduli migliori con SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Aggiungi campi avanzati, layout conversazionali e logica intelligente per creare moduli che coinvolgano gli utenti e catturino dati migliori."],"SureForms Video Thumbnail":["Miniatura video di SureForms"],"Payments":["Pagamenti"],"Knowledge Base":["Base di conoscenza"],"What\u2019s New":["Novit\u00e0"],"Importing\u2026":["Importazione in corso\u2026"],"Learn":["Impara"],"Unable to complete action. Please try again.":["Impossibile completare l'azione. Per favore riprova."],"Supercharge Your Workflow":["Potenzia il tuo flusso di lavoro"],"Spam protection included":["Protezione antispam inclusa"],"Multistep Forms":["Moduli a pi\u00f9 fasi"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Invia le voci del modulo istantaneamente a qualsiasi sistema o endpoint esterno per alimentare flussi di lavoro avanzati."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Trasforma automaticamente le voci del modulo in PDF puliti e pronti per il download. Perfetto per registri, condivisione, archiviazione o per mantenere tutto organizzato."],"Set up confirmation messages and email notifications for each entry":["Imposta i messaggi di conferma e le notifiche email per ogni voce"],"Something went wrong. Please try again.":["Qualcosa \u00e8 andato storto. Per favore riprova."],"Payment Forms":["Moduli di pagamento"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Raccogli pagamenti direttamente attraverso i tuoi moduli. Accetta pagamenti una tantum e ricorrenti senza problemi."],"SureForms %s":["SureForms %s"],"First name is required.":["Il nome \u00e8 obbligatorio."],"Please enter a valid email address.":["Per favore inserisci un indirizzo email valido."],"Email address is required.":["L'indirizzo email \u00e8 obbligatorio."],"This is required.":["Questo \u00e8 necessario."],"Okay, just one last step\u2026":["Va bene, solo un ultimo passo\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Aiutaci a personalizzare la tua esperienza con SureForms condividendo alcune informazioni su di te."],"First Name":["Nome"],"Enter your first name":["Inserisci il tuo nome"],"Last Name":["Cognome"],"Enter your last name":["Inserisci il tuo cognome"],"Email Address":["Indirizzo email"],"Enter your email address":["Inserisci il tuo indirizzo email"],"Privacy Policy":["Informativa sulla privacy"],"Finish":["Finire"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Rimani aggiornato e contribuisci a plasmare SureForms! Ricevi aggiornamenti sulle funzionalit\u00e0 e aiutaci a migliorare SureForms condividendo come utilizzi il plugin. Informativa sulla privacy<\/a>."],"%d form ready":["%d modulo pronto"],"%d already imported":["%d gi\u00e0 importati"],"(unnamed source)":["(fonte senza nome)"],"All forms already imported":["Tutti i moduli gi\u00e0 importati"],"Import forms":["Importa moduli"],"Import %d form":["Importa %d modulo"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Si \u00e8 verificato un errore durante l'importazione. Puoi riprovare, saltare o aprire Impostazioni \u2192 Migrazione."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Nessun altro plugin di moduli rilevato. Puoi importare in qualsiasi momento da Impostazioni \u2192 Migrazione."],"Forms imported":["Moduli importati"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["Il modulo %1$d da %2$s \u00e8 ora in SureForms, pronto per essere pubblicato, stilizzato e connesso."],"%d form imported":["%d modulo importato"],"%d form could not be imported":["%d modulo non pu\u00f2 essere importato"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d tipo di campo non era supportato. Puoi ricostruirlo manualmente all'interno di SureForms."],"Bring your existing forms with you":["Porta con te i tuoi moduli esistenti"],"We detected forms in another plugin. Pick one to import into SureForms.":["Abbiamo rilevato moduli in un altro plugin. Scegli uno da importare in SureForms."],"Choose a form plugin to import from":["Scegli un plugin di modulo da cui importare"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Importare pi\u00f9 di un plugin? Puoi importare ulteriori fonti successivamente da Impostazioni \u2192 Migrazione."],"Import did not complete":["L'importazione non \u00e8 stata completata"],"I'll do this later":["Lo far\u00f2 pi\u00f9 tardi"],"Retry":["Riprova"],"Form Checks":["Controlli del modulo"],"Collapse form checks":["Comprimi i controlli del modulo"],"Expand form checks":["Espandi i controlli del modulo"],"Ignore":["Ignora"],"Working\u2026":["Lavorando\u2026"],"Details":["Dettagli"],"Copy details":["Copia dettagli"]}}} \ No newline at end of file diff --git a/languages/sureforms-it_IT.mo b/languages/sureforms-it_IT.mo index e7040428e..2068e8c36 100644 Binary files a/languages/sureforms-it_IT.mo and b/languages/sureforms-it_IT.mo differ diff --git a/languages/sureforms-it_IT.po b/languages/sureforms-it_IT.po index 88645b0c2..fd054940a 100644 --- a/languages/sureforms-it_IT.po +++ b/languages/sureforms-it_IT.po @@ -14,9 +14,9 @@ msgstr "" #. Plugin Name of the plugin #. Author of the plugin #: sureforms.php -#: admin/admin.php:1152 -#: admin/admin.php:1153 -#: admin/admin.php:3021 +#: admin/admin.php:1198 +#: admin/admin.php:1199 +#: admin/admin.php:3185 #: inc/abilities/abilities-registrar.php:139 #: inc/gutenberg-hooks.php:109 #: inc/page-builders/bricks/elements/form-widget.php:67 @@ -43,8 +43,8 @@ msgstr "Un modo semplice ma potente per creare moduli moderni per il tuo sito we msgid "https://sureforms.com/" msgstr "https://sureforms.com/" -#: admin/admin.php:1165 -#: admin/admin.php:1166 +#: admin/admin.php:1211 +#: admin/admin.php:1212 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -59,9 +59,9 @@ msgstr "https://sureforms.com/" msgid "Dashboard" msgstr "Cruscotto" -#: admin/admin.php:1183 -#: admin/admin.php:1184 -#: admin/admin.php:1616 +#: admin/admin.php:1229 +#: admin/admin.php:1230 +#: admin/admin.php:1662 #: inc/compatibility/multilingual/string-collector.php:236 #: inc/compatibility/multilingual/string-collector.php:245 #: inc/compatibility/multilingual/string-collector.php:313 @@ -79,15 +79,15 @@ msgstr "Cruscotto" msgid "Settings" msgstr "Impostazioni" -#: admin/admin.php:1452 -#: admin/admin.php:1453 +#: admin/admin.php:1498 +#: admin/admin.php:1499 #: inc/post-types.php:270 msgid "New Form" msgstr "Nuovo modulo" -#: admin/admin.php:1461 -#: admin/admin.php:1462 -#: admin/admin.php:3340 +#: admin/admin.php:1507 +#: admin/admin.php:1508 +#: admin/admin.php:3504 #: inc/generate-form-markup.php:211 #: inc/generate-form-markup.php:224 #: inc/global-settings/email-summary.php:225 @@ -105,7 +105,7 @@ msgid "Entries" msgstr "Voci" #. Translators: Post Title. -#: admin/admin.php:1704 +#: admin/admin.php:1750 #, php-format msgid "Edit %1$s" msgstr "Modifica %1$s" @@ -118,7 +118,7 @@ msgstr "Modifica %1$s" #: inc/duplicate-form.php:191 #: inc/export.php:126 #: inc/export.php:184 -#: inc/forms-data.php:88 +#: inc/forms-data.php:108 #: inc/global-settings/global-settings.php:89 #: inc/global-settings/global-settings.php:639 #: inc/rest-api.php:203 @@ -126,18 +126,18 @@ msgid "Nonce verification failed." msgstr "Verifica del nonce fallita." #. translators: %1$s: Opening anchor tag with URL, %2$s: Closing anchor tag, %3$s: SureForms Pro Plugin Name. -#: admin/admin.php:2572 +#: admin/admin.php:2626 #, php-format msgid "Please %1$sactivate%2$s your copy of %3$s to get new features, access support, receive update notifications, and more." msgstr "Per favore %1$sattiva%2$s la tua copia di %3$s per ottenere nuove funzionalità, accedere al supporto, ricevere notifiche di aggiornamento e altro ancora." #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version, %4$s: Anchor tag open, %5$s: Closing anchor tag. -#: admin/admin.php:2590 +#: admin/admin.php:2644 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version from %4$shere%5$s." msgstr "SureForms %1$s richiede almeno %2$s %3$s per funzionare correttamente. Si prega di aggiornare all'ultima versione da %4$squi%5$s." -#: admin/admin.php:3339 +#: admin/admin.php:3503 #: inc/global-settings/email-summary.php:224 #: assets/build/entries.js:172 #: assets/build/payments.js:172 @@ -207,7 +207,7 @@ msgstr "Spazzatura" msgid "Published" msgstr "Pubblicato" -#: admin/admin.php:3331 +#: admin/admin.php:3495 msgid "View" msgstr "Visualizza" @@ -299,11 +299,11 @@ msgstr "Nessun plugin specificato" msgid "Plugin Successfully Activated" msgstr "Plugin attivato con successo" -#: admin/admin.php:1780 +#: admin/admin.php:1834 msgid "Activating..." msgstr "Attivazione in corso..." -#: admin/admin.php:1781 +#: admin/admin.php:1835 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/formEditor.js:172 @@ -318,17 +318,17 @@ msgstr "Attivazione in corso..." msgid "Activated" msgstr "Attivato" -#: admin/admin.php:1782 +#: admin/admin.php:1836 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Activate" msgstr "Attiva" -#: admin/admin.php:1783 +#: admin/admin.php:1837 msgid "Installing..." msgstr "Installazione in corso..." -#: admin/admin.php:1784 +#: admin/admin.php:1838 msgid "Installed" msgstr "Installato" @@ -336,12 +336,13 @@ msgstr "Installato" msgid "You do not have permission to access this page." msgstr "Non hai il permesso di accedere a questa pagina." -#: admin/admin.php:2784 -#: admin/admin.php:2912 -#: admin/admin.php:2950 -#: admin/admin.php:2971 -#: admin/admin.php:3294 -#: admin/admin.php:3601 +#: admin/admin.php:2874 +#: admin/admin.php:2917 +#: admin/admin.php:3076 +#: admin/admin.php:3114 +#: admin/admin.php:3135 +#: admin/admin.php:3458 +#: admin/admin.php:3847 #: inc/admin-ajax.php:164 #: inc/payments/admin/admin-handler.php:638 #: inc/payments/stripe/admin-stripe-handler.php:80 @@ -354,7 +355,7 @@ msgid "Form ID is required." msgstr "L'ID del modulo è obbligatorio." #: inc/admin-ajax.php:184 -#: inc/form-submit.php:1153 +#: inc/form-submit.php:1261 msgid "Invalid form ID." msgstr "ID modulo non valido." @@ -593,28 +594,28 @@ msgstr "Telefono" msgid "Textarea" msgstr "Area di testo" -#: inc/form-submit.php:231 +#: inc/form-submit.php:281 msgid "Cloudflare Turnstile secret key is invalid." msgstr "La chiave segreta di Cloudflare Turnstile non è valida." -#: inc/form-submit.php:238 +#: inc/form-submit.php:288 msgid "Cloudflare Turnstile response is missing." msgstr "Manca la risposta di Cloudflare Turnstile." -#: inc/form-submit.php:282 +#: inc/form-submit.php:332 msgid "hCaptcha secret key is invalid." msgstr "La chiave segreta di hCaptcha non è valida." -#: inc/form-submit.php:289 +#: inc/form-submit.php:339 msgid "hCaptcha response is missing." msgstr "Manca la risposta di hCaptcha." -#: inc/form-submit.php:330 -#: inc/form-submit.php:589 +#: inc/form-submit.php:380 +#: inc/form-submit.php:639 msgid "Form data is not found." msgstr "I dati del modulo non sono stati trovati." -#: inc/forms-data.php:68 +#: inc/forms-data.php:88 msgid "Sorry, you are not allowed to view the form." msgstr "Spiacente, non sei autorizzato a visualizzare il modulo." @@ -667,7 +668,7 @@ msgstr "Il valore deve essere unico." msgid "Sorry, you are not allowed to perform this action." msgstr "Spiacente, non ti è permesso eseguire questa azione." -#: admin/admin.php:2639 +#: admin/admin.php:2693 msgid "Rate SureForms" msgstr "Valuta SureForms" @@ -728,7 +729,7 @@ msgstr "Modifica modulo" msgid "Edit" msgstr "Modifica" -#: admin/admin.php:3072 +#: admin/admin.php:3236 #: inc/page-builders/elementor/form-widget.php:346 #: assets/build/dashboard.js:2 msgid "Create New Form" @@ -765,8 +766,8 @@ msgstr "Visualizza modulo" msgid "View Forms" msgstr "Visualizza moduli" -#: admin/admin.php:1443 -#: admin/admin.php:1444 +#: admin/admin.php:1489 +#: admin/admin.php:1490 #: inc/post-types.php:274 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -8280,7 +8281,7 @@ msgstr "Sociale" msgid "Travel" msgstr "Viaggio" -#: inc/helper.php:2375 +#: inc/helper.php:2368 msgid "Blank Form" msgstr "Modulo Vuoto" @@ -8599,7 +8600,9 @@ msgstr "Si prega di aggiungere un'opzione props a MultiButtonsControl" msgid "Icon Library" msgstr "Libreria di icone" +#: admin/admin.php:4062 #: assets/build/blocks.js:172 +#: assets/build/dashboard.js:172 #: modules/gutenberg/build/blocks.js:4 msgid "Close" msgstr "Chiudi" @@ -8888,9 +8891,9 @@ msgstr "Aggiungi blocchi alla barra delle azioni rapide" msgid "Re-arrange block inside Quick Action Bar" msgstr "Riorganizza il blocco all'interno della Barra delle Azioni Rapide" -#: admin/admin.php:1236 -#: admin/admin.php:1237 -#: admin/admin.php:4129 +#: admin/admin.php:1282 +#: admin/admin.php:1283 +#: admin/admin.php:4737 #: assets/build/blocks.js:172 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -9263,7 +9266,7 @@ msgstr "Centro" msgid "Right" msgstr "Destra" -#: inc/form-submit.php:1344 +#: inc/form-submit.php:1452 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Google reCAPTCHA" @@ -9273,7 +9276,7 @@ msgstr "Google reCAPTCHA" msgid "CloudFlare Turnstile" msgstr "CloudFlare Turnstile" -#: inc/form-submit.php:1348 +#: inc/form-submit.php:1456 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "hCaptcha" @@ -9569,7 +9572,7 @@ msgstr "Chiave del sito" msgid "Secret Key" msgstr "Chiave segreta" -#: inc/form-submit.php:1352 +#: inc/form-submit.php:1460 #: assets/build/settings.js:172 msgid "Cloudflare Turnstile" msgstr "Cloudflare Turnstile" @@ -9594,7 +9597,8 @@ msgstr "Connetti ora" msgid "Authentication Failed" msgstr "Autenticazione fallita" -#: admin/admin.php:3516 +#: admin/admin.php:4061 +#: assets/build/dashboard.js:172 #: assets/build/templatePicker.js:172 msgid "Contact Support" msgstr "Contatta il supporto" @@ -10566,18 +10570,18 @@ msgstr "Sblocca Aggiungi Nota" msgid "With the SureForms Starter plan, enhance your submitted form entries by adding personalized notes for better clarity and tracking." msgstr "Con il piano SureForms Starter, migliora le tue voci di modulo inviate aggiungendo note personalizzate per una maggiore chiarezza e tracciabilità." -#: inc/form-submit.php:990 +#: inc/form-submit.php:1046 msgid "Email notification passed to the sending server" msgstr "Notifica email passata al server di invio" #. translators: Here, %s is the comma separated emails list. -#: inc/form-submit.php:1063 +#: inc/form-submit.php:1130 #, php-format msgid "Email notification recipient: %s" msgstr "Destinatario della notifica email: %s" #. translators: Here, %1$s is the comma separated emails list and %2$s is error report ( if any ). -#: inc/form-submit.php:1080 +#: inc/form-submit.php:1147 #, php-format msgid "Email server was unable to send the email notification. Recipient: %1$s. Reason: %2$s" msgstr "Il server di posta elettronica non è riuscito a inviare la notifica email. Destinatario: %1$s. Motivo: %2$s" @@ -10620,7 +10624,7 @@ msgstr "Sblocca moduli conversazionali" msgid "With the SureForms Pro Plan, you can transform your forms into engaging conversational layouts for a seamless user experience." msgstr "Con il piano SureForms Pro, puoi trasformare i tuoi moduli in layout conversazionali coinvolgenti per un'esperienza utente senza interruzioni." -#: admin/admin.php:1075 +#: admin/admin.php:1121 msgid "Get SureForms Pro" msgstr "Ottieni SureForms Pro" @@ -10832,24 +10836,24 @@ msgstr "Seleziona sfumatura" msgid "reCAPTCHA" msgstr "reCAPTCHA" -#: inc/form-submit.php:1288 +#: inc/form-submit.php:1396 msgid "Captcha validation failed. No error code provided." msgstr "La validazione del captcha non è riuscita. Nessun codice di errore fornito." -#: inc/form-submit.php:1289 +#: inc/form-submit.php:1397 msgid "Captcha validation failed." msgstr "La validazione del captcha è fallita." -#: inc/form-submit.php:1356 +#: inc/form-submit.php:1464 msgid "Unknown Captcha" msgstr "Captcha sconosciuto" -#: inc/form-submit.php:1357 +#: inc/form-submit.php:1465 msgid "Invalid captcha type." msgstr "Tipo di captcha non valido." #. translators: %s is the captcha title. -#: inc/form-submit.php:1370 +#: inc/form-submit.php:1478 #, php-format msgid "%s verification failed. Please contact your site administrator." msgstr "La verifica di %s non è riuscita. Si prega di contattare l'amministratore del sito." @@ -11246,8 +11250,8 @@ msgstr "Descrivi il modulo che desideri creare" msgid "We are building your form…" msgstr "Stiamo creando il tuo modulo…" -#: admin/admin.php:1351 -#: admin/admin.php:1352 +#: admin/admin.php:1397 +#: admin/admin.php:1398 msgid "SMTP" msgstr "SMTP" @@ -11379,31 +11383,32 @@ msgstr "Abilita la Notifica Amministratore" msgid "Admin notifications keep you informed about new form entries since your last visit." msgstr "Le notifiche dell'amministratore ti tengono informato sui nuovi invii di moduli dalla tua ultima visita." -#: admin/admin.php:2789 -#: admin/admin.php:2908 -#: admin/admin.php:2946 -#: admin/admin.php:2967 -#: admin/admin.php:3298 -#: admin/admin.php:3596 +#: admin/admin.php:2869 +#: admin/admin.php:2922 +#: admin/admin.php:3072 +#: admin/admin.php:3110 +#: admin/admin.php:3131 +#: admin/admin.php:3462 +#: admin/admin.php:3842 msgid "Unauthorized user." msgstr "Utente non autorizzato." #. translators: 1: opening span, 2: opening strong (inline), 3: closing strong, 4: closing span, 5: opening strong (block), 6: closing strong -#: admin/admin.php:2917 +#: admin/admin.php:3081 #, php-format msgid "%1$sGet started by %2$sbuilding your first form%3$s.%4$s%5$sExperience the power of our intuitive AI Form Builder%6$s" msgstr "%1$sInizia %2$scostruendo il tuo primo modulo%3$s.%4$s%5$sScopri la potenza del nostro intuitivo Costruttore di Moduli AI%6$s" -#: admin/admin.php:2928 +#: admin/admin.php:3092 msgid "SureForms is waiting for you!" msgstr "SureForms ti sta aspettando!" -#: admin/admin.php:2930 +#: admin/admin.php:3094 msgid "Build My First Form" msgstr "Crea il mio primo modulo" -#: admin/admin.php:2931 -#: admin/admin.php:3418 +#: admin/admin.php:3095 +#: admin/admin.php:3650 msgid "Dismiss" msgstr "Chiudi" @@ -11423,51 +11428,51 @@ msgstr "Accesso" msgid "Register" msgstr "Registrati" -#: admin/admin.php:3327 +#: admin/admin.php:3491 msgid "Recent Entries" msgstr "Voci recenti" -#: admin/admin.php:3328 +#: admin/admin.php:3492 msgid "( Last 7 days )" msgstr "( Ultimi 7 giorni )" -#: admin/admin.php:4070 +#: admin/admin.php:4678 msgid "Use Conditional Logic to show only what matters" msgstr "Usa la logica condizionale per mostrare solo ciò che conta" -#: admin/admin.php:4071 +#: admin/admin.php:4679 msgid "Split your form into steps to keep it easy" msgstr "Dividi il tuo modulo in passaggi per mantenerlo semplice" -#: admin/admin.php:4072 +#: admin/admin.php:4680 msgid "Let people upload files directly to your form" msgstr "Consenti alle persone di caricare file direttamente nel tuo modulo" -#: admin/admin.php:4073 +#: admin/admin.php:4681 msgid "Turn responses into downloadable PDFs automatically" msgstr "Trasforma automaticamente le risposte in PDF scaricabili" -#: admin/admin.php:4074 +#: admin/admin.php:4682 msgid "Let users sign with a simple signature field" msgstr "Consenti agli utenti di firmare con un semplice campo firma" -#: admin/admin.php:4075 +#: admin/admin.php:4683 msgid "Connect your form to other tools using webhooks" msgstr "Collega il tuo modulo ad altri strumenti utilizzando i webhook" -#: admin/admin.php:4076 +#: admin/admin.php:4684 msgid "Use Conversational Forms for a chat-like experience" msgstr "Usa moduli conversazionali per un'esperienza simile a una chat" -#: admin/admin.php:4077 +#: admin/admin.php:4685 msgid "Let users register or log in through your form" msgstr "Consenti agli utenti di registrarsi o accedere tramite il tuo modulo" -#: admin/admin.php:4078 +#: admin/admin.php:4686 msgid "Build forms that create WordPress user accounts" msgstr "Crea moduli che creano account utente WordPress" -#: admin/admin.php:4079 +#: admin/admin.php:4687 msgid "Add calculations to auto-total scores or prices" msgstr "Aggiungi calcoli per totalizzare automaticamente i punteggi o i prezzi" @@ -11666,6 +11671,7 @@ msgstr "Ottieni più controllo, flussi di lavoro più rapidi e una personalizzaz msgid "Selected features require %1$s - use code %2$s to get 10% off on any plan." msgstr "Le funzionalità selezionate richiedono %1$s - usa il codice %2$s per ottenere il 10% di sconto su qualsiasi piano." +#: admin/admin.php:4060 #: assets/build/dashboard.js:172 msgid "Copied" msgstr "Copiato" @@ -11889,7 +11895,7 @@ msgstr "Esplora SureDash" msgid "Something went wrong. We have logged the error for further investigation" msgstr "Qualcosa è andato storto. Abbiamo registrato l'errore per ulteriori indagini." -#: inc/field-validation.php:413 +#: inc/field-validation.php:452 msgid "Field is not valid." msgstr "Il campo non è valido." @@ -11957,8 +11963,8 @@ msgstr "Miniatura video di SureForms" msgid "Expected format for emails - email@sureforms.com or John Doe " msgstr "Formato previsto per le email - email@sureforms.com o John Doe " -#: admin/admin.php:1471 -#: admin/admin.php:1472 +#: admin/admin.php:1517 +#: admin/admin.php:1518 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -12173,7 +12179,7 @@ msgstr "Eleva il tuo SEO e scala le classifiche di ricerca senza sforzo!" msgid "Boost your website's visibility with smart SEO automation. Optimize content, track keyword performance, and get actionable insights, all inside WordPress." msgstr "Aumenta la visibilità del tuo sito web con l'automazione intelligente della SEO. Ottimizza i contenuti, monitora le prestazioni delle parole chiave e ottieni informazioni utili, tutto all'interno di WordPress." -#: inc/form-submit.php:129 +#: inc/form-submit.php:174 #: inc/form-views.php:205 #: inc/payments/admin/admin-handler.php:99 #: inc/payments/admin/admin-handler.php:183 @@ -15372,12 +15378,12 @@ msgid "Stripe Settings" msgstr "Impostazioni di Stripe" #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version. -#: admin/admin.php:2281 +#: admin/admin.php:2335 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version." msgstr "SureForms %1$s richiede almeno %2$s %3$s per funzionare correttamente. Si prega di aggiornare all'ultima versione." -#: admin/admin.php:2294 +#: admin/admin.php:2348 msgid "Update Now" msgstr "Aggiorna ora" @@ -15425,8 +15431,8 @@ msgstr "Posizione del simbolo di valuta" msgid "Select the position of the currency symbol relative to the amount." msgstr "Seleziona la posizione del simbolo della valuta rispetto all'importo." -#: admin/admin.php:1414 -#: admin/admin.php:1415 +#: admin/admin.php:1460 +#: admin/admin.php:1461 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -15440,41 +15446,41 @@ msgstr "Seleziona la posizione del simbolo della valuta rispetto all'importo." msgid "Learn" msgstr "Impara" -#: admin/admin.php:2635 +#: admin/admin.php:2689 msgid "Amazing! SureForms is powering your forms and submissions - let's keep growing together!" msgstr "Incredibile! SureForms sta alimentando i tuoi moduli e le tue sottomissioni - continuiamo a crescere insieme!" -#: admin/admin.php:2636 +#: admin/admin.php:2690 msgid "If SureForms has been helpful, would you mind taking a moment to leave a 5-star review on WordPress.org?" msgstr "Se SureForms ti è stato utile, ti dispiacerebbe prendere un momento per lasciare una recensione a 5 stelle su WordPress.org?" -#: admin/admin.php:2647 -#: admin/admin.php:2711 +#: admin/admin.php:2701 +#: admin/admin.php:2765 msgid "Maybe later" msgstr "Forse più tardi" -#: admin/admin.php:2653 +#: admin/admin.php:2707 msgid "I already did" msgstr "L'ho già fatto" -#: admin/admin.php:2702 +#: admin/admin.php:2756 msgid "SureForms is ready to power your forms — explore what's possible!" msgstr "SureForms è pronto a potenziare i tuoi moduli — scopri cosa è possibile!" -#: admin/admin.php:2703 +#: admin/admin.php:2757 msgid "Manage your forms, track submissions, and discover features like AI Form Builder, payment integrations, and more from the SureForms dashboard." msgstr "Gestisci i tuoi moduli, traccia le sottomissioni e scopri funzionalità come AI Form Builder, integrazioni di pagamento e altro ancora dalla dashboard di SureForms." -#: admin/admin.php:2706 +#: admin/admin.php:2760 msgid "Go to Dashboard" msgstr "Vai al cruscotto" -#: admin/admin.php:2717 +#: admin/admin.php:2771 msgid "I already know" msgstr "Lo so già" -#: admin/admin.php:2833 -#: admin/admin.php:3608 +#: admin/admin.php:2981 +#: admin/admin.php:3854 msgid "Invalid parameters." msgstr "Parametri non validi." @@ -15858,10 +15864,10 @@ msgid "This form is not yet available. Check back after the scheduled start time msgstr "Questo modulo non è ancora disponibile. Ricontrolla dopo l'orario di inizio programmato." #: inc/admin/html-form-detector.php:268 -#: inc/form-submit.php:197 -#: inc/form-submit.php:503 -#: inc/form-submit.php:548 -#: inc/form-submit.php:1149 +#: inc/form-submit.php:247 +#: inc/form-submit.php:553 +#: inc/form-submit.php:598 +#: inc/form-submit.php:1257 #: inc/migrator/bootstrap.php:357 #: inc/payments/front-end.php:79 #: inc/payments/front-end.php:265 @@ -15884,48 +15890,48 @@ msgstr "Questo modulo non è ancora disponibile. Ricontrolla dopo l'orario di in msgid "Security verification failed. Please refresh the page and try again." msgstr "Verifica di sicurezza fallita. Si prega di aggiornare la pagina e riprovare." -#: inc/form-submit.php:582 +#: inc/form-submit.php:632 msgid "Form data was not found." msgstr "I dati del modulo non sono stati trovati." -#: inc/form-submit.php:336 +#: inc/form-submit.php:386 msgid "Form ID is missing." msgstr "Manca l'ID del modulo." -#: inc/form-submit.php:213 +#: inc/form-submit.php:263 msgid "Sorry, you do not have permission to access this resource." msgstr "Spiacente, non hai il permesso di accedere a questa risorsa." -#: inc/form-submit.php:368 +#: inc/form-submit.php:418 msgid "You do not have permission to submit this form." msgstr "Non hai il permesso di inviare questo modulo." -#: inc/form-submit.php:378 +#: inc/form-submit.php:428 msgid "This form is no longer available." msgstr "Questo modulo non è più disponibile." -#: inc/form-submit.php:396 +#: inc/form-submit.php:446 msgid "Please check the form for errors." msgstr "Si prega di controllare il modulo per eventuali errori." -#: inc/form-submit.php:523 -#: inc/form-submit.php:564 +#: inc/form-submit.php:573 +#: inc/form-submit.php:614 msgid "Your submission was flagged as spam. Please try again." msgstr "Il tuo invio è stato segnalato come spam. Per favore riprova." -#: inc/form-submit.php:818 +#: inc/form-submit.php:868 msgid "Unable to submit form. Please try again." msgstr "Impossibile inviare il modulo. Per favore riprova." -#: inc/form-submit.php:1070 +#: inc/form-submit.php:1137 msgid "No SMTP plugin detected. Please configure an SMTP plugin to enable email sending." msgstr "Nessun plugin SMTP rilevato. Si prega di configurare un plugin SMTP per abilitare l'invio di email." -#: inc/form-submit.php:1071 +#: inc/form-submit.php:1138 msgid "Email sending failed for an unknown reason." msgstr "Invio email fallito per una ragione sconosciuta." -#: inc/form-submit.php:1124 +#: inc/form-submit.php:1201 msgid "No emails were sent." msgstr "Nessuna email è stata inviata." @@ -16438,7 +16444,7 @@ msgid "Duplicate form?" msgstr "Duplicare il modulo?" #: assets/build/formSubmit.js:2 -#: assets/js/unminified/form-submit.js:917 +#: assets/js/unminified/form-submit.js:938 msgid "An error occurred while submitting your form. Please try again." msgstr "Si è verificato un errore durante l'invio del modulo. Si prega di riprovare." @@ -16815,28 +16821,28 @@ msgstr "Segreto del webhook non configurato." msgid "Invalid webhook signature." msgstr "Firma del webhook non valida." -#: admin/admin.php:1253 -#: admin/admin.php:1851 +#: admin/admin.php:1299 +#: admin/admin.php:1905 #: assets/build/formEditor.js:172 msgid "Quizzes" msgstr "Quiz" -#: admin/admin.php:1252 +#: admin/admin.php:1298 msgid "Quiz Entries" msgstr "Voci del quiz" -#: admin/admin.php:1255 -#: admin/admin.php:1288 -#: admin/admin.php:1321 +#: admin/admin.php:1301 +#: admin/admin.php:1334 +#: admin/admin.php:1367 #: assets/build/settings.js:172 msgid "New" msgstr "Nuovo" -#: inc/form-submit.php:1158 +#: inc/form-submit.php:1266 msgid "Invalid form." msgstr "Modulo non valido." -#: inc/form-submit.php:1163 +#: inc/form-submit.php:1271 msgid "Too many requests. Please try again shortly." msgstr "Troppe richieste. Si prega di riprovare a breve." @@ -17345,9 +17351,9 @@ msgstr "Perfetto per l'istruzione, la formazione e i quiz divertenti" msgid "Select this to create a quiz with scored questions and graded results." msgstr "Seleziona questo per creare un quiz con domande a punteggio e risultati valutati." -#: admin/admin.php:1285 -#: admin/admin.php:1286 -#: admin/admin.php:1856 +#: admin/admin.php:1331 +#: admin/admin.php:1332 +#: admin/admin.php:1910 msgid "Survey Reports" msgstr "Rapporti di indagine" @@ -17753,7 +17759,7 @@ msgid "Error creating SureForms Form." msgstr "Errore nella creazione del modulo SureForms." #. translators: %s represents the minimum number of characters required -#: inc/field-validation.php:426 +#: inc/field-validation.php:465 #: inc/translatable.php:94 #, php-format msgid "Please enter at least %s characters." @@ -17911,9 +17917,9 @@ msgstr "La risposta dell'IA era vuota. Per favore, perfeziona il tuo prompt e ri msgid "Unable to build form fields from the AI response." msgstr "Impossibile creare i campi del modulo dalla risposta dell'AI." -#: admin/admin.php:1318 -#: admin/admin.php:1319 -#: admin/admin.php:1861 +#: admin/admin.php:1364 +#: admin/admin.php:1365 +#: admin/admin.php:1915 msgid "Partial Entries" msgstr "Voci parziali" @@ -18784,23 +18790,23 @@ msgstr "L'importo del pagamento non può essere verificato per questo modulo. Mo msgid "Cancellation is not supported for this payment gateway." msgstr "La cancellazione non è supportata per questo gateway di pagamento." -#: admin/admin.php:3039 +#: admin/admin.php:3203 msgid "SureForms AI Quick Draft" msgstr "SureForms AI Bozza Rapida" -#: admin/admin.php:3058 +#: admin/admin.php:3222 msgid "Describe the form and let SureForms AI generate it for you." msgstr "Descrivi il modulo e lascia che SureForms AI lo generi per te." -#: admin/admin.php:3061 +#: admin/admin.php:3225 msgid "Describe your form" msgstr "Descrivi il tuo modulo" -#: admin/admin.php:3068 +#: admin/admin.php:3232 msgid "Example: Create a contact form with name, email, phone, and message fields." msgstr "Esempio: Crea un modulo di contatto con campi per nome, email, telefono e messaggio." -#: admin/admin.php:3109 +#: admin/admin.php:3273 msgid "Redirecting..." msgstr "Reindirizzamento in corso..." @@ -18813,14 +18819,14 @@ msgid "The prompt is too long. Please shorten it and try again." msgstr "Il prompt è troppo lungo. Per favore accorcialo e riprova." #. translators: %s: maximum characters allowed before the @ symbol. -#: inc/field-validation.php:448 +#: inc/field-validation.php:487 #: inc/translatable.php:97 #, php-format msgid "The part before @ may not exceed %s characters." msgstr "La parte prima di @ non può superare %s caratteri." #. translators: %s: maximum characters allowed after the @ symbol. -#: inc/field-validation.php:454 +#: inc/field-validation.php:493 #: inc/translatable.php:100 #, php-format msgid "The part after @ may not exceed %s characters." @@ -18907,74 +18913,74 @@ msgstr "Spiacente, non sei autorizzato a visualizzare questo modulo." msgid "This form requires a payment. Please complete the payment and submit again." msgstr "Questo modulo richiede un pagamento. Si prega di completare il pagamento e inviare di nuovo." -#: admin/admin.php:552 +#: admin/admin.php:598 msgid "You are not allowed to update this prompt." msgstr "Non sei autorizzato ad aggiornare questo prompt." -#: admin/admin.php:595 +#: admin/admin.php:641 msgid "Finish setting up your form" msgstr "Completa la configurazione del tuo modulo" -#: admin/admin.php:627 +#: admin/admin.php:673 msgid "Review or edit your form" msgstr "Rivedi o modifica il tuo modulo" -#: admin/admin.php:628 -#: admin/admin.php:3907 +#: admin/admin.php:674 +#: admin/admin.php:4515 msgid "Edit form" msgstr "Modifica modulo" -#: admin/admin.php:633 +#: admin/admin.php:679 msgid "Personalize the Thank You message" msgstr "Personalizza il messaggio di ringraziamento" -#: admin/admin.php:634 +#: admin/admin.php:680 msgid "Edit message" msgstr "Modifica messaggio" -#: admin/admin.php:639 +#: admin/admin.php:685 msgid "Choose who gets notified of new replies" msgstr "Scegli chi riceve notifiche di nuove risposte" -#: admin/admin.php:640 +#: admin/admin.php:686 msgid "Set up email" msgstr "Configura email" -#: admin/admin.php:648 +#: admin/admin.php:694 msgid "your form" msgstr "il tuo modulo" #. translators: %s: form title. -#: admin/admin.php:651 +#: admin/admin.php:697 #, php-format msgid "Finish setting up %s" msgstr "Completa la configurazione di %s" #. translators: %s: form title. -#: admin/admin.php:659 +#: admin/admin.php:705 #, php-format msgid "View %s (opens in a new tab)" msgstr "Visualizza %s (si apre in una nuova scheda)" -#: admin/admin.php:664 +#: admin/admin.php:710 msgid "Customize your form to get it ready for real submissions:" msgstr "Personalizza il tuo modulo per prepararlo a ricevere invii reali:" -#: admin/admin.php:3896 +#: admin/admin.php:4504 msgid "We’ve already created this form for you. Finish customising it so it’s ready to collect real submissions." msgstr "Abbiamo già creato questo modulo per te. Completa la personalizzazione in modo che sia pronto a raccogliere invii reali." #. translators: %s: form name. -#: admin/admin.php:3901 +#: admin/admin.php:4509 #, php-format msgid "Finish setting up “%s”" msgstr "Completa la configurazione di “%s”" -#: admin/admin.php:3914 +#: admin/admin.php:4522 msgid "Edit the Thank You message" msgstr "Modifica il messaggio di ringraziamento" -#: admin/admin.php:3920 +#: admin/admin.php:4528 msgid "Set where replies go" msgstr "Imposta dove vanno le risposte" @@ -19002,123 +19008,90 @@ msgstr "Per favore scegli un file immagine." msgid "This form could not be submitted. Please refresh the page and try again." msgstr "Non è stato possibile inviare questo modulo. Per favore aggiorna la pagina e riprova." -#: admin/admin.php:2341 -#: admin/admin.php:2430 +#: admin/admin.php:2395 +#: admin/admin.php:2484 msgid "Your SureForms database is up to date. New form entries will be saved as usual." msgstr "Il tuo database SureForms è aggiornato. Le nuove voci del modulo verranno salvate come al solito." -#: admin/admin.php:2355 -#: admin/admin.php:2439 +#: admin/admin.php:2409 +#: admin/admin.php:2493 #: inc/rest-api.php:1447 msgid "SureForms could not finish updating the database. Your hosting may not allow SureForms to create database tables — please contact your hosting provider or SureForms support." msgstr "SureForms non è riuscito a completare l'aggiornamento del database. Il tuo hosting potrebbe non consentire a SureForms di creare tabelle nel database — contatta il tuo provider di hosting o il supporto di SureForms." -#: admin/admin.php:2358 +#: admin/admin.php:2412 msgid "Contact support" msgstr "Contatta il supporto" -#: admin/admin.php:2378 +#: admin/admin.php:2432 msgid "Database update needed" msgstr "Aggiornamento del database necessario" -#: admin/admin.php:2384 +#: admin/admin.php:2438 msgid "Fix now" msgstr "Correggi ora" -#: admin/admin.php:2453 +#: admin/admin.php:2507 msgid "SureForms — database update needed" msgstr "SureForms — aggiornamento del database necessario" -#: admin/admin.php:2458 +#: admin/admin.php:2512 msgid "Update database" msgstr "Aggiorna il database" -#: admin/admin.php:2478 +#: admin/admin.php:2532 msgid "You do not have permission to update the database." msgstr "Non hai il permesso di aggiornare il database." -#: admin/admin.php:3437 +#: admin/admin.php:3669 msgid "You do not have permission to do this." msgstr "Non hai il permesso di fare questo." -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:3507 -msgid "%d form submission in a row could not be completed." -msgid_plural "%d form submissions in a row could not be completed." -msgstr[0] "%d invio del modulo consecutivo non è stato completato." -msgstr[1] "" - -#: admin/admin.php:3515 -msgid "Visitors may be unable to reach you, and those entries were not saved." -msgstr "I visitatori potrebbero non riuscire a contattarti e quelle voci non sono state salvate." - -#: admin/admin.php:3525 -msgid "Form submissions are completing normally." -msgstr "Gli invii dei moduli vengono completati normalmente." - -#: admin/admin.php:3539 -msgid "No caching plugin that needs configuring was found." -msgstr "Non è stato trovato alcun plugin di caching che necessita di configurazione." - #. translators: %s: caching plugin name. -#: admin/admin.php:3551 +#: admin/admin.php:4209 msgid "%s may interfere with your forms." msgstr "%s potrebbe interferire con i tuoi moduli." -#: admin/admin.php:3554 -msgid "Caching and JavaScript optimisation can serve a stale copy of your form or load its scripts out of order." -msgstr "Il caching e l'ottimizzazione JavaScript possono servire una copia obsoleta del tuo modulo o caricare i suoi script in modo disordinato." - -#: admin/admin.php:3555 +#: admin/admin.php:4185 +#: admin/admin.php:4213 msgid "Help Me Fix" msgstr "Aiutami a risolvere" -#: admin/admin.php:3650 +#: admin/admin.php:4258 msgid "SureForms found your form entries stored under a different database table prefix. Reconnecting them takes a moment, and your existing entries will be kept." msgstr "SureForms ha trovato le tue voci del modulo memorizzate con un prefisso di tabella del database diverso. Riconnetterle richiede un momento e le tue voci esistenti verranno mantenute." -#: admin/admin.php:3653 +#: admin/admin.php:4261 msgid "SureForms needs to update your database before it can save new form entries. This only takes a moment and will not change your forms or existing content. Entries submitted before now cannot be recovered from here." msgstr "SureForms deve aggiornare il tuo database prima di poter salvare nuove voci del modulo. Questo richiede solo un momento e non cambierà i tuoi moduli o il contenuto esistente. Le voci inviate prima di ora non possono essere recuperate da qui." #. translators: %s: site host. -#: admin/admin.php:4265 +#: admin/admin.php:5032 msgid "SureForms: form submissions are failing on %s" msgstr "SureForms: gli invii dei moduli stanno fallendo su %s" -#: admin/admin.php:4274 +#: admin/admin.php:4990 msgid "Debug log: no entries recorded." msgstr "Registro di debug: nessuna voce registrata." #. translators: 1: entries shown, 2: entries recorded. -#: admin/admin.php:4278 +#: admin/admin.php:4995 msgid "Debug log (most recent %1$d of %2$d entries)" msgstr "Registro di debug (le più recenti %1$d di %2$d voci)" -#: admin/admin.php:4288 -msgid "Older entries were left out to keep this email within the length a mail client accepts. The full log can be downloaded from SureForms → Settings → General." -msgstr "Le voci più vecchie sono state omesse per mantenere questa email entro la lunghezza accettata da un client di posta. Il registro completo può essere scaricato da SureForms → Impostazioni → Generale." - -#: admin/admin.php:4318 +#: admin/admin.php:5158 msgid "Hello SureForms support," msgstr "Ciao supporto SureForms," -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:4322 -msgid "SureForms has recorded %d form submission in a row that could not be completed." -msgid_plural "SureForms has recorded %d form submissions in a row that could not be completed." -msgstr[0] "SureForms ha registrato %d invio del modulo consecutivo che non è stato completato." -msgstr[1] "" - -#: admin/admin.php:4332 +#: admin/admin.php:5182 msgid "Site details" msgstr "Dettagli del sito" -#: admin/admin.php:4335 +#: admin/admin.php:5185 msgid "not active" msgstr "non attivo" -#: admin/admin.php:4338 +#: admin/admin.php:5188 msgid "none detected" msgstr "nessuno rilevato" @@ -19126,7 +19099,7 @@ msgstr "nessuno rilevato" msgid "No form submission failures have been recorded." msgstr "Non sono stati registrati fallimenti nell'invio del modulo." -#: inc/form-submit.php:118 +#: inc/form-submit.php:163 msgid "Not found." msgstr "Non trovato." @@ -19211,6 +19184,193 @@ msgstr "Visualizzazioni e Conversione Moduli" msgid "Logs" msgstr "Registri" +#: admin/admin.php:2831 +msgid "Previous notice" +msgstr "Avviso precedente" + +#: admin/admin.php:2832 +msgid "Next notice" +msgstr "Avviso successivo" + +#. translators: 1: current position, 2: total notices. +#: admin/admin.php:2834 +msgid "%1$d of %2$d" +msgstr "%1$d di %2$d" + +#: admin/admin.php:2891 +msgid "Nothing to report." +msgstr "Niente da segnalare." + +#: admin/admin.php:4057 +#: assets/build/dashboard.js:172 +msgid "Details" +msgstr "Dettagli" + +#: admin/admin.php:4058 +msgid "What we recorded about this problem. Copy it into your support request so we can start from the cause rather than a description of it." +msgstr "Cosa abbiamo registrato su questo problema. Copialo nella tua richiesta di supporto in modo che possiamo partire dalla causa piuttosto che da una sua descrizione." + +#: admin/admin.php:4059 +#: assets/build/dashboard.js:172 +msgid "Copy details" +msgstr "Copia dettagli" + +#: admin/admin.php:4068 +msgid "Copy the details first, so you have them to paste." +msgstr "Copia prima i dettagli, così li hai da incollare." + +#: admin/admin.php:4072 +msgid "Copied. Contact Support is now available." +msgstr "Copiato. Contatta il Supporto è ora disponibile." + +#: admin/admin.php:4073 +msgid "Your browser would not let us copy. Select the text above and copy it by hand." +msgstr "Il tuo browser non ci ha permesso di copiare. Seleziona il testo sopra e copialo manualmente." + +#: admin/admin.php:4076 +msgid "Recorded diagnostics" +msgstr "Diagnostica registrata" + +#: admin/admin.php:4080 +msgid "Collecting the details…" +msgstr "Raccolta dei dettagli in corso…" + +#: admin/admin.php:4081 +msgid "We could not collect the details. Contact Support and describe what happened, and we will take it from there." +msgstr "Non siamo riusciti a raccogliere i dettagli. Contatta il Supporto e descrivi cosa è successo, e da lì ci occuperemo noi." + +#. translators: %s: form title. +#: admin/admin.php:4108 +msgid "We noticed a form submission failure on %s." +msgstr "Abbiamo notato un errore di invio del modulo su %s." + +#: admin/admin.php:4109 +msgid "We noticed a form submission failure." +msgstr "Abbiamo notato un errore di invio del modulo." + +#: admin/admin.php:4110 +msgid "Visitors may not be able to reach you, and their entries were not saved." +msgstr "I visitatori potrebbero non essere in grado di contattarti e le loro voci non sono state salvate." + +#. translators: %s: form title. +#: admin/admin.php:4115 +msgid "We noticed a notification failure on %s." +msgstr "Abbiamo notato un errore di notifica su %s." + +#: admin/admin.php:4116 +msgid "We noticed a notification failure." +msgstr "Abbiamo notato un errore di notifica." + +#: admin/admin.php:4117 +msgid "The entry was saved, but we could not send the email about it. New entries may be coming in without you knowing." +msgstr "La voce è stata salvata, ma non siamo riusciti a inviare l'email a riguardo. Potrebbero arrivare nuove voci senza che tu lo sappia." + +#. translators: %s: form title. +#: admin/admin.php:4132 +msgid "We noticed an integration failure on %s." +msgstr "Abbiamo notato un errore di integrazione su %s." + +#: admin/admin.php:4133 +msgid "We noticed an integration failure." +msgstr "Abbiamo notato un errore di integrazione." + +#: admin/admin.php:4134 +msgid "The entry was saved, but we could not send it to a connected service." +msgstr "La voce è stata salvata, ma non siamo riusciti a inviarla a un servizio connesso." + +#: admin/admin.php:4158 +msgid "View details" +msgstr "Visualizza dettagli" + +#: admin/admin.php:4212 +msgid "Caching can show visitors an old copy of your form, or load its scripts in the wrong order." +msgstr "La cache può mostrare ai visitatori una copia vecchia del tuo modulo o caricare i suoi script nell'ordine sbagliato." + +#: admin/admin.php:5005 +msgid "Older entries were left out to keep this excerpt readable. The full log can be downloaded from SureForms → Settings → General." +msgstr "Le voci più vecchie sono state omesse per mantenere leggibile questo estratto. Il log completo può essere scaricato da SureForms → Impostazioni → Generale." + +#. translators: %s: site host. +#: admin/admin.php:5034 +msgid "SureForms has recorded form submissions on %s that could not be completed." +msgstr "SureForms ha registrato invii di moduli su %s che non sono stati completati." + +#. translators: %s: site host. +#: admin/admin.php:5038 +msgid "SureForms: notification emails are not being sent on %s" +msgstr "SureForms: le email di notifica non vengono inviate su %s" + +#. translators: %s: site host. +#: admin/admin.php:5040 +msgid "SureForms saved entries on %s but could not send the notification emails for them." +msgstr "SureForms ha salvato le voci su %s ma non è riuscito a inviare le email di notifica per esse." + +#. translators: %s: site host. +#: admin/admin.php:5044 +msgid "SureForms: an integration is not receiving entries on %s" +msgstr "SureForms: un'integrazione non sta ricevendo voci su %s" + +#. translators: %s: site host. +#: admin/admin.php:5046 +msgid "SureForms saved entries on %s but could not pass them to a connected service." +msgstr "SureForms ha salvato le voci su %s ma non è riuscito a passarle a un servizio connesso." + +#. translators: %s: site host. +#: admin/admin.php:5056 +msgid "SureForms: a problem with the forms on %s" +msgstr "SureForms: un problema con i moduli su %s" + +#. translators: %s: site host. +#: admin/admin.php:5058 +msgid "SureForms has recorded a problem with the forms on %s." +msgstr "SureForms ha registrato un problema con i moduli su %s." + +#. translators: %d: number of failed submissions. +#: admin/admin.php:5083 +msgid "SureForms has recorded %d form submission that could not be completed." +msgid_plural "SureForms has recorded %d form submissions that could not be completed." +msgstr[0] "SureForms ha registrato %d invio di modulo che non è stato completato." +msgstr[1] "" + +#. translators: %d: number of failed notifications. +#: admin/admin.php:5095 +msgid "SureForms saved %d entry but could not send the notification email for it." +msgid_plural "SureForms saved %d entries but could not send the notification emails for them." +msgstr[0] "SureForms ha salvato %d voce ma non è riuscito a inviare l'email di notifica per essa." +msgstr[1] "" + +#. translators: %d: number of failed integration hand-offs. +#: admin/admin.php:5107 +msgid "SureForms saved %d entry but could not pass it to a connected service." +msgid_plural "SureForms saved %d entries but could not pass them to a connected service." +msgstr[0] "SureForms ha salvato %d voce ma non è riuscito a passarla a un servizio connesso." +msgstr[1] "" + +#. translators: %d: number of recorded problems. +#: admin/admin.php:5119 +msgid "SureForms has recorded %d problem with the forms on this site." +msgid_plural "SureForms has recorded %d problems with the forms on this site." +msgstr[0] "SureForms ha registrato %d problema con i moduli su questo sito." +msgstr[1] "" + +#. translators: %s: form title. +#: admin/admin.php:5169 +msgid "Form: %s" +msgstr "Modulo: %s" + +#: admin/admin.php:5189 +msgid "none recorded" +msgstr "nessuno registrato" + +#. translators: %s: date and time of the previous report, in the site's timezone. +#: admin/admin.php:5212 +msgid "Previously reported: %s" +msgstr "Segnalato in precedenza: %s" + +#: assets/build/settings.js:172 +msgid "Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures." +msgstr "Le visualizzazioni e gli invii da parte di chiunque possa modificare il sito sono normalmente omessi, quindi testare i propri moduli non modifica queste cifre." + #: inc/post-types.php:265 msgctxt "post type general name" msgid "Forms" diff --git a/languages/sureforms-nl_NL-51635fe6489fc8288d603fe596c755ca.json b/languages/sureforms-nl_NL-51635fe6489fc8288d603fe596c755ca.json index 01259ca62..6cab43be8 100644 --- a/languages/sureforms-nl_NL-51635fe6489fc8288d603fe596c755ca.json +++ b/languages/sureforms-nl_NL-51635fe6489fc8288d603fe596c755ca.json @@ -1 +1 @@ -{"translation-revision-date":"2024-12-13T12:33:48+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Dashboard"],"Settings":["Instellingen"],"Entries":["Inzendingen"],"Status":["Status"],"Form":["Formulier"],"Activated":["Geactiveerd"],"Activate":["Activeren"],"Address":["Adres"],"Checkbox":["Selectievakje"],"Dropdown":["Keuzemenu"],"Email":["E-mail"],"Number":["Nummer"],"Phone":["Telefoon"],"Textarea":["Tekstvak"],"Monday":["Maandag"],"Forms":["Formulieren"],"New Form Submission - %s":["Nieuwe formulierinzending - %s"],"GitHub":["GitHub"],"(no title)":["(geen titel)"],"General":["Algemeen"],"No tags available":["Geen tags beschikbaar"],"Back":["Terug"],"Generic tags":["Algemene tags"],"Other":["Anders"],"Confirm":["Bevestigen"],"Cancel":["Annuleren"],"Install":["Installeren"],"Plugin Installation failed, Please try again later.":["Installatie van de plugin mislukt, probeer het later opnieuw."],"Plugin activation failed, Please try again later.":["Plug-in activering mislukt, probeer het later opnieuw."],"Integrations":["Integraties"],"What's New?":["Wat is er nieuw?"],"Core":["Kern"],"Unlicensed":["Ongeautoriseerd"],"Connecting\u2026":["Verbinden\u2026"],"Install & Activate":["Installeren & Activeren"],"Compliance Settings":["Instellingen voor naleving"],"Enable GDPR Compliance":["Schakel GDPR-naleving in"],"Never store entry data after form submission":["Sla nooit invoergegevens op na het indienen van het formulier"],"When enabled this form will never store Entries.":["Wanneer ingeschakeld, zal dit formulier nooit inzendingen opslaan."],"Automatically delete entries":["Automatisch items verwijderen"],"When enabled this form will automatically delete entries after a certain period of time.":["Wanneer ingeschakeld, zal dit formulier automatisch inzendingen na een bepaalde periode verwijderen."],"Entries older than the days set will be deleted automatically.":["Inzendingen ouder dan de ingestelde dagen worden automatisch verwijderd."],"Visual":["Visueel"],"HTML":["HTML"],"All Data":["Alle gegevens"],"Add Shortcode":["Voeg shortcode toe"],"Form input tags":["Formulierveldlabels"],"Comma separated values are also accepted.":["Door komma's gescheiden waarden worden ook geaccepteerd."],"Email Notification":["E-mailmelding"],"Name":["Naam"],"Send Email To":["E-mail verzenden naar"],"Subject":["Onderwerp"],"CC":["CC"],"BCC":["BCC"],"Reply To":["Antwoord aan"],"Add Key":["Sleutel toevoegen"],"Add Value":["Waarde toevoegen"],"Add":["Toevoegen"],"Confirmation Message":["Bevestigingsbericht"],"After Form Submission":["Na het indienen van het formulier"],"Hide Form":["Formulier verbergen"],"Reset Form":["Formulier opnieuw instellen"],"Custom URL":["Aangepaste URL"],"Add Query Parameters":["Queryparameters toevoegen"],"Select if you want to add key-value pairs for form fields to include in query parameters":["Selecteer of u sleutel-waardeparen wilt toevoegen voor formuliervelden om op te nemen in queryparameters"],"Query Parameters":["Queryparameters"],"Success Message":["Succesbericht"],"Redirect":["Doorsturen"],"Redirect to":["Doorsturen naar"],"Page":["Pagina"],"Form Confirmation":["Formulierbevestiging"],"Confirmation Type":["Bevestigingstype"],"Clear":["Duidelijk"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Onzichtbaar"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Validaties"],"Spam Protection":["Spam Bescherming"],"If this option is turned on, the user's IP address will be saved with the form data":["Als deze optie is ingeschakeld, wordt het IP-adres van de gebruiker samen met de formuliergegevens opgeslagen"],"Enable Honeypot Security":["Honeypot-beveiliging inschakelen"],"Enable Honeypot Security for better spam protection":["Schakel Honeypot-beveiliging in voor betere spambeveiliging"],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s vertegenwoordigt het minimum aantal selecties dat nodig is. Bijvoorbeeld: \"Minimaal 2 selecties zijn vereist.\""],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s vertegenwoordigt het maximale aantal toegestane selecties. Bijvoorbeeld: \"Maximaal 4 selecties zijn toegestaan.\""],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s vertegenwoordigt de minimale keuzes die nodig zijn. Bijvoorbeeld: \"Minimaal 1 selectie is vereist.\""],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s vertegenwoordigt het maximale aantal toegestane keuzes. Bijvoorbeeld: \"Maximaal 3 selecties zijn toegestaan.\""]," Error Message":["Foutmelding"],"Email Summaries":["E-mailoverzichten"],"Tuesday":["Dinsdag"],"Wednesday":["Woensdag"],"Thursday":["Donderdag"],"Friday":["Vrijdag"],"Saturday":["Zaterdag"],"Sunday":["Zondag"],"Schedule Reports":["Rapporten plannen"],"Auto":["Auto"],"Light":["Licht"],"Dark":["Donker"],"Turnstile":["Draaikruis"],"Get Keys":["Verkrijg sleutels"],"Documentation":["Documentatie"],"Site Key":["Sitecode"],"Secret Key":["Geheime Sleutel"],"Cloudflare Turnstile":["Cloudflare Turnstile"],"Appearance Mode":["Weergavemodus"],"Text":["Tekst"],"Test Email":["Test e-mail"],"IP Logging":["IP-logboek"],"Honeypot":["Honeypot"],"Confirmation Email Mismatch Message":["Bevestigingsmail komt niet overeen bericht"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s vertegenwoordigt de minimale invoerwaarde. Bijvoorbeeld: \"Minimale waarde is 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s vertegenwoordigt de maximale invoerwaarde. Bijvoorbeeld: \"Maximale waarde is 100.\""],"OttoKit":["OttoKit"],"Connect with OttoKit":["Verbind met OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Het huidige 'Van E-mailadres' komt niet overeen met de domeinnaam van uw website (%1$s). Dit kan ervoor zorgen dat uw notificatie-e-mails worden geblokkeerd of als spam worden gemarkeerd. Probeer in plaats daarvan een Van-adres te gebruiken dat overeenkomt met uw website-domein (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Het huidige 'Van E-mailadres' komt niet overeen met de domeinnaam van uw website (%s). Dit kan ervoor zorgen dat uw notificatie-e-mails worden geblokkeerd of als spam worden gemarkeerd."],"We strongly recommend that you install the free ":["We raden ten zeerste aan dat u de gratis installeert"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["plugin! De Setup Wizard maakt het gemakkelijk om je e-mails te repareren."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Probeer afwisselend een Van-adres te gebruiken dat overeenkomt met uw website-domein (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Voer een geldig e-mailadres in. Uw meldingen worden niet verzonden als het veld niet correct is ingevuld."],"From Name":["Van Naam"],"From Email":["Van e-mail"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Het huidige 'Van E-mailadres' komt mogelijk niet overeen met de domeinnaam van uw website (%1$s). Dit kan ervoor zorgen dat uw notificatie-e-mails worden geblokkeerd of als spam worden gemarkeerd. Probeer in plaats daarvan een Van-adres te gebruiken dat overeenkomt met uw website domein (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Het huidige 'Van E-mailadres' komt mogelijk niet overeen met de domeinnaam van uw website (%s). Dit kan ervoor zorgen dat uw notificatie-e-mails worden geblokkeerd of als spam worden gemarkeerd."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Klaar om verder te gaan dan het gratis plan?"],"Upgrade now":["Nu upgraden"],"and unlock the full power of SureForms!":["en ontgrendel de volledige kracht van SureForms!"],"Upgrade SureForms":["Upgrade SureForms"],"Upgrade Now":["Nu upgraden"],"Entries older than the selected days will be deleted.":["Inzendingen ouder dan de geselecteerde dagen worden verwijderd."],"Entries Time Period":["Invoerperiode"],"Notifications can use only one From Email so please enter a single address.":["Meldingen kunnen slechts \u00e9\u00e9n Van E-mailadres gebruiken, dus voer alstublieft \u00e9\u00e9n enkel adres in."],"Select Page to redirect":["Selecteer pagina om te omleiden"],"Search for a page":["Zoek naar een pagina"],"Select a page":["Selecteer een pagina"],"Form Validation":["Formuliercontrole"],"Required Error Messages":["Vereiste foutmeldingen"],"Other Error Messages":["Andere foutmeldingen"],"Input Field Unique":["Uniek invoerveld"],"Email Field Unique":["E-mailveld uniek"],"Invalid URL":["Ongeldige URL"],"Phone Field Unique":["Telefoonveld Uniek"],"Invalid Field Number Block":["Ongeldige Veldnummer Blok"],"Invalid Email":["Ongeldig e-mailadres"],"Number Minimum Value":["Nummer Minimumwaarde"],"Number Maximum Value":["Maximale waarde van het nummer"],"Dropdown Minimum Selections":["Minimale selecties in dropdown"],"Dropdown Maximum Selections":["Maximale selecties in dropdown"],"Multiple Choice Minimum Selections":["Meerdere keuzes minimumselecties"],"Multiple Choice Maximum Selections":["Meerdere Keuzes Maximale Selecties"],"Input Field":["Invoerveld"],"Email Field":["E-mailveld"],"URL Field":["URL-veld"],"Phone Field":["Telefoonveld"],"Textarea Field":["Tekstvakveld"],"Checkbox Field":["Selectievakjeveld"],"Dropdown Field":["Keuzelijstveld"],"Multiple Choice Field":["Meerkeuzeveld"],"Address Field":["Adresveld"],"Number Field":["Nummer veld"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Om de reCAPTCHA-functie op uw SureForms in te schakelen, schakelt u de reCAPTCHA-optie in uw blokinstellingen in en selecteert u de versie. Voeg hier de Google reCAPTCHA-secret en site key toe. reCAPTCHA wordt aan uw pagina toegevoegd aan de voorkant."],"Enter your %s here":["Voer hier uw %s in"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Om hCAPTCHA in te schakelen, voeg uw site-sleutel en geheime sleutel toe. Configureer deze instellingen binnen het individuele formulier."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Om Cloudflare Turnstile in te schakelen, voeg uw site-sleutel en geheime sleutel toe. Configureer deze instellingen binnen het individuele formulier."],"Save":["Opslaan"],"Anonymous Analytics":["Anonieme Analytics"],"Learn More":["Meer informatie"],"Admin Notification":["Beheerdersmelding"],"Enable Admin Notification":["Beheerdermelding inschakelen"],"Admin notifications keep you informed about new form entries since your last visit.":["Beheerdersmeldingen houden je op de hoogte van nieuwe formulierinzendingen sinds je laatste bezoek."],"Skip":["Overslaan"],"Continue":["Doorgaan"],"Maximum Number of Entries":["Maximaal aantal vermeldingen"],"Maximum Entries":["Maximale invoer"],"Response Description After Maximum Entries":["Beschrijving van de reactie na maximale invoer"],"Get Started":["Beginnen"],"Integration":["Integratie"],"Connect Native Integrations with SureForms":["Verbind native integraties met SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Ontgrendel krachtige integraties in het Premium-plan om je workflows te automatiseren en SureForms direct te verbinden met je favoriete tools."],"Send form submissions straight to CRMs, email, and marketing platforms":["Stuur formulierinzendingen rechtstreeks naar CRM's, e-mail en marketingplatforms"],"Automate repetitive tasks with seamless data syncing":["Automatiseer repetitieve taken met naadloze gegevenssynchronisatie"],"Access exclusive native integrations for faster workflows":["Toegang tot exclusieve native integraties voor snellere workflows"],"Expected format for emails - email@sureforms.com or John Doe ":["Verwacht formaat voor e-mails - email@sureforms.com of John Doe "],"Payments":["Betalingen"],"Stripe account disconnected successfully.":["Stripe-account succesvol losgekoppeld."],"Failed to create webhook.":["Het is niet gelukt om de webhook te maken."],"Failed to connect to Stripe.":["Verbinding met Stripe mislukt."],"Webhook":["Webhook"],"Knowledge Base":["Kennisbank"],"What\u2019s New":["Wat is er nieuw"],"out of":["uit"],"No entries found":["Geen items gevonden"],"delete":["verwijderen"],"Please type \"%s\" in the input box":["Typ alstublieft \"%s\" in het invoerveld"],"To confirm, type \"%s\" in the box below:":["Om te bevestigen, typ \"%s\" in het vak hieronder:"],"Type \"%s\"":["Typ \"%s\""],"Go to OttoKit Settings":["Ga naar OttoKit-instellingen"],"USD - US Dollar":["USD - Amerikaanse dollar"],"Payment Mode":["Betaalwijze"],"Test Mode":["Testmodus"],"Live Mode":["Live-modus"],"Action":["Actie"],"General Settings":["Algemene instellingen"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Stel e-mailsamenvattingen, beheerderswaarschuwingen en gegevensvoorkeuren in om uw formulieren eenvoudig te beheren."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Pas standaardfoutmeldingen aan die worden weergegeven wanneer gebruikers ongeldige of onvolledige formulierinvoer indienen."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Schakel spambeveiliging voor uw formulieren in met behulp van CAPTCHA-diensten of honeypot-beveiliging."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Verbind en beheer uw betalingsgateways om veilig transacties via uw formulieren te accepteren."],"1% transaction and payment gateway fees apply.":["1% transactiekosten en kosten voor de betalingsgateway zijn van toepassing."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["2,9% transactiekosten en kosten voor de betalingsgateway zijn van toepassing. Activeer de licentie om de transactiekosten te verlagen."],"2.9% transaction and payment gateway fees apply.":["Er zijn 2,9% transactiekosten en kosten voor de betalingsgateway van toepassing."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Bezoek %1$s, verwijder een ongebruikte webhook en klik vervolgens hieronder om het opnieuw te proberen."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms kon geen webhook maken omdat je Stripe-account geen gratis slots meer heeft. Webhooks zijn nodig om updates over betalingen te ontvangen."],"Stripe Dashboard":["Stripe-dashboard"],"Creating\u2026":["Aan het cre\u00ebren\u2026"],"Create Webhook":["Webhook maken"],"Successfully connected to Stripe!":["Succesvol verbonden met Stripe!"],"Invalid response from server. Please try again.":["Ongeldig antwoord van de server. Probeer het alstublieft opnieuw."],"Failed to disconnect Stripe account.":["Het is niet gelukt om de Stripe-account los te koppelen."],"Webhook created successfully!":["Webhook succesvol aangemaakt!"],"Select Currency":["Selecteer valuta"],"Select the default currency for payment forms.":["Selecteer de standaardvaluta voor betalingsformulieren."],"Connection Status":["Verbindingsstatus"],"Disconnect Stripe Account":["Stripe-account loskoppelen"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["Weet u zeker dat u uw Stripe-account wilt loskoppelen? Dit zal alle actieve betalingen, abonnementen en formuliertransacties die aan dit account zijn gekoppeld, stoppen."],"Disconnect":["Verbreken"],"Disconnecting\u2026":["Verbinding verbreken\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook succesvol verbonden, alle Stripe-evenementen worden gevolgd."],"Connect your Stripe account to start accepting payments through your forms.":["Verbind uw Stripe-account om betalingen via uw formulieren te accepteren."],"Connect to Stripe":["Verbinden met Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Maak veilig verbinding met Stripe met slechts een paar klikken om betalingen te accepteren!"],"Set the total number of submissions allowed for this form.":["Stel het totale aantal toegestane inzendingen voor dit formulier in."],"Payment Methods":["Betaalmethoden"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["Met de testmodus kunt u betalingen verwerken zonder echte kosten. Schakel over naar de Live-modus voor daadwerkelijke transacties."],"General Payment Settings":["Algemene betalingsinstellingen"],"These settings apply to all payment gateways.":["Deze instellingen zijn van toepassing op alle betalingsgateways."],"Stripe Settings":["Stripe-instellingen"],"Left ($100)":["Links ($100)"],"Right (100$)":["Rechts (100$)"],"Left Space ($ 100)":["Linker ruimte ($ 100)"],"Right Space (100 $)":["Rechterruimte (100 $)"],"Currency Sign Position":["Positie van het valutateken"],"Select the position of the currency symbol relative to the amount.":["Selecteer de positie van het valutasymbool ten opzichte van het bedrag."],"Learn":["Leren"],"Enable email summaries":["E-mailoverzichten inschakelen"],"Enable IP logging":["IP-logboek inschakelen"],"Turn on Admin Notification from here.":["Zet hier de beheerdersmelding aan."],"New":["Nieuw"],"Send entries to 100+ popular apps.":["Verzend inzendingen naar meer dan 100 populaire apps."],"Build automated workflows that run instantly.":["Bouw geautomatiseerde workflows die direct worden uitgevoerd."],"Create custom app integrations using our Custom App feature.":["Maak aangepaste app-integraties met behulp van onze functie Aangepaste App."],"Keep your tools in sync automatically.":["Houd je gereedschap automatisch gesynchroniseerd."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Hiermee wordt OttoKit op je WordPress-site ge\u00efnstalleerd en geactiveerd om automatiseringsfuncties mogelijk te maken."],"Automate Your Forms with OttoKit":["Automatiseer uw formulieren met OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Elke formulierinzending zou iets moeten activeren \u2014 een Slack-melding, een CRM-lead, een opvolg-e-mail of een nieuwe rij in Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Configureer AI-clientmachtigingen en MCP-serverinstellingen."],"View documentation":["Documentatie bekijken"],"Copy to clipboard":["Kopi\u00ebren naar klembord"],"Claude Desktop":["Claude Desktop"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) of %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["Claude Code"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (project) of ~\/.claude.json (globaal)"],"Cursor":["Cursor"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (project) of settings.json > mcp.servers (globaal)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml of config.json"],"Your client's MCP configuration file":["Het MCP-configuratiebestand van uw klant"],"Connect Your AI Client":["Verbind uw AI-client"],"AI Client":["AI-client"],"Create an Application Password \u2014 ":["Maak een applicatiewachtwoord aan \u2014"],"Open Application Passwords":["Open toepassingswachtwoorden"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Of gebruik deze CLI-opdracht om de server snel toe te voegen (je moet nog steeds de omgevingsvariabelen instellen):"],"Copy the JSON config below into: ":["Kopieer de JSON-configuratie hieronder naar:"],"Replace \"your-application-password\" with the password from Step 1.":["Vervang \"your-application-password\" door het wachtwoord uit Stap 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 het MCP-eindpunt van je site. WP_API_USERNAME \u2014 je WordPress-gebruikersnaam. WP_API_PASSWORD \u2014 het applicatiewachtwoord dat je hebt gegenereerd."],"View setup docs":["Bekijk de installatiehandleidingen"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["De MCP Adapter-plugin is ge\u00efnstalleerd maar niet actief. Activeer het om MCP-instellingen te configureren."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["De MCP Adapter-plugin is vereist om AI-clients met uw formulieren te verbinden. Download en installeer het vanaf GitHub en activeer het vervolgens."],"Download the latest release from":["Download de nieuwste release van"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Installeer de plugin via Plugins > Nieuwe plugin toevoegen > Plugin uploaden."],"Activate the MCP Adapter plugin.":["Activeer de MCP Adapter-plugin."],"Activating\u2026":["Activeren\u2026"],"Activate MCP Adapter":["Activeer MCP-adapter"],"Download MCP Adapter":["Download MCP Adapter"],"Experimental":["Experimenteel"],"Enable Abilities":["Vermogen inschakelen"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Registreer SureForms-mogelijkheden bij de WordPress Abilities API. Wanneer ingeschakeld, kunnen AI-clients uw formulieren en inzendingen opsommen, lezen, maken, bewerken en verwijderen. Wanneer uitgeschakeld, worden er geen mogelijkheden geregistreerd en kunnen AI-clients geen acties uitvoeren op uw formulieren."],"Abilities API \u2014 Edit":["Vaardigheden-API \u2014 Bewerken"],"Enable Edit Abilities":["Bewerkingsmogelijkheden inschakelen"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Wanneer ingeschakeld, kunnen AI-clients nieuwe formulieren maken, formuliertitels, velden en instellingen bijwerken, formulieren dupliceren en de status van inzendingen wijzigen. Wanneer uitgeschakeld, worden deze mogelijkheden uitgeschakeld en kunnen AI-clients alleen uw gegevens lezen."],"Abilities API \u2014 Delete":["Vaardigheden API \u2014 Verwijderen"],"Enable Delete Abilities":["Verwijdermogelijkheden inschakelen"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Wanneer ingeschakeld, kunnen AI-clients formulieren en invoer permanent verwijderen. Verwijderde gegevens kunnen niet worden hersteld. Wanneer uitgeschakeld, worden verwijdermogelijkheden uitgeschakeld en kunnen AI-clients geen gegevens verwijderen."],"MCP Server":["MCP-server"],"Enable MCP Server":["MCP-server inschakelen"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Maakt een speciale SureForms MCP-eindpunt aan waarmee AI-clients zoals Claude verbinding kunnen maken. Wanneer deze is uitgeschakeld, wordt het eindpunt verwijderd en kunnen externe AI-clients geen SureForms-mogelijkheden ontdekken of oproepen."],"Learn more":["Meer informatie"],"MCP Adapter Required":["MCP-adapter vereist"],"Heading 1":["Kop 1"],"Heading 2":["Kop 2"],"Heading 3":["Kop 3"],"Heading 4":["Kop 4"],"Heading 5":["Kop 5"],"Heading 6":["Kop 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Configureer de Google Maps API-sleutel voor adres-autocompletie en kaartvoorbeeld."],"Help shape the future of SureForms":["Help de toekomst van SureForms vormgeven"],"Enable Google Address Autocomplete":["Google-adres automatisch aanvullen inschakelen"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Upgrade naar het SureForms Business Plan om Google-aangedreven adres-autocompletie met interactieve kaartvoorvertoning aan uw formulieren toe te voegen."],"Auto-suggest addresses as users type for faster, error-free submissions":["Stel automatisch adressen voor terwijl gebruikers typen voor snellere, foutloze inzendingen"],"Show an interactive map preview with draggable pin for precise locations":["Toon een interactieve kaartvoorvertoning met een sleepbare pin voor precieze locaties"],"Automatically populate address fields like city, state, and postal code":["Automatisch adresvelden zoals stad, staat en postcode invullen"],"This form is now closed as we've received all the entries.":["Dit formulier is nu gesloten omdat we alle inzendingen hebben ontvangen."],"Thank you for contacting us! We will be in touch with you shortly.":["Bedankt dat u contact met ons heeft opgenomen! We nemen binnenkort contact met u op."],"Saving\u2026":["Opslaan\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Wanneer ingeschakeld, zal dit formulier het IP-adres van de gebruiker, de naam van de browser en de naam van het apparaat niet opslaan in de inzendingen."],"Form data":["Formuliergegevens"],"Unsaved changes":["Niet-opgeslagen wijzigingen"],"Keep editing":["Blijf bewerken"],"Global Defaults":["Globale Standaarden"],"Form Restrictions":["Formulierbeperkingen"],"Configure default settings that apply to newly created forms.":["Stel de standaardinstellingen in die van toepassing zijn op nieuw aangemaakte formulieren."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Verzamel niet-gevoelige informatie van uw website, zoals de gebruikte PHP-versie en functies, om ons te helpen bugs sneller op te lossen, slimmere beslissingen te nemen en functies te bouwen die echt belangrijk voor u zijn."],"Failed to load pages. Please refresh and try again.":["Het laden van pagina's is mislukt. Vernieuw de pagina en probeer het opnieuw."],"Failed to load settings. Please refresh and try again.":["Het laden van de instellingen is mislukt. Vernieuw de pagina en probeer het opnieuw."],"Form Validation fields cannot be left blank.":["Formulier validatievelden mogen niet leeg worden gelaten."],"Recipient email is required when email summaries are enabled.":["Ontvanger e-mail is vereist wanneer e-mailoverzichten zijn ingeschakeld."],"Please enter a valid recipient email.":["Voer een geldig e-mailadres van de ontvanger in."],"Settings saved.":["Instellingen opgeslagen."],"Failed to save settings.":["Opslaan van instellingen mislukt."],"Some settings failed to save. Please retry.":["Sommige instellingen konden niet worden opgeslagen. Probeer het opnieuw."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Sommige velden hebben niet-opgeslagen wijzigingen. Verwijder ze om door te gaan, of blijf om je wijzigingen op te slaan."],"Discard & switch":["Weggooien & overschakelen"],"Import":["Importeren"],"Migration":["Migratie"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importeer formulieren van Contact Form 7, WPForms, Gravity Forms en andere plugins in SureForms."],"Could not generate the import preview.":["Kon de importvoorbeeldweergave niet genereren."],"Import failed. Please try again or check your error logs.":["Importeren mislukt. Probeer het opnieuw of controleer uw foutlogboeken."],"Go back":["Ga terug"],"Update & import":["Bijwerken & importeren"],"Confirm & import":["Bevestigen en importeren"],"Form #%s":["Formulier #%s"],"%d field will import":["%d veld zal worden ge\u00efmporteerd"],"Some fields can't be migrated yet":["Sommige velden kunnen nog niet worden gemigreerd"],"These fields will be skipped - add them manually after the form is created:":["Deze velden worden overgeslagen - voeg ze handmatig toe nadat het formulier is aangemaakt:"],"Some forms could not be parsed":["Sommige formulieren konden niet worden geparsed"],"Update existing":["Bestaande bijwerken"],"Create a new copy":["Maak een nieuwe kopie"],"Could not load forms for this source.":["Kon formulieren voor deze bron niet laden."],"(untitled form)":["(naamloos formulier)"],"Previously imported":["Eerder ge\u00efmporteerd"],"Open existing SureForms form in a new tab":["Open bestaande SureForms-formulier in een nieuw tabblad"],"On re-import":["Bij herimporteren"],"No forms found in this plugin.":["Geen formulieren gevonden in deze plugin."],"%1$d of %2$d form selected":["%1$d van %2$d formulier geselecteerd"],"Preview update":["Voorbeeld bijwerken"],"Preview import":["Voorbeeld importeren"],"Migration complete":["Migratie voltooid"],"Nothing was imported":["Niets is ge\u00efmporteerd"],"%d form was imported into SureForms.":["%d formulier is ge\u00efmporteerd in SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["Geen van de geselecteerde formulieren kon worden gemigreerd. Zie de onderstaande waarschuwingen voor details."],"Imported forms":["Ge\u00efmporteerde formulieren"],"Edit in SureForms":["Bewerken in SureForms"],"Some fields were skipped during import":["Er zijn enkele velden overgeslagen tijdens het importeren"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Voeg deze handmatig toe in de formuliereditor - ze hebben nog geen SureForms-equivalent:"],"Some forms failed to import":["Sommige formulieren konden niet worden ge\u00efmporteerd"],"Import more forms":["Meer formulieren importeren"],"Could not load the list of importable plugins.":["Kon de lijst met importeerbare plug-ins niet laden."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Er zijn geen ondersteunde formulier-plugins actief op deze site. Activeer er een (zoals Contact Form 7) met ten minste \u00e9\u00e9n formulier om het in SureForms te importeren."],"Plugin":["Invoegtoepassing"],"%d form":["%d formulier"],"No forms":["Geen formulieren"],"Multiple choice":["Meerkeuze"],"Consent":["Toestemming"],"The image uploaded but could not be inserted. Please try again.":["De afbeelding is ge\u00fcpload, maar kon niet worden ingevoegd. Probeer het opnieuw."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["De afbeelding kon niet worden ge\u00fcpload. Het kan te groot zijn, of u heeft mogelijk geen toestemming om bestanden te uploaden."],"Please choose an image file.":["Kies een afbeeldingsbestand."],"Show views and conversion rate":["Toon weergaven en conversieratio"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Voegt de kolommen Weergaven en Conversieratio toe aan de Formulierenlijst. Een weergave wordt eenmaal per paginabezoek geteld wanneer het formulier op het scherm verschijnt, en de conversieratio is het aandeel van die weergaven dat eindigde in een inzending. Het tellen begint de eerste keer dat u dit inschakelt, dus inzendingen die daarvoor zijn ontvangen, worden niet meegeteld voor de ratio. Het daarna uitschakelen verbergt alleen de kolommen \u2014 het tellen gaat door, zodat de cijfers up-to-date zijn als u het weer inschakelt."],"Log cleared.":["Log gewist."],"Could not clear the log.":["Kon de log niet wissen."],"Enable logs":["Logs inschakelen"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Registreert formulierindieningsfouten die door de browser worden gerapporteerd, zodat je de log naar ondersteuning kunt sturen in plaats van de console te lezen. Er wordt niets geschreven terwijl je formulieren werken, en ingediende waarden worden nooit opgeslagen."],"Download log":["Log downloaden"],"Confirm delete":["Verwijderen bevestigen"],"Log is full \u2014 download and clear it to keep recording.":["Log is vol \u2014 download en wis het om te blijven opnemen."],"Form Views & Conversion":["Formulierweergaven & Conversie"],"Logs":["Logs"],"Quill heading picker: default paragraph style\u0004Normal":["Normaal"]}}} \ No newline at end of file +{"translation-revision-date":"2024-12-13T12:33:48+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Dashboard"],"Settings":["Instellingen"],"Entries":["Inzendingen"],"Status":["Status"],"Form":["Formulier"],"Activated":["Geactiveerd"],"Activate":["Activeren"],"Address":["Adres"],"Checkbox":["Selectievakje"],"Dropdown":["Keuzemenu"],"Email":["E-mail"],"Number":["Nummer"],"Phone":["Telefoon"],"Textarea":["Tekstvak"],"Monday":["Maandag"],"Forms":["Formulieren"],"New Form Submission - %s":["Nieuwe formulierinzending - %s"],"GitHub":["GitHub"],"(no title)":["(geen titel)"],"General":["Algemeen"],"No tags available":["Geen tags beschikbaar"],"Back":["Terug"],"Generic tags":["Algemene tags"],"Other":["Anders"],"Confirm":["Bevestigen"],"Cancel":["Annuleren"],"Install":["Installeren"],"Plugin Installation failed, Please try again later.":["Installatie van de plugin mislukt, probeer het later opnieuw."],"Plugin activation failed, Please try again later.":["Plug-in activering mislukt, probeer het later opnieuw."],"Integrations":["Integraties"],"What's New?":["Wat is er nieuw?"],"Core":["Kern"],"Unlicensed":["Ongeautoriseerd"],"Connecting\u2026":["Verbinden\u2026"],"Install & Activate":["Installeren & Activeren"],"Compliance Settings":["Instellingen voor naleving"],"Enable GDPR Compliance":["Schakel GDPR-naleving in"],"Never store entry data after form submission":["Sla nooit invoergegevens op na het indienen van het formulier"],"When enabled this form will never store Entries.":["Wanneer ingeschakeld, zal dit formulier nooit inzendingen opslaan."],"Automatically delete entries":["Automatisch items verwijderen"],"When enabled this form will automatically delete entries after a certain period of time.":["Wanneer ingeschakeld, zal dit formulier automatisch inzendingen na een bepaalde periode verwijderen."],"Entries older than the days set will be deleted automatically.":["Inzendingen ouder dan de ingestelde dagen worden automatisch verwijderd."],"Visual":["Visueel"],"HTML":["HTML"],"All Data":["Alle gegevens"],"Add Shortcode":["Voeg shortcode toe"],"Form input tags":["Formulierveldlabels"],"Comma separated values are also accepted.":["Door komma's gescheiden waarden worden ook geaccepteerd."],"Email Notification":["E-mailmelding"],"Name":["Naam"],"Send Email To":["E-mail verzenden naar"],"Subject":["Onderwerp"],"CC":["CC"],"BCC":["BCC"],"Reply To":["Antwoord aan"],"Add Key":["Sleutel toevoegen"],"Add Value":["Waarde toevoegen"],"Add":["Toevoegen"],"Confirmation Message":["Bevestigingsbericht"],"After Form Submission":["Na het indienen van het formulier"],"Hide Form":["Formulier verbergen"],"Reset Form":["Formulier opnieuw instellen"],"Custom URL":["Aangepaste URL"],"Add Query Parameters":["Queryparameters toevoegen"],"Select if you want to add key-value pairs for form fields to include in query parameters":["Selecteer of u sleutel-waardeparen wilt toevoegen voor formuliervelden om op te nemen in queryparameters"],"Query Parameters":["Queryparameters"],"Success Message":["Succesbericht"],"Redirect":["Doorsturen"],"Redirect to":["Doorsturen naar"],"Page":["Pagina"],"Form Confirmation":["Formulierbevestiging"],"Confirmation Type":["Bevestigingstype"],"Clear":["Duidelijk"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Onzichtbaar"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Validaties"],"Spam Protection":["Spam Bescherming"],"If this option is turned on, the user's IP address will be saved with the form data":["Als deze optie is ingeschakeld, wordt het IP-adres van de gebruiker samen met de formuliergegevens opgeslagen"],"Enable Honeypot Security":["Honeypot-beveiliging inschakelen"],"Enable Honeypot Security for better spam protection":["Schakel Honeypot-beveiliging in voor betere spambeveiliging"],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s vertegenwoordigt het minimum aantal selecties dat nodig is. Bijvoorbeeld: \"Minimaal 2 selecties zijn vereist.\""],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s vertegenwoordigt het maximale aantal toegestane selecties. Bijvoorbeeld: \"Maximaal 4 selecties zijn toegestaan.\""],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s vertegenwoordigt de minimale keuzes die nodig zijn. Bijvoorbeeld: \"Minimaal 1 selectie is vereist.\""],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s vertegenwoordigt het maximale aantal toegestane keuzes. Bijvoorbeeld: \"Maximaal 3 selecties zijn toegestaan.\""]," Error Message":["Foutmelding"],"Email Summaries":["E-mailoverzichten"],"Tuesday":["Dinsdag"],"Wednesday":["Woensdag"],"Thursday":["Donderdag"],"Friday":["Vrijdag"],"Saturday":["Zaterdag"],"Sunday":["Zondag"],"Schedule Reports":["Rapporten plannen"],"Auto":["Auto"],"Light":["Licht"],"Dark":["Donker"],"Turnstile":["Draaikruis"],"Get Keys":["Verkrijg sleutels"],"Documentation":["Documentatie"],"Site Key":["Sitecode"],"Secret Key":["Geheime Sleutel"],"Cloudflare Turnstile":["Cloudflare Turnstile"],"Appearance Mode":["Weergavemodus"],"Text":["Tekst"],"Test Email":["Test e-mail"],"IP Logging":["IP-logboek"],"Honeypot":["Honeypot"],"Confirmation Email Mismatch Message":["Bevestigingsmail komt niet overeen bericht"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s vertegenwoordigt de minimale invoerwaarde. Bijvoorbeeld: \"Minimale waarde is 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s vertegenwoordigt de maximale invoerwaarde. Bijvoorbeeld: \"Maximale waarde is 100.\""],"OttoKit":["OttoKit"],"Connect with OttoKit":["Verbind met OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Het huidige 'Van E-mailadres' komt niet overeen met de domeinnaam van uw website (%1$s). Dit kan ervoor zorgen dat uw notificatie-e-mails worden geblokkeerd of als spam worden gemarkeerd. Probeer in plaats daarvan een Van-adres te gebruiken dat overeenkomt met uw website-domein (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Het huidige 'Van E-mailadres' komt niet overeen met de domeinnaam van uw website (%s). Dit kan ervoor zorgen dat uw notificatie-e-mails worden geblokkeerd of als spam worden gemarkeerd."],"We strongly recommend that you install the free ":["We raden ten zeerste aan dat u de gratis installeert"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["plugin! De Setup Wizard maakt het gemakkelijk om je e-mails te repareren."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Probeer afwisselend een Van-adres te gebruiken dat overeenkomt met uw website-domein (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Voer een geldig e-mailadres in. Uw meldingen worden niet verzonden als het veld niet correct is ingevuld."],"From Name":["Van Naam"],"From Email":["Van e-mail"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Het huidige 'Van E-mailadres' komt mogelijk niet overeen met de domeinnaam van uw website (%1$s). Dit kan ervoor zorgen dat uw notificatie-e-mails worden geblokkeerd of als spam worden gemarkeerd. Probeer in plaats daarvan een Van-adres te gebruiken dat overeenkomt met uw website domein (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Het huidige 'Van E-mailadres' komt mogelijk niet overeen met de domeinnaam van uw website (%s). Dit kan ervoor zorgen dat uw notificatie-e-mails worden geblokkeerd of als spam worden gemarkeerd."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Klaar om verder te gaan dan het gratis plan?"],"Upgrade now":["Nu upgraden"],"and unlock the full power of SureForms!":["en ontgrendel de volledige kracht van SureForms!"],"Upgrade SureForms":["Upgrade SureForms"],"Upgrade Now":["Nu upgraden"],"Entries older than the selected days will be deleted.":["Inzendingen ouder dan de geselecteerde dagen worden verwijderd."],"Entries Time Period":["Invoerperiode"],"Notifications can use only one From Email so please enter a single address.":["Meldingen kunnen slechts \u00e9\u00e9n Van E-mailadres gebruiken, dus voer alstublieft \u00e9\u00e9n enkel adres in."],"Select Page to redirect":["Selecteer pagina om te omleiden"],"Search for a page":["Zoek naar een pagina"],"Select a page":["Selecteer een pagina"],"Form Validation":["Formuliercontrole"],"Required Error Messages":["Vereiste foutmeldingen"],"Other Error Messages":["Andere foutmeldingen"],"Input Field Unique":["Uniek invoerveld"],"Email Field Unique":["E-mailveld uniek"],"Invalid URL":["Ongeldige URL"],"Phone Field Unique":["Telefoonveld Uniek"],"Invalid Field Number Block":["Ongeldige Veldnummer Blok"],"Invalid Email":["Ongeldig e-mailadres"],"Number Minimum Value":["Nummer Minimumwaarde"],"Number Maximum Value":["Maximale waarde van het nummer"],"Dropdown Minimum Selections":["Minimale selecties in dropdown"],"Dropdown Maximum Selections":["Maximale selecties in dropdown"],"Multiple Choice Minimum Selections":["Meerdere keuzes minimumselecties"],"Multiple Choice Maximum Selections":["Meerdere Keuzes Maximale Selecties"],"Input Field":["Invoerveld"],"Email Field":["E-mailveld"],"URL Field":["URL-veld"],"Phone Field":["Telefoonveld"],"Textarea Field":["Tekstvakveld"],"Checkbox Field":["Selectievakjeveld"],"Dropdown Field":["Keuzelijstveld"],"Multiple Choice Field":["Meerkeuzeveld"],"Address Field":["Adresveld"],"Number Field":["Nummer veld"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Om de reCAPTCHA-functie op uw SureForms in te schakelen, schakelt u de reCAPTCHA-optie in uw blokinstellingen in en selecteert u de versie. Voeg hier de Google reCAPTCHA-secret en site key toe. reCAPTCHA wordt aan uw pagina toegevoegd aan de voorkant."],"Enter your %s here":["Voer hier uw %s in"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Om hCAPTCHA in te schakelen, voeg uw site-sleutel en geheime sleutel toe. Configureer deze instellingen binnen het individuele formulier."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Om Cloudflare Turnstile in te schakelen, voeg uw site-sleutel en geheime sleutel toe. Configureer deze instellingen binnen het individuele formulier."],"Save":["Opslaan"],"Anonymous Analytics":["Anonieme Analytics"],"Learn More":["Meer informatie"],"Admin Notification":["Beheerdersmelding"],"Enable Admin Notification":["Beheerdermelding inschakelen"],"Admin notifications keep you informed about new form entries since your last visit.":["Beheerdersmeldingen houden je op de hoogte van nieuwe formulierinzendingen sinds je laatste bezoek."],"Skip":["Overslaan"],"Continue":["Doorgaan"],"Maximum Number of Entries":["Maximaal aantal vermeldingen"],"Maximum Entries":["Maximale invoer"],"Response Description After Maximum Entries":["Beschrijving van de reactie na maximale invoer"],"Get Started":["Beginnen"],"Integration":["Integratie"],"Connect Native Integrations with SureForms":["Verbind native integraties met SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Ontgrendel krachtige integraties in het Premium-plan om je workflows te automatiseren en SureForms direct te verbinden met je favoriete tools."],"Send form submissions straight to CRMs, email, and marketing platforms":["Stuur formulierinzendingen rechtstreeks naar CRM's, e-mail en marketingplatforms"],"Automate repetitive tasks with seamless data syncing":["Automatiseer repetitieve taken met naadloze gegevenssynchronisatie"],"Access exclusive native integrations for faster workflows":["Toegang tot exclusieve native integraties voor snellere workflows"],"Expected format for emails - email@sureforms.com or John Doe ":["Verwacht formaat voor e-mails - email@sureforms.com of John Doe "],"Payments":["Betalingen"],"Stripe account disconnected successfully.":["Stripe-account succesvol losgekoppeld."],"Failed to create webhook.":["Het is niet gelukt om de webhook te maken."],"Failed to connect to Stripe.":["Verbinding met Stripe mislukt."],"Webhook":["Webhook"],"Knowledge Base":["Kennisbank"],"What\u2019s New":["Wat is er nieuw"],"out of":["uit"],"No entries found":["Geen items gevonden"],"delete":["verwijderen"],"Please type \"%s\" in the input box":["Typ alstublieft \"%s\" in het invoerveld"],"To confirm, type \"%s\" in the box below:":["Om te bevestigen, typ \"%s\" in het vak hieronder:"],"Type \"%s\"":["Typ \"%s\""],"Go to OttoKit Settings":["Ga naar OttoKit-instellingen"],"USD - US Dollar":["USD - Amerikaanse dollar"],"Payment Mode":["Betaalwijze"],"Test Mode":["Testmodus"],"Live Mode":["Live-modus"],"Action":["Actie"],"General Settings":["Algemene instellingen"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Stel e-mailsamenvattingen, beheerderswaarschuwingen en gegevensvoorkeuren in om uw formulieren eenvoudig te beheren."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Pas standaardfoutmeldingen aan die worden weergegeven wanneer gebruikers ongeldige of onvolledige formulierinvoer indienen."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Schakel spambeveiliging voor uw formulieren in met behulp van CAPTCHA-diensten of honeypot-beveiliging."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Verbind en beheer uw betalingsgateways om veilig transacties via uw formulieren te accepteren."],"1% transaction and payment gateway fees apply.":["1% transactiekosten en kosten voor de betalingsgateway zijn van toepassing."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["2,9% transactiekosten en kosten voor de betalingsgateway zijn van toepassing. Activeer de licentie om de transactiekosten te verlagen."],"2.9% transaction and payment gateway fees apply.":["Er zijn 2,9% transactiekosten en kosten voor de betalingsgateway van toepassing."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Bezoek %1$s, verwijder een ongebruikte webhook en klik vervolgens hieronder om het opnieuw te proberen."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms kon geen webhook maken omdat je Stripe-account geen gratis slots meer heeft. Webhooks zijn nodig om updates over betalingen te ontvangen."],"Stripe Dashboard":["Stripe-dashboard"],"Creating\u2026":["Aan het cre\u00ebren\u2026"],"Create Webhook":["Webhook maken"],"Successfully connected to Stripe!":["Succesvol verbonden met Stripe!"],"Invalid response from server. Please try again.":["Ongeldig antwoord van de server. Probeer het alstublieft opnieuw."],"Failed to disconnect Stripe account.":["Het is niet gelukt om de Stripe-account los te koppelen."],"Webhook created successfully!":["Webhook succesvol aangemaakt!"],"Select Currency":["Selecteer valuta"],"Select the default currency for payment forms.":["Selecteer de standaardvaluta voor betalingsformulieren."],"Connection Status":["Verbindingsstatus"],"Disconnect Stripe Account":["Stripe-account loskoppelen"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["Weet u zeker dat u uw Stripe-account wilt loskoppelen? Dit zal alle actieve betalingen, abonnementen en formuliertransacties die aan dit account zijn gekoppeld, stoppen."],"Disconnect":["Verbreken"],"Disconnecting\u2026":["Verbinding verbreken\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook succesvol verbonden, alle Stripe-evenementen worden gevolgd."],"Connect your Stripe account to start accepting payments through your forms.":["Verbind uw Stripe-account om betalingen via uw formulieren te accepteren."],"Connect to Stripe":["Verbinden met Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Maak veilig verbinding met Stripe met slechts een paar klikken om betalingen te accepteren!"],"Set the total number of submissions allowed for this form.":["Stel het totale aantal toegestane inzendingen voor dit formulier in."],"Payment Methods":["Betaalmethoden"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["Met de testmodus kunt u betalingen verwerken zonder echte kosten. Schakel over naar de Live-modus voor daadwerkelijke transacties."],"General Payment Settings":["Algemene betalingsinstellingen"],"These settings apply to all payment gateways.":["Deze instellingen zijn van toepassing op alle betalingsgateways."],"Stripe Settings":["Stripe-instellingen"],"Left ($100)":["Links ($100)"],"Right (100$)":["Rechts (100$)"],"Left Space ($ 100)":["Linker ruimte ($ 100)"],"Right Space (100 $)":["Rechterruimte (100 $)"],"Currency Sign Position":["Positie van het valutateken"],"Select the position of the currency symbol relative to the amount.":["Selecteer de positie van het valutasymbool ten opzichte van het bedrag."],"Learn":["Leren"],"Enable email summaries":["E-mailoverzichten inschakelen"],"Enable IP logging":["IP-logboek inschakelen"],"Turn on Admin Notification from here.":["Zet hier de beheerdersmelding aan."],"New":["Nieuw"],"Send entries to 100+ popular apps.":["Verzend inzendingen naar meer dan 100 populaire apps."],"Build automated workflows that run instantly.":["Bouw geautomatiseerde workflows die direct worden uitgevoerd."],"Create custom app integrations using our Custom App feature.":["Maak aangepaste app-integraties met behulp van onze functie Aangepaste App."],"Keep your tools in sync automatically.":["Houd je gereedschap automatisch gesynchroniseerd."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Hiermee wordt OttoKit op je WordPress-site ge\u00efnstalleerd en geactiveerd om automatiseringsfuncties mogelijk te maken."],"Automate Your Forms with OttoKit":["Automatiseer uw formulieren met OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Elke formulierinzending zou iets moeten activeren \u2014 een Slack-melding, een CRM-lead, een opvolg-e-mail of een nieuwe rij in Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Configureer AI-clientmachtigingen en MCP-serverinstellingen."],"View documentation":["Documentatie bekijken"],"Copy to clipboard":["Kopi\u00ebren naar klembord"],"Claude Desktop":["Claude Desktop"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) of %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["Claude Code"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (project) of ~\/.claude.json (globaal)"],"Cursor":["Cursor"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (project) of settings.json > mcp.servers (globaal)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml of config.json"],"Your client's MCP configuration file":["Het MCP-configuratiebestand van uw klant"],"Connect Your AI Client":["Verbind uw AI-client"],"AI Client":["AI-client"],"Create an Application Password \u2014 ":["Maak een applicatiewachtwoord aan \u2014"],"Open Application Passwords":["Open toepassingswachtwoorden"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Of gebruik deze CLI-opdracht om de server snel toe te voegen (je moet nog steeds de omgevingsvariabelen instellen):"],"Copy the JSON config below into: ":["Kopieer de JSON-configuratie hieronder naar:"],"Replace \"your-application-password\" with the password from Step 1.":["Vervang \"your-application-password\" door het wachtwoord uit Stap 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 het MCP-eindpunt van je site. WP_API_USERNAME \u2014 je WordPress-gebruikersnaam. WP_API_PASSWORD \u2014 het applicatiewachtwoord dat je hebt gegenereerd."],"View setup docs":["Bekijk de installatiehandleidingen"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["De MCP Adapter-plugin is ge\u00efnstalleerd maar niet actief. Activeer het om MCP-instellingen te configureren."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["De MCP Adapter-plugin is vereist om AI-clients met uw formulieren te verbinden. Download en installeer het vanaf GitHub en activeer het vervolgens."],"Download the latest release from":["Download de nieuwste release van"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Installeer de plugin via Plugins > Nieuwe plugin toevoegen > Plugin uploaden."],"Activate the MCP Adapter plugin.":["Activeer de MCP Adapter-plugin."],"Activating\u2026":["Activeren\u2026"],"Activate MCP Adapter":["Activeer MCP-adapter"],"Download MCP Adapter":["Download MCP Adapter"],"Experimental":["Experimenteel"],"Enable Abilities":["Vermogen inschakelen"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Registreer SureForms-mogelijkheden bij de WordPress Abilities API. Wanneer ingeschakeld, kunnen AI-clients uw formulieren en inzendingen opsommen, lezen, maken, bewerken en verwijderen. Wanneer uitgeschakeld, worden er geen mogelijkheden geregistreerd en kunnen AI-clients geen acties uitvoeren op uw formulieren."],"Abilities API \u2014 Edit":["Vaardigheden-API \u2014 Bewerken"],"Enable Edit Abilities":["Bewerkingsmogelijkheden inschakelen"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Wanneer ingeschakeld, kunnen AI-clients nieuwe formulieren maken, formuliertitels, velden en instellingen bijwerken, formulieren dupliceren en de status van inzendingen wijzigen. Wanneer uitgeschakeld, worden deze mogelijkheden uitgeschakeld en kunnen AI-clients alleen uw gegevens lezen."],"Abilities API \u2014 Delete":["Vaardigheden API \u2014 Verwijderen"],"Enable Delete Abilities":["Verwijdermogelijkheden inschakelen"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Wanneer ingeschakeld, kunnen AI-clients formulieren en invoer permanent verwijderen. Verwijderde gegevens kunnen niet worden hersteld. Wanneer uitgeschakeld, worden verwijdermogelijkheden uitgeschakeld en kunnen AI-clients geen gegevens verwijderen."],"MCP Server":["MCP-server"],"Enable MCP Server":["MCP-server inschakelen"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Maakt een speciale SureForms MCP-eindpunt aan waarmee AI-clients zoals Claude verbinding kunnen maken. Wanneer deze is uitgeschakeld, wordt het eindpunt verwijderd en kunnen externe AI-clients geen SureForms-mogelijkheden ontdekken of oproepen."],"Learn more":["Meer informatie"],"MCP Adapter Required":["MCP-adapter vereist"],"Heading 1":["Kop 1"],"Heading 2":["Kop 2"],"Heading 3":["Kop 3"],"Heading 4":["Kop 4"],"Heading 5":["Kop 5"],"Heading 6":["Kop 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Configureer de Google Maps API-sleutel voor adres-autocompletie en kaartvoorbeeld."],"Help shape the future of SureForms":["Help de toekomst van SureForms vormgeven"],"Enable Google Address Autocomplete":["Google-adres automatisch aanvullen inschakelen"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Upgrade naar het SureForms Business Plan om Google-aangedreven adres-autocompletie met interactieve kaartvoorvertoning aan uw formulieren toe te voegen."],"Auto-suggest addresses as users type for faster, error-free submissions":["Stel automatisch adressen voor terwijl gebruikers typen voor snellere, foutloze inzendingen"],"Show an interactive map preview with draggable pin for precise locations":["Toon een interactieve kaartvoorvertoning met een sleepbare pin voor precieze locaties"],"Automatically populate address fields like city, state, and postal code":["Automatisch adresvelden zoals stad, staat en postcode invullen"],"This form is now closed as we've received all the entries.":["Dit formulier is nu gesloten omdat we alle inzendingen hebben ontvangen."],"Thank you for contacting us! We will be in touch with you shortly.":["Bedankt dat u contact met ons heeft opgenomen! We nemen binnenkort contact met u op."],"Saving\u2026":["Opslaan\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Wanneer ingeschakeld, zal dit formulier het IP-adres van de gebruiker, de naam van de browser en de naam van het apparaat niet opslaan in de inzendingen."],"Form data":["Formuliergegevens"],"Unsaved changes":["Niet-opgeslagen wijzigingen"],"Keep editing":["Blijf bewerken"],"Global Defaults":["Globale Standaarden"],"Form Restrictions":["Formulierbeperkingen"],"Configure default settings that apply to newly created forms.":["Stel de standaardinstellingen in die van toepassing zijn op nieuw aangemaakte formulieren."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Verzamel niet-gevoelige informatie van uw website, zoals de gebruikte PHP-versie en functies, om ons te helpen bugs sneller op te lossen, slimmere beslissingen te nemen en functies te bouwen die echt belangrijk voor u zijn."],"Failed to load pages. Please refresh and try again.":["Het laden van pagina's is mislukt. Vernieuw de pagina en probeer het opnieuw."],"Failed to load settings. Please refresh and try again.":["Het laden van de instellingen is mislukt. Vernieuw de pagina en probeer het opnieuw."],"Form Validation fields cannot be left blank.":["Formulier validatievelden mogen niet leeg worden gelaten."],"Recipient email is required when email summaries are enabled.":["Ontvanger e-mail is vereist wanneer e-mailoverzichten zijn ingeschakeld."],"Please enter a valid recipient email.":["Voer een geldig e-mailadres van de ontvanger in."],"Settings saved.":["Instellingen opgeslagen."],"Failed to save settings.":["Opslaan van instellingen mislukt."],"Some settings failed to save. Please retry.":["Sommige instellingen konden niet worden opgeslagen. Probeer het opnieuw."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Sommige velden hebben niet-opgeslagen wijzigingen. Verwijder ze om door te gaan, of blijf om je wijzigingen op te slaan."],"Discard & switch":["Weggooien & overschakelen"],"Import":["Importeren"],"Migration":["Migratie"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importeer formulieren van Contact Form 7, WPForms, Gravity Forms en andere plugins in SureForms."],"Could not generate the import preview.":["Kon de importvoorbeeldweergave niet genereren."],"Import failed. Please try again or check your error logs.":["Importeren mislukt. Probeer het opnieuw of controleer uw foutlogboeken."],"Go back":["Ga terug"],"Update & import":["Bijwerken & importeren"],"Confirm & import":["Bevestigen en importeren"],"Form #%s":["Formulier #%s"],"%d field will import":["%d veld zal worden ge\u00efmporteerd"],"Some fields can't be migrated yet":["Sommige velden kunnen nog niet worden gemigreerd"],"These fields will be skipped - add them manually after the form is created:":["Deze velden worden overgeslagen - voeg ze handmatig toe nadat het formulier is aangemaakt:"],"Some forms could not be parsed":["Sommige formulieren konden niet worden geparsed"],"Update existing":["Bestaande bijwerken"],"Create a new copy":["Maak een nieuwe kopie"],"Could not load forms for this source.":["Kon formulieren voor deze bron niet laden."],"(untitled form)":["(naamloos formulier)"],"Previously imported":["Eerder ge\u00efmporteerd"],"Open existing SureForms form in a new tab":["Open bestaande SureForms-formulier in een nieuw tabblad"],"On re-import":["Bij herimporteren"],"No forms found in this plugin.":["Geen formulieren gevonden in deze plugin."],"%1$d of %2$d form selected":["%1$d van %2$d formulier geselecteerd"],"Preview update":["Voorbeeld bijwerken"],"Preview import":["Voorbeeld importeren"],"Migration complete":["Migratie voltooid"],"Nothing was imported":["Niets is ge\u00efmporteerd"],"%d form was imported into SureForms.":["%d formulier is ge\u00efmporteerd in SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["Geen van de geselecteerde formulieren kon worden gemigreerd. Zie de onderstaande waarschuwingen voor details."],"Imported forms":["Ge\u00efmporteerde formulieren"],"Edit in SureForms":["Bewerken in SureForms"],"Some fields were skipped during import":["Er zijn enkele velden overgeslagen tijdens het importeren"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Voeg deze handmatig toe in de formuliereditor - ze hebben nog geen SureForms-equivalent:"],"Some forms failed to import":["Sommige formulieren konden niet worden ge\u00efmporteerd"],"Import more forms":["Meer formulieren importeren"],"Could not load the list of importable plugins.":["Kon de lijst met importeerbare plug-ins niet laden."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Er zijn geen ondersteunde formulier-plugins actief op deze site. Activeer er een (zoals Contact Form 7) met ten minste \u00e9\u00e9n formulier om het in SureForms te importeren."],"Plugin":["Invoegtoepassing"],"%d form":["%d formulier"],"No forms":["Geen formulieren"],"Multiple choice":["Meerkeuze"],"Consent":["Toestemming"],"The image uploaded but could not be inserted. Please try again.":["De afbeelding is ge\u00fcpload, maar kon niet worden ingevoegd. Probeer het opnieuw."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["De afbeelding kon niet worden ge\u00fcpload. Het kan te groot zijn, of u heeft mogelijk geen toestemming om bestanden te uploaden."],"Please choose an image file.":["Kies een afbeeldingsbestand."],"Show views and conversion rate":["Toon weergaven en conversieratio"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Voegt de kolommen Weergaven en Conversieratio toe aan de Formulierenlijst. Een weergave wordt eenmaal per paginabezoek geteld wanneer het formulier op het scherm verschijnt, en de conversieratio is het aandeel van die weergaven dat eindigde in een inzending. Het tellen begint de eerste keer dat u dit inschakelt, dus inzendingen die daarvoor zijn ontvangen, worden niet meegeteld voor de ratio. Het daarna uitschakelen verbergt alleen de kolommen \u2014 het tellen gaat door, zodat de cijfers up-to-date zijn als u het weer inschakelt."],"Log cleared.":["Log gewist."],"Could not clear the log.":["Kon de log niet wissen."],"Enable logs":["Logs inschakelen"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Registreert formulierindieningsfouten die door de browser worden gerapporteerd, zodat je de log naar ondersteuning kunt sturen in plaats van de console te lezen. Er wordt niets geschreven terwijl je formulieren werken, en ingediende waarden worden nooit opgeslagen."],"Download log":["Log downloaden"],"Confirm delete":["Verwijderen bevestigen"],"Log is full \u2014 download and clear it to keep recording.":["Log is vol \u2014 download en wis het om te blijven opnemen."],"Form Views & Conversion":["Formulierweergaven & Conversie"],"Logs":["Logs"],"Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures.":["Weergaven en inzendingen door iedereen die de site kan bewerken, worden normaal weggelaten, zodat het testen van uw eigen formulieren deze cijfers niet verandert."],"Quill heading picker: default paragraph style\u0004Normal":["Normaal"]}}} \ No newline at end of file diff --git a/languages/sureforms-nl_NL-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json b/languages/sureforms-nl_NL-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json index 07826e531..2483096b4 100644 --- a/languages/sureforms-nl_NL-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json +++ b/languages/sureforms-nl_NL-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json @@ -1 +1 @@ -{"translation-revision-date":"2024-12-13T12:33:48+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Dashboard"],"Settings":["Instellingen"],"Entries":["Inzendingen"],"Activated":["Geactiveerd"],"Advanced Fields":["Geavanceerde velden"],"Select Form":["Selecteer formulier"],"Create New Form":["Nieuw formulier maken"],"Forms":["Formulieren"],"Copy":["Kopi\u00ebren"],"Business":["Zakelijk"],"Next":["Volgende"],"Back":["Terug"],"Cancel":["Annuleren"],"This is where your form views will appear":["Hier verschijnen uw formulierweergaven"],"Install":["Installeren"],"Plugin Installation failed, Please try again later.":["Installatie van de plugin mislukt, probeer het later opnieuw."],"Plugin activation failed, Please try again later.":["Plug-in activering mislukt, probeer het later opnieuw."],"What's New?":["Wat is er nieuw?"],"Core":["Kern"],"Unlicensed":["Ongeautoriseerd"],"Upgrade":["Upgrade"],"Webhooks":["Webhooks"],"Install & Activate":["Installeren & Activeren"],"Conditional Logic":["Conditionele logica"],"Premium":["Premium"],"Welcome to SureForms!":["Welkom bij SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms is een WordPress-plugin waarmee gebruikers mooie formulieren kunnen maken via een drag-and-drop-interface, zonder dat er code nodig is. Het integreert met de WordPress-blokeditor."],"Read Full Guide":["Lees de volledige gids"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Aangepaste WordPress-formulieren GEMAKKELIJK GEMAAKT"],"No Date":["Geen datum"],"Invalid Date":["Ongeldige datum"],"Ready to go beyond free plan?":["Klaar om verder te gaan dan het gratis plan?"],"Upgrade now":["Nu upgraden"],"and unlock the full power of SureForms!":["en ontgrendel de volledige kracht van SureForms!"],"Upgrade SureForms":["Upgrade SureForms"],"Open Support Ticket":["Ondersteuningsticket openen"],"Help Center":["Helpcentrum"],"Join our Community on Facebook":["Word lid van onze community op Facebook"],"Leave Us a Review":["Laat een recensie achter"],"Quick Access":["Snelle toegang"],"Upgrade Now":["Nu upgraden"],"Clear Filters":["Filters wissen"],"Unnamed Form":["Naamloos formulier"],"Forms Overview":["Overzicht van formulieren"],"Clear Form Filters":["Formulierfilters wissen"],"Clear Date Filters":["Wis datumfilters"],"Select Date Range":["Selecteer datumbereik"],"Apply":["Toepassen"],"Please wait for the data to load":["Wacht alstublieft tot de gegevens zijn geladen"],"No entries to display":["Geen items om weer te geven"],"Once you create a form and start receiving submissions, the data will appear here.":["Zodra je een formulier maakt en inzendingen begint te ontvangen, zullen de gegevens hier verschijnen."],"Free":["Gratis"],"All Forms":["Alle formulieren"],"Guided Setup":["Geleide installatie"],"Exit Guided Setup":["Geleide installatie afsluiten"],"Skip":["Overslaan"],"Build beautiful forms visually":["Bouw prachtige formulieren visueel"],"Works perfectly on mobile":["Werkt perfect op mobiel"],"Easy to connect with automation tools":["Eenvoudig te verbinden met automatiseringstools"],"Welcome to SureForms":["Welkom bij SureForms"],"Smart, Quick and Powerful Forms.":["Slimme, snelle en krachtige formulieren."],"Let's Get Started":["Laten we beginnen"],"Build up to 10 forms using AI":["Bouw tot 10 formulieren met behulp van AI"],"A secure and private connection":["Een veilige en priv\u00e9verbinding"],"Smart form drafts based on your input":["Slimme formulierontwerpen op basis van uw invoer"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Beginnen met een leeg formulier is niet altijd gemakkelijk. Onze AI kan helpen door een conceptformulier te maken op basis van wat je probeert te doen \u2014 dit bespaart je tijd en geeft je een duidelijke richting."],"To do this, you'll need to connect your account.":["Om dit te doen, moet je je account verbinden."],"Let AI Help You Build Smarter, Faster Forms":["Laat AI u helpen om slimmere, snellere formulieren te maken"],"Here's what that gives you:":["Dit is wat dat je oplevert:"],"Continue":["Doorgaan"],"Connect":["Verbinden"],"Works smoothly with forms made using SureForms":["Werkt soepel met formulieren gemaakt met SureForms"],"Helps your emails reach the inbox instead of spam":["Helpt uw e-mails de inbox te bereiken in plaats van de spam"],"Setup is straightforward, even if you're not technical":["De installatie is eenvoudig, zelfs als je niet technisch bent"],"Lightweight and easy to use without adding clutter":["Lichtgewicht en eenvoudig te gebruiken zonder rommel toe te voegen"],"Make Sure Your Emails Get Delivered":["Zorg ervoor dat uw e-mails worden afgeleverd"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["De meeste WordPress-sites hebben moeite om e-mails betrouwbaar te verzenden, wat betekent dat formulierinzendingen van uw site mogelijk uw inbox niet bereiken \u2014 of in de spam terechtkomen."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail is een eenvoudige SMTP-plug-in die ervoor zorgt dat je e-mails daadwerkelijk worden afgeleverd."],"What you will get:":["Wat je zult krijgen:"],"Install SureMail":["Installeer SureMail"],"AI Form Generation":["AI Formuliergeneratie"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["Ben je het beu om formulieren handmatig te maken? Laat AI het werk voor je doen. Beschrijf het gewoon en onze AI maakt in enkele seconden je perfecte formulier."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Breek complexe formulieren op in eenvoudige stappen, waardoor overweldiging wordt verminderd en voltooiingspercentages worden verhoogd. Leid gebruikers soepel door het proces"],"Conditional Fields":["Voorwaardelijke Velden"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Toon of verberg velden op basis van gebruikersantwoorden. Stel de juiste vragen en toon alleen wat nodig is om formulieren schoon en relevant te houden."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Verbeter uw formulieren met geavanceerde velden zoals multi-bestandsupload, beoordelingsvelden en datum- en tijdkiezers om rijkere, flexibele gegevens te verzamelen."],"Conversational Forms":["Gespreksvormen"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Maak formulieren die aanvoelen als een gesprek. E\u00e9n vraag tegelijk houdt gebruikers betrokken en maakt het invullen van formulieren eenvoudig."],"Digital Signatures":["Digitale handtekeningen"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Verzamel juridisch bindende digitale handtekeningen direct in uw formulieren voor overeenkomsten, goedkeuringen en contracten."],"Calculators":["Rekenmachines"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Voeg interactieve rekenmachines toe aan uw formulieren voor directe schattingen, offertes en berekeningen voor uw gebruikers."],"User Registration and Login":["Gebruikersregistratie en inloggen"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Sta bezoekers toe om zich te registreren en in te loggen op uw site. Nuttig voor lidmaatschappen, gemeenschappen of elke site die gebruikers toegang nodig heeft."],"PDF Generation Made Simple":["PDF-generatie eenvoudig gemaakt"],"Custom App":["Aangepaste app"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Verzamel gegevens, stuur ze naar externe applicaties voor verwerking en toon resultaten direct \u2014 alles naadloos ge\u00efntegreerd om dynamische, interactieve gebruikerservaringen te cre\u00ebren."],"Select Your Features":["Selecteer uw functies"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Krijg meer controle, snellere workflows en diepere aanpassingsmogelijkheden \u2014 allemaal ontworpen om je te helpen betere websites te bouwen met minder inspanning."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Geselecteerde functies vereisen %1$s - gebruik code %2$s om 10% korting te krijgen op elk plan."],"Copied":["Gekopieerd"],"Style your form to better match your site's design":["Stijl uw formulier zodat het beter bij het ontwerp van uw site past"],"Add spam protection to block common bot submissions":["Voeg spambeveiliging toe om veelvoorkomende botinzendingen te blokkeren"],"Get weekly email reports with a summary of form activity":["Ontvang wekelijkse e-mailrapporten met een samenvatting van de formulieractiviteit"],"You're All Set! \ud83d\ude80":["Je bent helemaal klaar! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Gebruik onze AI-formulierbouwer om snel aan de slag te gaan, of bouw je formulier vanaf nul als je al weet wat je nodig hebt. Je formulieren zijn klaar om te maken, te delen en te verbinden met je sitebezoekers."],"Final Touches That Make a Difference:":["Laatste details die het verschil maken:"],"Build Your First Form":["Bouw je eerste formulier"],"File Uploads":["Bestandsuploads"],"Signature & Rating":["Handtekening & Beoordeling"],"Calculation Forms":["Berekeningsformulieren"],"And Much More\u2026":["En nog veel meer\u2026"],"Upgrade to Pro":["Upgrade naar Pro"],"Unlock Premium Features":["Ontgrendel Premiumfuncties"],"Build Better Forms with SureForms":["Bouw betere formulieren met SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Voeg geavanceerde velden, conversatie-indelingen en slimme logica toe om formulieren te maken die gebruikers betrekken en betere gegevens vastleggen."],"SureForms Video Thumbnail":["SureForms Video Miniatuur"],"Payments":["Betalingen"],"Knowledge Base":["Kennisbank"],"What\u2019s New":["Wat is er nieuw"],"Importing\u2026":["Importeren\u2026"],"Learn":["Leren"],"Unable to complete action. Please try again.":["Actie kan niet worden voltooid. Probeer het opnieuw."],"Supercharge Your Workflow":["Geef je workflow een boost"],"Spam protection included":["Spam bescherming inbegrepen"],"Multistep Forms":["Meertrapsformulieren"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Stuur formulierinvoer direct naar elk extern systeem of eindpunt om geavanceerde workflows aan te sturen."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Zet formulierinvoeren automatisch om in schone, klaar-om-te-downloaden PDF's. Perfect voor archivering, delen, opslaan of het georganiseerd houden van zaken."],"Set up confirmation messages and email notifications for each entry":["Stel bevestigingsberichten en e-mailmeldingen in voor elke invoer"],"Something went wrong. Please try again.":["Er is iets misgegaan. Probeer het alstublieft opnieuw."],"Payment Forms":["Betalingsformulieren"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Ontvang betalingen direct via uw formulieren. Accepteer eenmalige en terugkerende betalingen naadloos."],"SureForms %s":["SureForms %s"],"First name is required.":["Voornaam is verplicht."],"Please enter a valid email address.":["Voer een geldig e-mailadres in."],"Email address is required.":["E-mailadres is vereist."],"This is required.":["Dit is vereist."],"Okay, just one last step\u2026":["Ok\u00e9, nog maar \u00e9\u00e9n laatste stap\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Help ons uw SureForms-ervaring aan te passen door iets over uzelf te delen."],"First Name":["Voornaam"],"Enter your first name":["Voer uw voornaam in"],"Last Name":["Achternaam"],"Enter your last name":["Voer uw achternaam in"],"Email Address":["E-mailadres"],"Enter your email address":["Voer uw e-mailadres in"],"Privacy Policy":["Privacybeleid"],"Finish":["Voltooien"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Blijf op de hoogte en help SureForms vorm te geven! Ontvang updates over functies en help ons SureForms te verbeteren door te delen hoe je de plugin gebruikt. Privacybeleid<\/a>."],"%d form ready":["%d formulier klaar"],"%d already imported":["%d al ge\u00efmporteerd"],"(unnamed source)":["(naamloze bron)"],"All forms already imported":["Alle formulieren zijn al ge\u00efmporteerd"],"Import forms":["Formulieren importeren"],"Import %d form":["%d formulier importeren"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Er is iets misgegaan tijdens het importeren. U kunt het opnieuw proberen, overslaan of Instellingen \u2192 Migratie openen."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Geen andere formulier-plugins gedetecteerd. U kunt op elk moment importeren via Instellingen \u2192 Migratie."],"Forms imported":["Formulieren ge\u00efmporteerd"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["%1$d formulier van %2$s is nu in SureForms, klaar om te publiceren, stijlen en verbinden."],"%d form imported":["%d formulier ge\u00efmporteerd"],"%d form could not be imported":["%d formulier kon niet worden ge\u00efmporteerd"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d veldtype werd niet ondersteund. U kunt het handmatig opnieuw opbouwen in SureForms."],"Bring your existing forms with you":["Breng uw bestaande formulieren mee"],"We detected forms in another plugin. Pick one to import into SureForms.":["We hebben formulieren in een andere plugin gedetecteerd. Kies er een om te importeren in SureForms."],"Choose a form plugin to import from":["Kies een formulierplugin om uit te importeren"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Meer dan \u00e9\u00e9n plugin importeren? U kunt later extra bronnen importeren via Instellingen \u2192 Migratie."],"Import did not complete":["Importeren is niet voltooid"],"I'll do this later":["Ik doe dit later"],"Retry":["Opnieuw proberen"],"Form Checks":["Formuliercontroles"],"Collapse form checks":["Formuliercontroles samenvouwen"],"Expand form checks":["Formuliercontroles uitvouwen"],"Ignore":["Negeren"],"Working\u2026":["Bezig\u2026"]}}} \ No newline at end of file +{"translation-revision-date":"2024-12-13T12:33:48+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Dashboard"],"Settings":["Instellingen"],"Entries":["Inzendingen"],"Activated":["Geactiveerd"],"Advanced Fields":["Geavanceerde velden"],"Select Form":["Selecteer formulier"],"Create New Form":["Nieuw formulier maken"],"Forms":["Formulieren"],"Copy":["Kopi\u00ebren"],"Business":["Zakelijk"],"Next":["Volgende"],"Back":["Terug"],"Close":["Sluiten"],"Cancel":["Annuleren"],"This is where your form views will appear":["Hier verschijnen uw formulierweergaven"],"Install":["Installeren"],"Plugin Installation failed, Please try again later.":["Installatie van de plugin mislukt, probeer het later opnieuw."],"Plugin activation failed, Please try again later.":["Plug-in activering mislukt, probeer het later opnieuw."],"What's New?":["Wat is er nieuw?"],"Core":["Kern"],"Unlicensed":["Ongeautoriseerd"],"Upgrade":["Upgrade"],"Webhooks":["Webhooks"],"Install & Activate":["Installeren & Activeren"],"Contact Support":["Neem contact op met de ondersteuning"],"Conditional Logic":["Conditionele logica"],"Premium":["Premium"],"Welcome to SureForms!":["Welkom bij SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms is een WordPress-plugin waarmee gebruikers mooie formulieren kunnen maken via een drag-and-drop-interface, zonder dat er code nodig is. Het integreert met de WordPress-blokeditor."],"Read Full Guide":["Lees de volledige gids"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Aangepaste WordPress-formulieren GEMAKKELIJK GEMAAKT"],"No Date":["Geen datum"],"Invalid Date":["Ongeldige datum"],"Ready to go beyond free plan?":["Klaar om verder te gaan dan het gratis plan?"],"Upgrade now":["Nu upgraden"],"and unlock the full power of SureForms!":["en ontgrendel de volledige kracht van SureForms!"],"Upgrade SureForms":["Upgrade SureForms"],"Open Support Ticket":["Ondersteuningsticket openen"],"Help Center":["Helpcentrum"],"Join our Community on Facebook":["Word lid van onze community op Facebook"],"Leave Us a Review":["Laat een recensie achter"],"Quick Access":["Snelle toegang"],"Upgrade Now":["Nu upgraden"],"Clear Filters":["Filters wissen"],"Unnamed Form":["Naamloos formulier"],"Forms Overview":["Overzicht van formulieren"],"Clear Form Filters":["Formulierfilters wissen"],"Clear Date Filters":["Wis datumfilters"],"Select Date Range":["Selecteer datumbereik"],"Apply":["Toepassen"],"Please wait for the data to load":["Wacht alstublieft tot de gegevens zijn geladen"],"No entries to display":["Geen items om weer te geven"],"Once you create a form and start receiving submissions, the data will appear here.":["Zodra je een formulier maakt en inzendingen begint te ontvangen, zullen de gegevens hier verschijnen."],"Free":["Gratis"],"All Forms":["Alle formulieren"],"Guided Setup":["Geleide installatie"],"Exit Guided Setup":["Geleide installatie afsluiten"],"Skip":["Overslaan"],"Build beautiful forms visually":["Bouw prachtige formulieren visueel"],"Works perfectly on mobile":["Werkt perfect op mobiel"],"Easy to connect with automation tools":["Eenvoudig te verbinden met automatiseringstools"],"Welcome to SureForms":["Welkom bij SureForms"],"Smart, Quick and Powerful Forms.":["Slimme, snelle en krachtige formulieren."],"Let's Get Started":["Laten we beginnen"],"Build up to 10 forms using AI":["Bouw tot 10 formulieren met behulp van AI"],"A secure and private connection":["Een veilige en priv\u00e9verbinding"],"Smart form drafts based on your input":["Slimme formulierontwerpen op basis van uw invoer"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Beginnen met een leeg formulier is niet altijd gemakkelijk. Onze AI kan helpen door een conceptformulier te maken op basis van wat je probeert te doen \u2014 dit bespaart je tijd en geeft je een duidelijke richting."],"To do this, you'll need to connect your account.":["Om dit te doen, moet je je account verbinden."],"Let AI Help You Build Smarter, Faster Forms":["Laat AI u helpen om slimmere, snellere formulieren te maken"],"Here's what that gives you:":["Dit is wat dat je oplevert:"],"Continue":["Doorgaan"],"Connect":["Verbinden"],"Works smoothly with forms made using SureForms":["Werkt soepel met formulieren gemaakt met SureForms"],"Helps your emails reach the inbox instead of spam":["Helpt uw e-mails de inbox te bereiken in plaats van de spam"],"Setup is straightforward, even if you're not technical":["De installatie is eenvoudig, zelfs als je niet technisch bent"],"Lightweight and easy to use without adding clutter":["Lichtgewicht en eenvoudig te gebruiken zonder rommel toe te voegen"],"Make Sure Your Emails Get Delivered":["Zorg ervoor dat uw e-mails worden afgeleverd"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["De meeste WordPress-sites hebben moeite om e-mails betrouwbaar te verzenden, wat betekent dat formulierinzendingen van uw site mogelijk uw inbox niet bereiken \u2014 of in de spam terechtkomen."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail is een eenvoudige SMTP-plug-in die ervoor zorgt dat je e-mails daadwerkelijk worden afgeleverd."],"What you will get:":["Wat je zult krijgen:"],"Install SureMail":["Installeer SureMail"],"AI Form Generation":["AI Formuliergeneratie"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["Ben je het beu om formulieren handmatig te maken? Laat AI het werk voor je doen. Beschrijf het gewoon en onze AI maakt in enkele seconden je perfecte formulier."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Breek complexe formulieren op in eenvoudige stappen, waardoor overweldiging wordt verminderd en voltooiingspercentages worden verhoogd. Leid gebruikers soepel door het proces"],"Conditional Fields":["Voorwaardelijke Velden"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Toon of verberg velden op basis van gebruikersantwoorden. Stel de juiste vragen en toon alleen wat nodig is om formulieren schoon en relevant te houden."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Verbeter uw formulieren met geavanceerde velden zoals multi-bestandsupload, beoordelingsvelden en datum- en tijdkiezers om rijkere, flexibele gegevens te verzamelen."],"Conversational Forms":["Gespreksvormen"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Maak formulieren die aanvoelen als een gesprek. E\u00e9n vraag tegelijk houdt gebruikers betrokken en maakt het invullen van formulieren eenvoudig."],"Digital Signatures":["Digitale handtekeningen"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Verzamel juridisch bindende digitale handtekeningen direct in uw formulieren voor overeenkomsten, goedkeuringen en contracten."],"Calculators":["Rekenmachines"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Voeg interactieve rekenmachines toe aan uw formulieren voor directe schattingen, offertes en berekeningen voor uw gebruikers."],"User Registration and Login":["Gebruikersregistratie en inloggen"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Sta bezoekers toe om zich te registreren en in te loggen op uw site. Nuttig voor lidmaatschappen, gemeenschappen of elke site die gebruikers toegang nodig heeft."],"PDF Generation Made Simple":["PDF-generatie eenvoudig gemaakt"],"Custom App":["Aangepaste app"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Verzamel gegevens, stuur ze naar externe applicaties voor verwerking en toon resultaten direct \u2014 alles naadloos ge\u00efntegreerd om dynamische, interactieve gebruikerservaringen te cre\u00ebren."],"Select Your Features":["Selecteer uw functies"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Krijg meer controle, snellere workflows en diepere aanpassingsmogelijkheden \u2014 allemaal ontworpen om je te helpen betere websites te bouwen met minder inspanning."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Geselecteerde functies vereisen %1$s - gebruik code %2$s om 10% korting te krijgen op elk plan."],"Copied":["Gekopieerd"],"Style your form to better match your site's design":["Stijl uw formulier zodat het beter bij het ontwerp van uw site past"],"Add spam protection to block common bot submissions":["Voeg spambeveiliging toe om veelvoorkomende botinzendingen te blokkeren"],"Get weekly email reports with a summary of form activity":["Ontvang wekelijkse e-mailrapporten met een samenvatting van de formulieractiviteit"],"You're All Set! \ud83d\ude80":["Je bent helemaal klaar! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Gebruik onze AI-formulierbouwer om snel aan de slag te gaan, of bouw je formulier vanaf nul als je al weet wat je nodig hebt. Je formulieren zijn klaar om te maken, te delen en te verbinden met je sitebezoekers."],"Final Touches That Make a Difference:":["Laatste details die het verschil maken:"],"Build Your First Form":["Bouw je eerste formulier"],"File Uploads":["Bestandsuploads"],"Signature & Rating":["Handtekening & Beoordeling"],"Calculation Forms":["Berekeningsformulieren"],"And Much More\u2026":["En nog veel meer\u2026"],"Upgrade to Pro":["Upgrade naar Pro"],"Unlock Premium Features":["Ontgrendel Premiumfuncties"],"Build Better Forms with SureForms":["Bouw betere formulieren met SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Voeg geavanceerde velden, conversatie-indelingen en slimme logica toe om formulieren te maken die gebruikers betrekken en betere gegevens vastleggen."],"SureForms Video Thumbnail":["SureForms Video Miniatuur"],"Payments":["Betalingen"],"Knowledge Base":["Kennisbank"],"What\u2019s New":["Wat is er nieuw"],"Importing\u2026":["Importeren\u2026"],"Learn":["Leren"],"Unable to complete action. Please try again.":["Actie kan niet worden voltooid. Probeer het opnieuw."],"Supercharge Your Workflow":["Geef je workflow een boost"],"Spam protection included":["Spam bescherming inbegrepen"],"Multistep Forms":["Meertrapsformulieren"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Stuur formulierinvoer direct naar elk extern systeem of eindpunt om geavanceerde workflows aan te sturen."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Zet formulierinvoeren automatisch om in schone, klaar-om-te-downloaden PDF's. Perfect voor archivering, delen, opslaan of het georganiseerd houden van zaken."],"Set up confirmation messages and email notifications for each entry":["Stel bevestigingsberichten en e-mailmeldingen in voor elke invoer"],"Something went wrong. Please try again.":["Er is iets misgegaan. Probeer het alstublieft opnieuw."],"Payment Forms":["Betalingsformulieren"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Ontvang betalingen direct via uw formulieren. Accepteer eenmalige en terugkerende betalingen naadloos."],"SureForms %s":["SureForms %s"],"First name is required.":["Voornaam is verplicht."],"Please enter a valid email address.":["Voer een geldig e-mailadres in."],"Email address is required.":["E-mailadres is vereist."],"This is required.":["Dit is vereist."],"Okay, just one last step\u2026":["Ok\u00e9, nog maar \u00e9\u00e9n laatste stap\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Help ons uw SureForms-ervaring aan te passen door iets over uzelf te delen."],"First Name":["Voornaam"],"Enter your first name":["Voer uw voornaam in"],"Last Name":["Achternaam"],"Enter your last name":["Voer uw achternaam in"],"Email Address":["E-mailadres"],"Enter your email address":["Voer uw e-mailadres in"],"Privacy Policy":["Privacybeleid"],"Finish":["Voltooien"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Blijf op de hoogte en help SureForms vorm te geven! Ontvang updates over functies en help ons SureForms te verbeteren door te delen hoe je de plugin gebruikt. Privacybeleid<\/a>."],"%d form ready":["%d formulier klaar"],"%d already imported":["%d al ge\u00efmporteerd"],"(unnamed source)":["(naamloze bron)"],"All forms already imported":["Alle formulieren zijn al ge\u00efmporteerd"],"Import forms":["Formulieren importeren"],"Import %d form":["%d formulier importeren"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Er is iets misgegaan tijdens het importeren. U kunt het opnieuw proberen, overslaan of Instellingen \u2192 Migratie openen."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Geen andere formulier-plugins gedetecteerd. U kunt op elk moment importeren via Instellingen \u2192 Migratie."],"Forms imported":["Formulieren ge\u00efmporteerd"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["%1$d formulier van %2$s is nu in SureForms, klaar om te publiceren, stijlen en verbinden."],"%d form imported":["%d formulier ge\u00efmporteerd"],"%d form could not be imported":["%d formulier kon niet worden ge\u00efmporteerd"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d veldtype werd niet ondersteund. U kunt het handmatig opnieuw opbouwen in SureForms."],"Bring your existing forms with you":["Breng uw bestaande formulieren mee"],"We detected forms in another plugin. Pick one to import into SureForms.":["We hebben formulieren in een andere plugin gedetecteerd. Kies er een om te importeren in SureForms."],"Choose a form plugin to import from":["Kies een formulierplugin om uit te importeren"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Meer dan \u00e9\u00e9n plugin importeren? U kunt later extra bronnen importeren via Instellingen \u2192 Migratie."],"Import did not complete":["Importeren is niet voltooid"],"I'll do this later":["Ik doe dit later"],"Retry":["Opnieuw proberen"],"Form Checks":["Formuliercontroles"],"Collapse form checks":["Formuliercontroles samenvouwen"],"Expand form checks":["Formuliercontroles uitvouwen"],"Ignore":["Negeren"],"Working\u2026":["Bezig\u2026"],"Details":["Details"],"Copy details":["Details kopi\u00ebren"]}}} \ No newline at end of file diff --git a/languages/sureforms-nl_NL.mo b/languages/sureforms-nl_NL.mo index b1b9343de..5ffcab50e 100644 Binary files a/languages/sureforms-nl_NL.mo and b/languages/sureforms-nl_NL.mo differ diff --git a/languages/sureforms-nl_NL.po b/languages/sureforms-nl_NL.po index 885889c7b..073e047b4 100644 --- a/languages/sureforms-nl_NL.po +++ b/languages/sureforms-nl_NL.po @@ -14,9 +14,9 @@ msgstr "" #. Plugin Name of the plugin #. Author of the plugin #: sureforms.php -#: admin/admin.php:1152 -#: admin/admin.php:1153 -#: admin/admin.php:3021 +#: admin/admin.php:1198 +#: admin/admin.php:1199 +#: admin/admin.php:3185 #: inc/abilities/abilities-registrar.php:139 #: inc/gutenberg-hooks.php:109 #: inc/page-builders/bricks/elements/form-widget.php:67 @@ -43,8 +43,8 @@ msgstr "Een eenvoudige maar krachtige manier om moderne formulieren voor uw webs msgid "https://sureforms.com/" msgstr "https://sureforms.com/" -#: admin/admin.php:1165 -#: admin/admin.php:1166 +#: admin/admin.php:1211 +#: admin/admin.php:1212 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -59,9 +59,9 @@ msgstr "https://sureforms.com/" msgid "Dashboard" msgstr "Dashboard" -#: admin/admin.php:1183 -#: admin/admin.php:1184 -#: admin/admin.php:1616 +#: admin/admin.php:1229 +#: admin/admin.php:1230 +#: admin/admin.php:1662 #: inc/compatibility/multilingual/string-collector.php:236 #: inc/compatibility/multilingual/string-collector.php:245 #: inc/compatibility/multilingual/string-collector.php:313 @@ -79,15 +79,15 @@ msgstr "Dashboard" msgid "Settings" msgstr "Instellingen" -#: admin/admin.php:1452 -#: admin/admin.php:1453 +#: admin/admin.php:1498 +#: admin/admin.php:1499 #: inc/post-types.php:270 msgid "New Form" msgstr "Nieuw formulier" -#: admin/admin.php:1461 -#: admin/admin.php:1462 -#: admin/admin.php:3340 +#: admin/admin.php:1507 +#: admin/admin.php:1508 +#: admin/admin.php:3504 #: inc/generate-form-markup.php:211 #: inc/generate-form-markup.php:224 #: inc/global-settings/email-summary.php:225 @@ -105,7 +105,7 @@ msgid "Entries" msgstr "Inzendingen" #. Translators: Post Title. -#: admin/admin.php:1704 +#: admin/admin.php:1750 #, php-format msgid "Edit %1$s" msgstr "Bewerk %1$s" @@ -118,7 +118,7 @@ msgstr "Bewerk %1$s" #: inc/duplicate-form.php:191 #: inc/export.php:126 #: inc/export.php:184 -#: inc/forms-data.php:88 +#: inc/forms-data.php:108 #: inc/global-settings/global-settings.php:89 #: inc/global-settings/global-settings.php:639 #: inc/rest-api.php:203 @@ -126,12 +126,12 @@ msgid "Nonce verification failed." msgstr "Verificatie van nonce mislukt." #. translators: %1$s: Opening anchor tag with URL, %2$s: Closing anchor tag, %3$s: SureForms Pro Plugin Name. -#: admin/admin.php:2572 +#: admin/admin.php:2626 #, php-format msgid "Please %1$sactivate%2$s your copy of %3$s to get new features, access support, receive update notifications, and more." msgstr "Gelieve %1$suw exemplaar van %3$s te activeren%2$s om nieuwe functies te krijgen, toegang tot ondersteuning, update-meldingen te ontvangen en meer." -#: admin/admin.php:3339 +#: admin/admin.php:3503 #: inc/global-settings/email-summary.php:224 #: assets/build/entries.js:172 #: assets/build/payments.js:172 @@ -201,7 +201,7 @@ msgstr "Afval" msgid "Published" msgstr "Gepubliceerd" -#: admin/admin.php:3331 +#: admin/admin.php:3495 msgid "View" msgstr "Bekijken" @@ -288,11 +288,11 @@ msgstr "Geen plugin opgegeven" msgid "Plugin Successfully Activated" msgstr "Plugin succesvol geactiveerd" -#: admin/admin.php:1780 +#: admin/admin.php:1834 msgid "Activating..." msgstr "Activeren..." -#: admin/admin.php:1781 +#: admin/admin.php:1835 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/formEditor.js:172 @@ -307,17 +307,17 @@ msgstr "Activeren..." msgid "Activated" msgstr "Geactiveerd" -#: admin/admin.php:1782 +#: admin/admin.php:1836 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Activate" msgstr "Activeren" -#: admin/admin.php:1783 +#: admin/admin.php:1837 msgid "Installing..." msgstr "Installeren..." -#: admin/admin.php:1784 +#: admin/admin.php:1838 msgid "Installed" msgstr "Geïnstalleerd" @@ -325,12 +325,13 @@ msgstr "Geïnstalleerd" msgid "You do not have permission to access this page." msgstr "U heeft geen toestemming om deze pagina te openen." -#: admin/admin.php:2784 -#: admin/admin.php:2912 -#: admin/admin.php:2950 -#: admin/admin.php:2971 -#: admin/admin.php:3294 -#: admin/admin.php:3601 +#: admin/admin.php:2874 +#: admin/admin.php:2917 +#: admin/admin.php:3076 +#: admin/admin.php:3114 +#: admin/admin.php:3135 +#: admin/admin.php:3458 +#: admin/admin.php:3847 #: inc/admin-ajax.php:164 #: inc/payments/admin/admin-handler.php:638 #: inc/payments/stripe/admin-stripe-handler.php:80 @@ -343,7 +344,7 @@ msgid "Form ID is required." msgstr "Formulier-ID is vereist." #: inc/admin-ajax.php:184 -#: inc/form-submit.php:1153 +#: inc/form-submit.php:1261 msgid "Invalid form ID." msgstr "Ongeldige formulier-ID." @@ -582,28 +583,28 @@ msgstr "Telefoon" msgid "Textarea" msgstr "Tekstvak" -#: inc/form-submit.php:231 +#: inc/form-submit.php:281 msgid "Cloudflare Turnstile secret key is invalid." msgstr "Cloudflare Turnstile geheime sleutel is ongeldig." -#: inc/form-submit.php:238 +#: inc/form-submit.php:288 msgid "Cloudflare Turnstile response is missing." msgstr "Cloudflare Turnstile-reactie ontbreekt." -#: inc/form-submit.php:282 +#: inc/form-submit.php:332 msgid "hCaptcha secret key is invalid." msgstr "hCaptcha geheime sleutel is ongeldig." -#: inc/form-submit.php:289 +#: inc/form-submit.php:339 msgid "hCaptcha response is missing." msgstr "hCaptcha-reactie ontbreekt." -#: inc/form-submit.php:330 -#: inc/form-submit.php:589 +#: inc/form-submit.php:380 +#: inc/form-submit.php:639 msgid "Form data is not found." msgstr "Formuliergegevens zijn niet gevonden." -#: inc/forms-data.php:68 +#: inc/forms-data.php:88 msgid "Sorry, you are not allowed to view the form." msgstr "Sorry, je mag het formulier niet bekijken." @@ -713,7 +714,7 @@ msgstr "Formulier bewerken" msgid "Edit" msgstr "Bewerken" -#: admin/admin.php:3072 +#: admin/admin.php:3236 #: inc/page-builders/elementor/form-widget.php:346 #: assets/build/dashboard.js:2 msgid "Create New Form" @@ -750,8 +751,8 @@ msgstr "Formulier bekijken" msgid "View Forms" msgstr "Formulieren bekijken" -#: admin/admin.php:1443 -#: admin/admin.php:1444 +#: admin/admin.php:1489 +#: admin/admin.php:1490 #: inc/post-types.php:274 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -8265,7 +8266,7 @@ msgstr "Sociaal" msgid "Travel" msgstr "Reizen" -#: inc/helper.php:2375 +#: inc/helper.php:2368 msgid "Blank Form" msgstr "Leeg formulier" @@ -8584,7 +8585,9 @@ msgstr "Voeg alstublieft een optie-eigenschap toe aan MultiButtonsControl" msgid "Icon Library" msgstr "Iconenbibliotheek" +#: admin/admin.php:4062 #: assets/build/blocks.js:172 +#: assets/build/dashboard.js:172 #: modules/gutenberg/build/blocks.js:4 msgid "Close" msgstr "Sluiten" @@ -8873,9 +8876,9 @@ msgstr "Blokken toevoegen aan de Snelle Actiebalk" msgid "Re-arrange block inside Quick Action Bar" msgstr "Blok herschikken in de Snelle Actiebalk" -#: admin/admin.php:1236 -#: admin/admin.php:1237 -#: admin/admin.php:4129 +#: admin/admin.php:1282 +#: admin/admin.php:1283 +#: admin/admin.php:4737 #: assets/build/blocks.js:172 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -9248,7 +9251,7 @@ msgstr "Centrum" msgid "Right" msgstr "Rechts" -#: inc/form-submit.php:1344 +#: inc/form-submit.php:1452 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Google reCAPTCHA" @@ -9258,7 +9261,7 @@ msgstr "Google reCAPTCHA" msgid "CloudFlare Turnstile" msgstr "CloudFlare Turnstile" -#: inc/form-submit.php:1348 +#: inc/form-submit.php:1456 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "hCaptcha" @@ -9536,7 +9539,7 @@ msgstr "Sitecode" msgid "Secret Key" msgstr "Geheime Sleutel" -#: inc/form-submit.php:1352 +#: inc/form-submit.php:1460 #: assets/build/settings.js:172 msgid "Cloudflare Turnstile" msgstr "Cloudflare Turnstile" @@ -9553,7 +9556,8 @@ msgstr "Nu verbinden" msgid "Authentication Failed" msgstr "Verificatie mislukt" -#: admin/admin.php:3516 +#: admin/admin.php:4061 +#: assets/build/dashboard.js:172 #: assets/build/templatePicker.js:172 msgid "Contact Support" msgstr "Neem contact op met de ondersteuning" @@ -10488,7 +10492,7 @@ msgid "icon" msgstr "icoon" #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version, %4$s: Anchor tag open, %5$s: Closing anchor tag. -#: admin/admin.php:2590 +#: admin/admin.php:2644 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version from %4$shere%5$s." msgstr "SureForms %1$s vereist minimaal %2$s %3$s om goed te functioneren. Werk alstublieft bij naar de nieuwste versie van %4$shier%5$s." @@ -10510,7 +10514,7 @@ msgstr "IP-logboek" msgid "Honeypot" msgstr "Honeypot" -#: admin/admin.php:2639 +#: admin/admin.php:2693 msgid "Rate SureForms" msgstr "Beoordeel SureForms" @@ -10566,18 +10570,18 @@ msgstr "Ontgrendel Notitie Toevoegen" msgid "With the SureForms Starter plan, enhance your submitted form entries by adding personalized notes for better clarity and tracking." msgstr "Met het SureForms Starter-plan kunt u uw ingediende formulierinzendingen verbeteren door gepersonaliseerde notities toe te voegen voor meer duidelijkheid en betere tracking." -#: inc/form-submit.php:990 +#: inc/form-submit.php:1046 msgid "Email notification passed to the sending server" msgstr "E-mailmelding doorgestuurd naar de verzendserver" #. translators: Here, %s is the comma separated emails list. -#: inc/form-submit.php:1063 +#: inc/form-submit.php:1130 #, php-format msgid "Email notification recipient: %s" msgstr "E-mail notificatie ontvanger: %s" #. translators: Here, %1$s is the comma separated emails list and %2$s is error report ( if any ). -#: inc/form-submit.php:1080 +#: inc/form-submit.php:1147 #, php-format msgid "Email server was unable to send the email notification. Recipient: %1$s. Reason: %2$s" msgstr "E-mailserver kon de e-mailmelding niet verzenden. Ontvanger: %1$s. Reden: %2$s" @@ -10620,7 +10624,7 @@ msgstr "Ontgrendel Gespreksformulieren" msgid "With the SureForms Pro Plan, you can transform your forms into engaging conversational layouts for a seamless user experience." msgstr "Met het SureForms Pro Plan kun je je formulieren omzetten in boeiende, conversatiegerichte lay-outs voor een naadloze gebruikerservaring." -#: admin/admin.php:1075 +#: admin/admin.php:1121 msgid "Get SureForms Pro" msgstr "Verkrijg SureForms Pro" @@ -10832,24 +10836,24 @@ msgstr "Selecteer verloop" msgid "reCAPTCHA" msgstr "reCAPTCHA" -#: inc/form-submit.php:1288 +#: inc/form-submit.php:1396 msgid "Captcha validation failed. No error code provided." msgstr "Captcha-validatie mislukt. Geen foutcode opgegeven." -#: inc/form-submit.php:1289 +#: inc/form-submit.php:1397 msgid "Captcha validation failed." msgstr "Captcha-validatie mislukt." -#: inc/form-submit.php:1356 +#: inc/form-submit.php:1464 msgid "Unknown Captcha" msgstr "Onbekende Captcha" -#: inc/form-submit.php:1357 +#: inc/form-submit.php:1465 msgid "Invalid captcha type." msgstr "Ongeldig captcha-type." #. translators: %s is the captcha title. -#: inc/form-submit.php:1370 +#: inc/form-submit.php:1478 #, php-format msgid "%s verification failed. Please contact your site administrator." msgstr "%s verificatie mislukt. Neem contact op met uw sitebeheerder." @@ -11246,8 +11250,8 @@ msgstr "Beschrijf het formulier dat je wilt maken" msgid "We are building your form…" msgstr "We zijn uw formulier aan het maken…" -#: admin/admin.php:1351 -#: admin/admin.php:1352 +#: admin/admin.php:1397 +#: admin/admin.php:1398 msgid "SMTP" msgstr "SMTP" @@ -11379,31 +11383,32 @@ msgstr "Beheerdermelding inschakelen" msgid "Admin notifications keep you informed about new form entries since your last visit." msgstr "Beheerdersmeldingen houden je op de hoogte van nieuwe formulierinzendingen sinds je laatste bezoek." -#: admin/admin.php:2789 -#: admin/admin.php:2908 -#: admin/admin.php:2946 -#: admin/admin.php:2967 -#: admin/admin.php:3298 -#: admin/admin.php:3596 +#: admin/admin.php:2869 +#: admin/admin.php:2922 +#: admin/admin.php:3072 +#: admin/admin.php:3110 +#: admin/admin.php:3131 +#: admin/admin.php:3462 +#: admin/admin.php:3842 msgid "Unauthorized user." msgstr "Ongeautoriseerde gebruiker." #. translators: 1: opening span, 2: opening strong (inline), 3: closing strong, 4: closing span, 5: opening strong (block), 6: closing strong -#: admin/admin.php:2917 +#: admin/admin.php:3081 #, php-format msgid "%1$sGet started by %2$sbuilding your first form%3$s.%4$s%5$sExperience the power of our intuitive AI Form Builder%6$s" msgstr "%1$sBegin met %2$shet bouwen van je eerste formulier%3$s.%4$s%5$sErvaar de kracht van onze intuïtieve AI Form Builder%6$s" -#: admin/admin.php:2928 +#: admin/admin.php:3092 msgid "SureForms is waiting for you!" msgstr "SureForms wacht op je!" -#: admin/admin.php:2930 +#: admin/admin.php:3094 msgid "Build My First Form" msgstr "Bouw Mijn Eerste Formulier" -#: admin/admin.php:2931 -#: admin/admin.php:3418 +#: admin/admin.php:3095 +#: admin/admin.php:3650 msgid "Dismiss" msgstr "Afwijzen" @@ -11423,51 +11428,51 @@ msgstr "Inloggen" msgid "Register" msgstr "Registreren" -#: admin/admin.php:3327 +#: admin/admin.php:3491 msgid "Recent Entries" msgstr "Recente items" -#: admin/admin.php:3328 +#: admin/admin.php:3492 msgid "( Last 7 days )" msgstr "( Laatste 7 dagen )" -#: admin/admin.php:4070 +#: admin/admin.php:4678 msgid "Use Conditional Logic to show only what matters" msgstr "Gebruik voorwaardelijke logica om alleen te tonen wat ertoe doet" -#: admin/admin.php:4071 +#: admin/admin.php:4679 msgid "Split your form into steps to keep it easy" msgstr "Verdeel uw formulier in stappen om het eenvoudig te houden" -#: admin/admin.php:4072 +#: admin/admin.php:4680 msgid "Let people upload files directly to your form" msgstr "Laat mensen bestanden direct naar uw formulier uploaden" -#: admin/admin.php:4073 +#: admin/admin.php:4681 msgid "Turn responses into downloadable PDFs automatically" msgstr "Zet reacties automatisch om in downloadbare PDF's" -#: admin/admin.php:4074 +#: admin/admin.php:4682 msgid "Let users sign with a simple signature field" msgstr "Laat gebruikers ondertekenen met een eenvoudig handtekeningveld" -#: admin/admin.php:4075 +#: admin/admin.php:4683 msgid "Connect your form to other tools using webhooks" msgstr "Verbind uw formulier met andere tools via webhooks" -#: admin/admin.php:4076 +#: admin/admin.php:4684 msgid "Use Conversational Forms for a chat-like experience" msgstr "Gebruik Conversational Forms voor een chat-achtige ervaring" -#: admin/admin.php:4077 +#: admin/admin.php:4685 msgid "Let users register or log in through your form" msgstr "Laat gebruikers zich registreren of inloggen via uw formulier" -#: admin/admin.php:4078 +#: admin/admin.php:4686 msgid "Build forms that create WordPress user accounts" msgstr "Bouw formulieren die WordPress-gebruikersaccounts aanmaken" -#: admin/admin.php:4079 +#: admin/admin.php:4687 msgid "Add calculations to auto-total scores or prices" msgstr "Berekeningen toevoegen om scores of prijzen automatisch op te tellen" @@ -11666,6 +11671,7 @@ msgstr "Krijg meer controle, snellere workflows en diepere aanpassingsmogelijkhe msgid "Selected features require %1$s - use code %2$s to get 10% off on any plan." msgstr "Geselecteerde functies vereisen %1$s - gebruik code %2$s om 10% korting te krijgen op elk plan." +#: admin/admin.php:4060 #: assets/build/dashboard.js:172 msgid "Copied" msgstr "Gekopieerd" @@ -11889,7 +11895,7 @@ msgstr "Verken SureDash" msgid "Something went wrong. We have logged the error for further investigation" msgstr "Er is iets misgegaan. We hebben de fout geregistreerd voor verder onderzoek." -#: inc/field-validation.php:413 +#: inc/field-validation.php:452 msgid "Field is not valid." msgstr "Veld is niet geldig." @@ -11957,8 +11963,8 @@ msgstr "SureForms Video Miniatuur" msgid "Expected format for emails - email@sureforms.com or John Doe " msgstr "Verwacht formaat voor e-mails - email@sureforms.com of John Doe " -#: admin/admin.php:1471 -#: admin/admin.php:1472 +#: admin/admin.php:1517 +#: admin/admin.php:1518 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -12173,7 +12179,7 @@ msgstr "Verhoog uw SEO en klim moeiteloos in de zoekresultaten!" msgid "Boost your website's visibility with smart SEO automation. Optimize content, track keyword performance, and get actionable insights, all inside WordPress." msgstr "Verhoog de zichtbaarheid van je website met slimme SEO-automatisering. Optimaliseer content, volg de prestaties van zoekwoorden en krijg bruikbare inzichten, allemaal binnen WordPress." -#: inc/form-submit.php:129 +#: inc/form-submit.php:174 #: inc/form-views.php:205 #: inc/payments/admin/admin-handler.php:99 #: inc/payments/admin/admin-handler.php:183 @@ -15372,12 +15378,12 @@ msgid "Stripe Settings" msgstr "Stripe-instellingen" #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version. -#: admin/admin.php:2281 +#: admin/admin.php:2335 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version." msgstr "SureForms %1$s vereist minimaal %2$s %3$s om goed te functioneren. Werk alstublieft bij naar de nieuwste versie." -#: admin/admin.php:2294 +#: admin/admin.php:2348 msgid "Update Now" msgstr "Nu bijwerken" @@ -15425,8 +15431,8 @@ msgstr "Positie van het valutateken" msgid "Select the position of the currency symbol relative to the amount." msgstr "Selecteer de positie van het valutasymbool ten opzichte van het bedrag." -#: admin/admin.php:1414 -#: admin/admin.php:1415 +#: admin/admin.php:1460 +#: admin/admin.php:1461 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -15440,41 +15446,41 @@ msgstr "Selecteer de positie van het valutasymbool ten opzichte van het bedrag." msgid "Learn" msgstr "Leren" -#: admin/admin.php:2635 +#: admin/admin.php:2689 msgid "Amazing! SureForms is powering your forms and submissions - let's keep growing together!" msgstr "Geweldig! SureForms ondersteunt je formulieren en inzendingen - laten we samen blijven groeien!" -#: admin/admin.php:2636 +#: admin/admin.php:2690 msgid "If SureForms has been helpful, would you mind taking a moment to leave a 5-star review on WordPress.org?" msgstr "Als SureForms nuttig is geweest, zou u dan een moment willen nemen om een 5-sterrenbeoordeling achter te laten op WordPress.org?" -#: admin/admin.php:2647 -#: admin/admin.php:2711 +#: admin/admin.php:2701 +#: admin/admin.php:2765 msgid "Maybe later" msgstr "Misschien later" -#: admin/admin.php:2653 +#: admin/admin.php:2707 msgid "I already did" msgstr "Ik heb het al gedaan" -#: admin/admin.php:2702 +#: admin/admin.php:2756 msgid "SureForms is ready to power your forms — explore what's possible!" msgstr "SureForms is klaar om uw formulieren van stroom te voorzien — ontdek wat er mogelijk is!" -#: admin/admin.php:2703 +#: admin/admin.php:2757 msgid "Manage your forms, track submissions, and discover features like AI Form Builder, payment integrations, and more from the SureForms dashboard." msgstr "Beheer uw formulieren, volg inzendingen en ontdek functies zoals AI Form Builder, betalingsintegraties en meer vanaf het SureForms-dashboard." -#: admin/admin.php:2706 +#: admin/admin.php:2760 msgid "Go to Dashboard" msgstr "Ga naar Dashboard" -#: admin/admin.php:2717 +#: admin/admin.php:2771 msgid "I already know" msgstr "Ik weet het al" -#: admin/admin.php:2833 -#: admin/admin.php:3608 +#: admin/admin.php:2981 +#: admin/admin.php:3854 msgid "Invalid parameters." msgstr "Ongeldige parameters." @@ -15858,10 +15864,10 @@ msgid "This form is not yet available. Check back after the scheduled start time msgstr "Dit formulier is nog niet beschikbaar. Kom terug na de geplande starttijd." #: inc/admin/html-form-detector.php:268 -#: inc/form-submit.php:197 -#: inc/form-submit.php:503 -#: inc/form-submit.php:548 -#: inc/form-submit.php:1149 +#: inc/form-submit.php:247 +#: inc/form-submit.php:553 +#: inc/form-submit.php:598 +#: inc/form-submit.php:1257 #: inc/migrator/bootstrap.php:357 #: inc/payments/front-end.php:79 #: inc/payments/front-end.php:265 @@ -15884,48 +15890,48 @@ msgstr "Dit formulier is nog niet beschikbaar. Kom terug na de geplande starttij msgid "Security verification failed. Please refresh the page and try again." msgstr "Beveiligingsverificatie mislukt. Vernieuw de pagina en probeer het opnieuw." -#: inc/form-submit.php:582 +#: inc/form-submit.php:632 msgid "Form data was not found." msgstr "Formuliergegevens werden niet gevonden." -#: inc/form-submit.php:336 +#: inc/form-submit.php:386 msgid "Form ID is missing." msgstr "Formulier-ID ontbreekt." -#: inc/form-submit.php:213 +#: inc/form-submit.php:263 msgid "Sorry, you do not have permission to access this resource." msgstr "Sorry, je hebt geen toestemming om deze bron te openen." -#: inc/form-submit.php:368 +#: inc/form-submit.php:418 msgid "You do not have permission to submit this form." msgstr "U heeft geen toestemming om dit formulier in te dienen." -#: inc/form-submit.php:378 +#: inc/form-submit.php:428 msgid "This form is no longer available." msgstr "Dit formulier is niet langer beschikbaar." -#: inc/form-submit.php:396 +#: inc/form-submit.php:446 msgid "Please check the form for errors." msgstr "Controleer het formulier op fouten." -#: inc/form-submit.php:523 -#: inc/form-submit.php:564 +#: inc/form-submit.php:573 +#: inc/form-submit.php:614 msgid "Your submission was flagged as spam. Please try again." msgstr "Je inzending is gemarkeerd als spam. Probeer het opnieuw." -#: inc/form-submit.php:818 +#: inc/form-submit.php:868 msgid "Unable to submit form. Please try again." msgstr "Kan formulier niet verzenden. Probeer het opnieuw." -#: inc/form-submit.php:1070 +#: inc/form-submit.php:1137 msgid "No SMTP plugin detected. Please configure an SMTP plugin to enable email sending." msgstr "Er is geen SMTP-plug-in gedetecteerd. Configureer een SMTP-plug-in om het verzenden van e-mails mogelijk te maken." -#: inc/form-submit.php:1071 +#: inc/form-submit.php:1138 msgid "Email sending failed for an unknown reason." msgstr "E-mail verzenden mislukt om een onbekende reden." -#: inc/form-submit.php:1124 +#: inc/form-submit.php:1201 msgid "No emails were sent." msgstr "Er zijn geen e-mails verzonden." @@ -16438,7 +16444,7 @@ msgid "Duplicate form?" msgstr "Formulier dupliceren?" #: assets/build/formSubmit.js:2 -#: assets/js/unminified/form-submit.js:917 +#: assets/js/unminified/form-submit.js:938 msgid "An error occurred while submitting your form. Please try again." msgstr "Er is een fout opgetreden bij het indienen van uw formulier. Probeer het alstublieft opnieuw." @@ -16815,28 +16821,28 @@ msgstr "Webhook-geheim niet geconfigureerd." msgid "Invalid webhook signature." msgstr "Ongeldige webhook-handtekening." -#: admin/admin.php:1253 -#: admin/admin.php:1851 +#: admin/admin.php:1299 +#: admin/admin.php:1905 #: assets/build/formEditor.js:172 msgid "Quizzes" msgstr "Quizzen" -#: admin/admin.php:1252 +#: admin/admin.php:1298 msgid "Quiz Entries" msgstr "Quizinzendingen" -#: admin/admin.php:1255 -#: admin/admin.php:1288 -#: admin/admin.php:1321 +#: admin/admin.php:1301 +#: admin/admin.php:1334 +#: admin/admin.php:1367 #: assets/build/settings.js:172 msgid "New" msgstr "Nieuw" -#: inc/form-submit.php:1158 +#: inc/form-submit.php:1266 msgid "Invalid form." msgstr "Ongeldig formulier." -#: inc/form-submit.php:1163 +#: inc/form-submit.php:1271 msgid "Too many requests. Please try again shortly." msgstr "Te veel verzoeken. Probeer het binnenkort opnieuw." @@ -17345,9 +17351,9 @@ msgstr "Perfect voor educatie, training en leuke trivia" msgid "Select this to create a quiz with scored questions and graded results." msgstr "Selecteer dit om een quiz te maken met gescoorde vragen en beoordeelde resultaten." -#: admin/admin.php:1285 -#: admin/admin.php:1286 -#: admin/admin.php:1856 +#: admin/admin.php:1331 +#: admin/admin.php:1332 +#: admin/admin.php:1910 msgid "Survey Reports" msgstr "Onderzoeksrapporten" @@ -17753,7 +17759,7 @@ msgid "Error creating SureForms Form." msgstr "Fout bij het maken van SureForms-formulier." #. translators: %s represents the minimum number of characters required -#: inc/field-validation.php:426 +#: inc/field-validation.php:465 #: inc/translatable.php:94 #, php-format msgid "Please enter at least %s characters." @@ -17911,9 +17917,9 @@ msgstr "De AI-reactie was leeg. Gelieve uw prompt te verfijnen en het opnieuw te msgid "Unable to build form fields from the AI response." msgstr "Kan formuliervelden niet opbouwen vanuit de AI-reactie." -#: admin/admin.php:1318 -#: admin/admin.php:1319 -#: admin/admin.php:1861 +#: admin/admin.php:1364 +#: admin/admin.php:1365 +#: admin/admin.php:1915 msgid "Partial Entries" msgstr "Gedeeltelijke invoer" @@ -18784,23 +18790,23 @@ msgstr "Het betalingsbedrag kon niet worden geverifieerd voor dit formulier. Bew msgid "Cancellation is not supported for this payment gateway." msgstr "Annulering wordt niet ondersteund voor deze betalingsgateway." -#: admin/admin.php:3039 +#: admin/admin.php:3203 msgid "SureForms AI Quick Draft" msgstr "SureForms AI Snelle Schets" -#: admin/admin.php:3058 +#: admin/admin.php:3222 msgid "Describe the form and let SureForms AI generate it for you." msgstr "Beschrijf het formulier en laat SureForms AI het voor je genereren." -#: admin/admin.php:3061 +#: admin/admin.php:3225 msgid "Describe your form" msgstr "Beschrijf je formulier" -#: admin/admin.php:3068 +#: admin/admin.php:3232 msgid "Example: Create a contact form with name, email, phone, and message fields." msgstr "Voorbeeld: Maak een contactformulier met velden voor naam, e-mail, telefoon en bericht." -#: admin/admin.php:3109 +#: admin/admin.php:3273 msgid "Redirecting..." msgstr "Omleiden..." @@ -18813,14 +18819,14 @@ msgid "The prompt is too long. Please shorten it and try again." msgstr "De prompt is te lang. Verkort deze en probeer het opnieuw." #. translators: %s: maximum characters allowed before the @ symbol. -#: inc/field-validation.php:448 +#: inc/field-validation.php:487 #: inc/translatable.php:97 #, php-format msgid "The part before @ may not exceed %s characters." msgstr "Het gedeelte voor @ mag niet meer dan %s tekens bevatten." #. translators: %s: maximum characters allowed after the @ symbol. -#: inc/field-validation.php:454 +#: inc/field-validation.php:493 #: inc/translatable.php:100 #, php-format msgid "The part after @ may not exceed %s characters." @@ -18907,74 +18913,74 @@ msgstr "Sorry, je mag dit formulier niet weergeven." msgid "This form requires a payment. Please complete the payment and submit again." msgstr "Dit formulier vereist een betaling. Voltooi de betaling en dien opnieuw in." -#: admin/admin.php:552 +#: admin/admin.php:598 msgid "You are not allowed to update this prompt." msgstr "Je mag deze prompt niet bijwerken." -#: admin/admin.php:595 +#: admin/admin.php:641 msgid "Finish setting up your form" msgstr "Voltooi het instellen van je formulier" -#: admin/admin.php:627 +#: admin/admin.php:673 msgid "Review or edit your form" msgstr "Bekijk of bewerk je formulier" -#: admin/admin.php:628 -#: admin/admin.php:3907 +#: admin/admin.php:674 +#: admin/admin.php:4515 msgid "Edit form" msgstr "Formulier bewerken" -#: admin/admin.php:633 +#: admin/admin.php:679 msgid "Personalize the Thank You message" msgstr "Personaliseer het bedankbericht" -#: admin/admin.php:634 +#: admin/admin.php:680 msgid "Edit message" msgstr "Bericht bewerken" -#: admin/admin.php:639 +#: admin/admin.php:685 msgid "Choose who gets notified of new replies" msgstr "Kies wie op de hoogte wordt gesteld van nieuwe reacties" -#: admin/admin.php:640 +#: admin/admin.php:686 msgid "Set up email" msgstr "E-mail instellen" -#: admin/admin.php:648 +#: admin/admin.php:694 msgid "your form" msgstr "je formulier" #. translators: %s: form title. -#: admin/admin.php:651 +#: admin/admin.php:697 #, php-format msgid "Finish setting up %s" msgstr "Voltooi het instellen van %s" #. translators: %s: form title. -#: admin/admin.php:659 +#: admin/admin.php:705 #, php-format msgid "View %s (opens in a new tab)" msgstr "Bekijk %s (opent in een nieuw tabblad)" -#: admin/admin.php:664 +#: admin/admin.php:710 msgid "Customize your form to get it ready for real submissions:" msgstr "Pas je formulier aan om het klaar te maken voor echte inzendingen:" -#: admin/admin.php:3896 +#: admin/admin.php:4504 msgid "We’ve already created this form for you. Finish customising it so it’s ready to collect real submissions." msgstr "We hebben dit formulier al voor je gemaakt. Voltooi de aanpassing zodat het klaar is om echte inzendingen te verzamelen." #. translators: %s: form name. -#: admin/admin.php:3901 +#: admin/admin.php:4509 #, php-format msgid "Finish setting up “%s”" msgstr "Voltooi het instellen van “%s”" -#: admin/admin.php:3914 +#: admin/admin.php:4522 msgid "Edit the Thank You message" msgstr "Bewerk het bedankbericht" -#: admin/admin.php:3920 +#: admin/admin.php:4528 msgid "Set where replies go" msgstr "Stel in waar reacties naartoe gaan" @@ -19002,123 +19008,90 @@ msgstr "Kies een afbeeldingsbestand." msgid "This form could not be submitted. Please refresh the page and try again." msgstr "Dit formulier kon niet worden verzonden. Vernieuw de pagina en probeer het opnieuw." -#: admin/admin.php:2341 -#: admin/admin.php:2430 +#: admin/admin.php:2395 +#: admin/admin.php:2484 msgid "Your SureForms database is up to date. New form entries will be saved as usual." msgstr "Uw SureForms-database is up-to-date. Nieuwe formulierinzendingen worden zoals gebruikelijk opgeslagen." -#: admin/admin.php:2355 -#: admin/admin.php:2439 +#: admin/admin.php:2409 +#: admin/admin.php:2493 #: inc/rest-api.php:1447 msgid "SureForms could not finish updating the database. Your hosting may not allow SureForms to create database tables — please contact your hosting provider or SureForms support." msgstr "SureForms kon de database niet voltooien. Uw hosting staat mogelijk niet toe dat SureForms databasetabellen maakt — neem contact op met uw hostingprovider of SureForms-ondersteuning." -#: admin/admin.php:2358 +#: admin/admin.php:2412 msgid "Contact support" msgstr "Contact opnemen met ondersteuning" -#: admin/admin.php:2378 +#: admin/admin.php:2432 msgid "Database update needed" msgstr "Database-update nodig" -#: admin/admin.php:2384 +#: admin/admin.php:2438 msgid "Fix now" msgstr "Nu oplossen" -#: admin/admin.php:2453 +#: admin/admin.php:2507 msgid "SureForms — database update needed" msgstr "SureForms — database-update nodig" -#: admin/admin.php:2458 +#: admin/admin.php:2512 msgid "Update database" msgstr "Database bijwerken" -#: admin/admin.php:2478 +#: admin/admin.php:2532 msgid "You do not have permission to update the database." msgstr "U heeft geen toestemming om de database bij te werken." -#: admin/admin.php:3437 +#: admin/admin.php:3669 msgid "You do not have permission to do this." msgstr "U heeft geen toestemming om dit te doen." -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:3507 -msgid "%d form submission in a row could not be completed." -msgid_plural "%d form submissions in a row could not be completed." -msgstr[0] "%d formulierinzending op rij kon niet worden voltooid." -msgstr[1] "" - -#: admin/admin.php:3515 -msgid "Visitors may be unable to reach you, and those entries were not saved." -msgstr "Bezoekers kunnen u mogelijk niet bereiken en die inzendingen zijn niet opgeslagen." - -#: admin/admin.php:3525 -msgid "Form submissions are completing normally." -msgstr "Formulierinzendingen worden normaal voltooid." - -#: admin/admin.php:3539 -msgid "No caching plugin that needs configuring was found." -msgstr "Er is geen caching-plugin gevonden die moet worden geconfigureerd." - #. translators: %s: caching plugin name. -#: admin/admin.php:3551 +#: admin/admin.php:4209 msgid "%s may interfere with your forms." msgstr "%s kan uw formulieren verstoren." -#: admin/admin.php:3554 -msgid "Caching and JavaScript optimisation can serve a stale copy of your form or load its scripts out of order." -msgstr "Caching en JavaScript-optimalisatie kunnen een verouderde kopie van uw formulier serveren of de scripts in de verkeerde volgorde laden." - -#: admin/admin.php:3555 +#: admin/admin.php:4185 +#: admin/admin.php:4213 msgid "Help Me Fix" msgstr "Help mij oplossen" -#: admin/admin.php:3650 +#: admin/admin.php:4258 msgid "SureForms found your form entries stored under a different database table prefix. Reconnecting them takes a moment, and your existing entries will be kept." msgstr "SureForms heeft uw formulierinzendingen gevonden onder een andere databasetabelprefix. Het opnieuw verbinden duurt een moment en uw bestaande inzendingen blijven behouden." -#: admin/admin.php:3653 +#: admin/admin.php:4261 msgid "SureForms needs to update your database before it can save new form entries. This only takes a moment and will not change your forms or existing content. Entries submitted before now cannot be recovered from here." msgstr "SureForms moet uw database bijwerken voordat het nieuwe formulierinzendingen kan opslaan. Dit duurt slechts een moment en verandert uw formulieren of bestaande inhoud niet. Inzendingen die voor nu zijn ingediend, kunnen hier niet worden hersteld." #. translators: %s: site host. -#: admin/admin.php:4265 +#: admin/admin.php:5032 msgid "SureForms: form submissions are failing on %s" msgstr "SureForms: formulierinzendingen mislukken op %s" -#: admin/admin.php:4274 +#: admin/admin.php:4990 msgid "Debug log: no entries recorded." msgstr "Debuglog: geen inzendingen geregistreerd." #. translators: 1: entries shown, 2: entries recorded. -#: admin/admin.php:4278 +#: admin/admin.php:4995 msgid "Debug log (most recent %1$d of %2$d entries)" msgstr "Debuglog (meest recente %1$d van %2$d inzendingen)" -#: admin/admin.php:4288 -msgid "Older entries were left out to keep this email within the length a mail client accepts. The full log can be downloaded from SureForms → Settings → General." -msgstr "Oudere inzendingen zijn weggelaten om deze e-mail binnen de lengte te houden die een mailclient accepteert. Het volledige logboek kan worden gedownload van SureForms → Instellingen → Algemeen." - -#: admin/admin.php:4318 +#: admin/admin.php:5158 msgid "Hello SureForms support," msgstr "Hallo SureForms-ondersteuning," -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:4322 -msgid "SureForms has recorded %d form submission in a row that could not be completed." -msgid_plural "SureForms has recorded %d form submissions in a row that could not be completed." -msgstr[0] "SureForms heeft %d formulierinzending op rij geregistreerd die niet kon worden voltooid." -msgstr[1] "" - -#: admin/admin.php:4332 +#: admin/admin.php:5182 msgid "Site details" msgstr "Sitegegevens" -#: admin/admin.php:4335 +#: admin/admin.php:5185 msgid "not active" msgstr "niet actief" -#: admin/admin.php:4338 +#: admin/admin.php:5188 msgid "none detected" msgstr "geen gedetecteerd" @@ -19126,7 +19099,7 @@ msgstr "geen gedetecteerd" msgid "No form submission failures have been recorded." msgstr "Er zijn geen mislukte formulierinzendingen geregistreerd." -#: inc/form-submit.php:118 +#: inc/form-submit.php:163 msgid "Not found." msgstr "Niet gevonden." @@ -19211,6 +19184,193 @@ msgstr "Formulierweergaven & Conversie" msgid "Logs" msgstr "Logs" +#: admin/admin.php:2831 +msgid "Previous notice" +msgstr "Vorige melding" + +#: admin/admin.php:2832 +msgid "Next notice" +msgstr "Volgende melding" + +#. translators: 1: current position, 2: total notices. +#: admin/admin.php:2834 +msgid "%1$d of %2$d" +msgstr "%1$d van %2$d" + +#: admin/admin.php:2891 +msgid "Nothing to report." +msgstr "Niets te melden." + +#: admin/admin.php:4057 +#: assets/build/dashboard.js:172 +msgid "Details" +msgstr "Details" + +#: admin/admin.php:4058 +msgid "What we recorded about this problem. Copy it into your support request so we can start from the cause rather than a description of it." +msgstr "Wat we over dit probleem hebben vastgelegd. Kopieer het in uw ondersteuningsverzoek, zodat we kunnen beginnen bij de oorzaak in plaats van een beschrijving ervan." + +#: admin/admin.php:4059 +#: assets/build/dashboard.js:172 +msgid "Copy details" +msgstr "Details kopiëren" + +#: admin/admin.php:4068 +msgid "Copy the details first, so you have them to paste." +msgstr "Kopieer eerst de details, zodat u ze kunt plakken." + +#: admin/admin.php:4072 +msgid "Copied. Contact Support is now available." +msgstr "Gekopieerd. Contact opnemen met ondersteuning is nu beschikbaar." + +#: admin/admin.php:4073 +msgid "Your browser would not let us copy. Select the text above and copy it by hand." +msgstr "Uw browser liet ons niet kopiëren. Selecteer de tekst hierboven en kopieer deze handmatig." + +#: admin/admin.php:4076 +msgid "Recorded diagnostics" +msgstr "Opgenomen diagnostiek" + +#: admin/admin.php:4080 +msgid "Collecting the details…" +msgstr "Details verzamelen…" + +#: admin/admin.php:4081 +msgid "We could not collect the details. Contact Support and describe what happened, and we will take it from there." +msgstr "We konden de details niet verzamelen. Neem contact op met de ondersteuning en beschrijf wat er is gebeurd, dan nemen we het vanaf daar over." + +#. translators: %s: form title. +#: admin/admin.php:4108 +msgid "We noticed a form submission failure on %s." +msgstr "We hebben een fout bij het indienen van het formulier opgemerkt op %s." + +#: admin/admin.php:4109 +msgid "We noticed a form submission failure." +msgstr "We hebben een fout bij het indienen van het formulier opgemerkt." + +#: admin/admin.php:4110 +msgid "Visitors may not be able to reach you, and their entries were not saved." +msgstr "Bezoekers kunnen u mogelijk niet bereiken en hun inzendingen zijn niet opgeslagen." + +#. translators: %s: form title. +#: admin/admin.php:4115 +msgid "We noticed a notification failure on %s." +msgstr "We hebben een fout bij de melding opgemerkt op %s." + +#: admin/admin.php:4116 +msgid "We noticed a notification failure." +msgstr "We hebben een fout bij de melding opgemerkt." + +#: admin/admin.php:4117 +msgid "The entry was saved, but we could not send the email about it. New entries may be coming in without you knowing." +msgstr "De inzending is opgeslagen, maar we konden de e-mail erover niet verzenden. Nieuwe inzendingen kunnen binnenkomen zonder dat u het weet." + +#. translators: %s: form title. +#: admin/admin.php:4132 +msgid "We noticed an integration failure on %s." +msgstr "We hebben een fout bij de integratie opgemerkt op %s." + +#: admin/admin.php:4133 +msgid "We noticed an integration failure." +msgstr "We hebben een fout bij de integratie opgemerkt." + +#: admin/admin.php:4134 +msgid "The entry was saved, but we could not send it to a connected service." +msgstr "De inzending is opgeslagen, maar we konden deze niet naar een verbonden service sturen." + +#: admin/admin.php:4158 +msgid "View details" +msgstr "Details bekijken" + +#: admin/admin.php:4212 +msgid "Caching can show visitors an old copy of your form, or load its scripts in the wrong order." +msgstr "Caching kan bezoekers een oude kopie van uw formulier laten zien of de scripts in de verkeerde volgorde laden." + +#: admin/admin.php:5005 +msgid "Older entries were left out to keep this excerpt readable. The full log can be downloaded from SureForms → Settings → General." +msgstr "Oudere inzendingen zijn weggelaten om dit fragment leesbaar te houden. Het volledige logboek kan worden gedownload van SureForms → Instellingen → Algemeen." + +#. translators: %s: site host. +#: admin/admin.php:5034 +msgid "SureForms has recorded form submissions on %s that could not be completed." +msgstr "SureForms heeft formulierinzendingen geregistreerd op %s die niet konden worden voltooid." + +#. translators: %s: site host. +#: admin/admin.php:5038 +msgid "SureForms: notification emails are not being sent on %s" +msgstr "SureForms: notificatie-e-mails worden niet verzonden op %s" + +#. translators: %s: site host. +#: admin/admin.php:5040 +msgid "SureForms saved entries on %s but could not send the notification emails for them." +msgstr "SureForms heeft inzendingen opgeslagen op %s maar kon de notificatie-e-mails ervoor niet verzenden." + +#. translators: %s: site host. +#: admin/admin.php:5044 +msgid "SureForms: an integration is not receiving entries on %s" +msgstr "SureForms: een integratie ontvangt geen inzendingen op %s" + +#. translators: %s: site host. +#: admin/admin.php:5046 +msgid "SureForms saved entries on %s but could not pass them to a connected service." +msgstr "SureForms heeft inzendingen opgeslagen op %s maar kon deze niet doorsturen naar een verbonden service." + +#. translators: %s: site host. +#: admin/admin.php:5056 +msgid "SureForms: a problem with the forms on %s" +msgstr "SureForms: een probleem met de formulieren op %s" + +#. translators: %s: site host. +#: admin/admin.php:5058 +msgid "SureForms has recorded a problem with the forms on %s." +msgstr "SureForms heeft een probleem met de formulieren op %s geregistreerd." + +#. translators: %d: number of failed submissions. +#: admin/admin.php:5083 +msgid "SureForms has recorded %d form submission that could not be completed." +msgid_plural "SureForms has recorded %d form submissions that could not be completed." +msgstr[0] "SureForms heeft %d formulierinzending geregistreerd die niet kon worden voltooid." +msgstr[1] "" + +#. translators: %d: number of failed notifications. +#: admin/admin.php:5095 +msgid "SureForms saved %d entry but could not send the notification email for it." +msgid_plural "SureForms saved %d entries but could not send the notification emails for them." +msgstr[0] "SureForms heeft %d inzending opgeslagen maar kon de notificatie-e-mail ervoor niet verzenden." +msgstr[1] "" + +#. translators: %d: number of failed integration hand-offs. +#: admin/admin.php:5107 +msgid "SureForms saved %d entry but could not pass it to a connected service." +msgid_plural "SureForms saved %d entries but could not pass them to a connected service." +msgstr[0] "SureForms heeft %d inzending opgeslagen maar kon deze niet doorsturen naar een verbonden service." +msgstr[1] "" + +#. translators: %d: number of recorded problems. +#: admin/admin.php:5119 +msgid "SureForms has recorded %d problem with the forms on this site." +msgid_plural "SureForms has recorded %d problems with the forms on this site." +msgstr[0] "SureForms heeft %d probleem met de formulieren op deze site geregistreerd." +msgstr[1] "" + +#. translators: %s: form title. +#: admin/admin.php:5169 +msgid "Form: %s" +msgstr "Formulier: %s" + +#: admin/admin.php:5189 +msgid "none recorded" +msgstr "geen geregistreerd" + +#. translators: %s: date and time of the previous report, in the site's timezone. +#: admin/admin.php:5212 +msgid "Previously reported: %s" +msgstr "Eerder gemeld: %s" + +#: assets/build/settings.js:172 +msgid "Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures." +msgstr "Weergaven en inzendingen door iedereen die de site kan bewerken, worden normaal weggelaten, zodat het testen van uw eigen formulieren deze cijfers niet verandert." + #: inc/post-types.php:265 msgctxt "post type general name" msgid "Forms" diff --git a/languages/sureforms-pl_PL-51635fe6489fc8288d603fe596c755ca.json b/languages/sureforms-pl_PL-51635fe6489fc8288d603fe596c755ca.json index 5de595f4f..eeacebb35 100644 --- a/languages/sureforms-pl_PL-51635fe6489fc8288d603fe596c755ca.json +++ b/languages/sureforms-pl_PL-51635fe6489fc8288d603fe596c755ca.json @@ -1 +1 @@ -{"translation-revision-date":"2025-01-02T08:44:41+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Panel sterowania"],"Settings":["Ustawienia"],"Entries":["Wpisy"],"Status":["Status"],"Form":["Formularz"],"Activated":["Aktywowany"],"Activate":["Aktywuj"],"Address":["Adres"],"Checkbox":["Pole wyboru"],"Dropdown":["Lista rozwijana"],"Email":["E-mail"],"Number":["Numer"],"Phone":["Telefon"],"Textarea":["Pole tekstowe"],"Monday":["Poniedzia\u0142ek"],"Forms":["Formularze"],"New Form Submission - %s":["Nowe przes\u0142anie formularza - %s"],"GitHub":["GitHub"],"(no title)":["(brak tytu\u0142u)"],"General":["Og\u00f3lny"],"No tags available":["Brak dost\u0119pnych tag\u00f3w"],"Back":["Wstecz"],"Generic tags":["Og\u00f3lne tagi"],"Other":["Inne"],"Confirm":["Potwierd\u017a"],"Cancel":["Anuluj"],"Install":["Zainstaluj"],"Plugin Installation failed, Please try again later.":["Instalacja wtyczki nie powiod\u0142a si\u0119, spr\u00f3buj ponownie p\u00f3\u017aniej."],"Plugin activation failed, Please try again later.":["Aktywacja wtyczki nie powiod\u0142a si\u0119, spr\u00f3buj ponownie p\u00f3\u017aniej."],"Integrations":["Integracje"],"What's New?":["Co nowego?"],"Core":["Rdze\u0144"],"Unlicensed":["Bez licencji"],"Connecting\u2026":["\u0141\u0105czenie\u2026"],"Install & Activate":["Zainstaluj i aktywuj"],"Compliance Settings":["Ustawienia zgodno\u015bci"],"Enable GDPR Compliance":["W\u0142\u0105cz zgodno\u015b\u0107 z RODO"],"Never store entry data after form submission":["Nigdy nie przechowuj danych wej\u015bciowych po przes\u0142aniu formularza"],"When enabled this form will never store Entries.":["Gdy jest w\u0142\u0105czony, ten formularz nigdy nie b\u0119dzie przechowywa\u0142 wpis\u00f3w."],"Automatically delete entries":["Automatycznie usu\u0144 wpisy"],"When enabled this form will automatically delete entries after a certain period of time.":["Po w\u0142\u0105czeniu ten formularz automatycznie usunie wpisy po okre\u015blonym czasie."],"Entries older than the days set will be deleted automatically.":["Wpisy starsze ni\u017c ustawione dni zostan\u0105 usuni\u0119te automatycznie."],"Visual":["Wizualny"],"HTML":["HTML"],"All Data":["Wszystkie dane"],"Add Shortcode":["Dodaj shortcode"],"Form input tags":["Tagi wej\u015bciowe formularza"],"Comma separated values are also accepted.":["Warto\u015bci oddzielone przecinkami s\u0105 r\u00f3wnie\u017c akceptowane."],"Email Notification":["Powiadomienie e-mail"],"Name":["Imi\u0119"],"Send Email To":["Wy\u015blij e-mail do"],"Subject":["Temat"],"CC":["DW"],"BCC":["UDW"],"Reply To":["Odpowiedz do"],"Add Key":["Dodaj klucz"],"Add Value":["Dodaj warto\u015b\u0107"],"Add":["Dodaj"],"Confirmation Message":["Wiadomo\u015b\u0107 potwierdzaj\u0105ca"],"After Form Submission":["Po przes\u0142aniu formularza"],"Hide Form":["Ukryj formularz"],"Reset Form":["Zresetuj formularz"],"Custom URL":["Niestandardowy URL"],"Add Query Parameters":["Dodaj parametry zapytania"],"Select if you want to add key-value pairs for form fields to include in query parameters":["Wybierz, je\u015bli chcesz doda\u0107 pary klucz-warto\u015b\u0107 dla p\u00f3l formularza do uwzgl\u0119dnienia w parametrach zapytania"],"Query Parameters":["Parametry zapytania"],"Success Message":["Komunikat o sukcesie"],"Redirect":["Przekieruj"],"Redirect to":["Przekieruj do"],"Page":["Strona"],"Form Confirmation":["Potwierdzenie formularza"],"Confirmation Type":["Typ potwierdzenia"],"Clear":["Wyczy\u015b\u0107"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Niewidoczna"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Walidacje"],"Spam Protection":["Ochrona przed spamem"],"Email Summaries":["Podsumowania e-maili"],"Tuesday":["Wtorek"],"Wednesday":["\u015aroda"],"Thursday":["Czwartek"],"Friday":["Pi\u0105tek"],"Saturday":["Sobota"],"Sunday":["Niedziela"],"Test Email":["Testowy email"],"Schedule Reports":["Zaplanuj raporty"],"IP Logging":["Rejestrowanie IP"],"If this option is turned on, the user's IP address will be saved with the form data":["Je\u015bli ta opcja jest w\u0142\u0105czona, adres IP u\u017cytkownika zostanie zapisany wraz z danymi formularza"],"Confirmation Email Mismatch Message":["Wiadomo\u015b\u0107 o niezgodno\u015bci e-maila potwierdzaj\u0105cego"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s oznacza minimaln\u0105 warto\u015b\u0107 wej\u015bciow\u0105. Na przyk\u0142ad: \"Minimalna warto\u015b\u0107 to 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s oznacza maksymaln\u0105 warto\u015b\u0107 wej\u015bciow\u0105. Na przyk\u0142ad: \"Maksymalna warto\u015b\u0107 to 100.\""],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s oznacza minimaln\u0105 liczb\u0119 wymaganych wybor\u00f3w. Na przyk\u0142ad: \u201eWymagane s\u0105 co najmniej 2 wybory\u201d."],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s oznacza maksymaln\u0105 liczb\u0119 dozwolonych wybor\u00f3w. Na przyk\u0142ad: \u201eDozwolone s\u0105 maksymalnie 4 wybory.\u201d"],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s oznacza minimaln\u0105 liczb\u0119 potrzebnych wybor\u00f3w. Na przyk\u0142ad: \u201eWymagany jest co najmniej 1 wyb\u00f3r.\u201d"],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s oznacza maksymaln\u0105 liczb\u0119 dozwolonych wybor\u00f3w. Na przyk\u0142ad: \u201eDozwolone s\u0105 maksymalnie 3 wybory\u201d."]," Error Message":["Komunikat o b\u0142\u0119dzie"],"Auto":["Samoch\u00f3d"],"Light":["\u015awiat\u0142o"],"Dark":["Ciemny"],"Turnstile":["Bramka"],"Honeypot":["Pu\u0142apka"],"Get Keys":["Pobierz klucze"],"Documentation":["Dokumentacja"],"Site Key":["Klucz strony"],"Secret Key":["Klucz tajny"],"Cloudflare Turnstile":["Cloudflare Turnstile"],"Appearance Mode":["Tryb wygl\u0105du"],"Enable Honeypot Security":["W\u0142\u0105cz zabezpieczenie Honeypot"],"Enable Honeypot Security for better spam protection":["W\u0142\u0105cz Honeypot Security dla lepszej ochrony przed spamem"],"Text":["Tekst"],"OttoKit":["OttoKit"],"Connect with OttoKit":["Po\u0142\u0105cz si\u0119 z OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Bie\u017c\u0105cy adres \u201eOd e-mail\u201d nie pasuje do nazwy domeny Twojej strony internetowej (%1$s). Mo\u017ce to spowodowa\u0107, \u017ce Twoje e-maile z powiadomieniami b\u0119d\u0105 blokowane lub oznaczane jako spam. Alternatywnie, spr\u00f3buj u\u017cy\u0107 adresu Od, kt\u00f3ry pasuje do domeny Twojej strony internetowej (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Obecny adres \u201eOd e-mail\u201d nie pasuje do nazwy domeny Twojej strony internetowej (%s). Mo\u017ce to spowodowa\u0107, \u017ce Twoje e-maile z powiadomieniami zostan\u0105 zablokowane lub oznaczone jako spam."],"We strongly recommend that you install the free ":["Zalecamy zdecydowanie zainstalowanie darmowego"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["wtyczka! Kreator konfiguracji u\u0142atwia napraw\u0119 Twoich e-maili."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Alternatywnie spr\u00f3buj u\u017cy\u0107 adresu nadawcy, kt\u00f3ry pasuje do domeny Twojej strony internetowej (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Prosz\u0119 wprowadzi\u0107 prawid\u0142owy adres e-mail. Powiadomienia nie b\u0119d\u0105 wysy\u0142ane, je\u015bli pole nie zostanie wype\u0142nione poprawnie."],"From Name":["Od Nazwa"],"From Email":["Z e-maila"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Bie\u017c\u0105cy adres \u201eOd e-mail\u201d mo\u017ce nie pasowa\u0107 do nazwy domeny Twojej strony internetowej (%1$s). Mo\u017ce to spowodowa\u0107, \u017ce Twoje e-maile z powiadomieniami zostan\u0105 zablokowane lub oznaczone jako spam. Alternatywnie, spr\u00f3buj u\u017cy\u0107 adresu Od, kt\u00f3ry pasuje do domeny Twojej strony internetowej (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Obecny adres \u201eOd e-mail\u201d mo\u017ce nie pasowa\u0107 do nazwy domeny Twojej strony internetowej (%s). Mo\u017ce to spowodowa\u0107, \u017ce Twoje e-maile z powiadomieniami zostan\u0105 zablokowane lub oznaczone jako spam."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Gotowy, aby wyj\u015b\u0107 poza darmowy plan?"],"Upgrade now":["Zaktualizuj teraz"],"and unlock the full power of SureForms!":["i odblokuj pe\u0142n\u0105 moc SureForms!"],"Upgrade SureForms":["Uaktualnij SureForms"],"Upgrade Now":["Zaktualizuj teraz"],"Entries older than the selected days will be deleted.":["Wpisy starsze ni\u017c wybrane dni zostan\u0105 usuni\u0119te."],"Entries Time Period":["Okres czasu wpis\u00f3w"],"Notifications can use only one From Email so please enter a single address.":["Powiadomienia mog\u0105 u\u017cywa\u0107 tylko jednego adresu e-mail nadawcy, wi\u0119c prosz\u0119 poda\u0107 jeden adres."],"Select Page to redirect":["Wybierz stron\u0119 do przekierowania"],"Search for a page":["Wyszukaj stron\u0119"],"Select a page":["Wybierz stron\u0119"],"Form Validation":["Walidacja formularza"],"Required Error Messages":["Wymagane komunikaty o b\u0142\u0119dach"],"Other Error Messages":["Inne komunikaty o b\u0142\u0119dach"],"Input Field Unique":["Pole wej\u015bciowe unikalne"],"Email Field Unique":["Pole e-mail musi by\u0107 unikalne"],"Invalid URL":["Nieprawid\u0142owy URL"],"Phone Field Unique":["Pole telefonu unikalne"],"Invalid Field Number Block":["Nieprawid\u0142owy blok numeru pola"],"Invalid Email":["Nieprawid\u0142owy adres e-mail"],"Number Minimum Value":["Minimalna warto\u015b\u0107 liczby"],"Number Maximum Value":["Maksymalna warto\u015b\u0107 liczby"],"Dropdown Minimum Selections":["Minimalna liczba wybor\u00f3w w rozwijanym menu"],"Dropdown Maximum Selections":["Maksymalna liczba wybor\u00f3w w rozwijanym menu"],"Multiple Choice Minimum Selections":["Minimalna liczba wybor\u00f3w w pytaniach wielokrotnego wyboru"],"Multiple Choice Maximum Selections":["Wielokrotny wyb\u00f3r maksymalna liczba zaznacze\u0144"],"Input Field":["Pole wej\u015bciowe"],"Email Field":["Pole e-mail"],"URL Field":["Pole URL"],"Phone Field":["Pole telefonu"],"Textarea Field":["Pole tekstowe"],"Checkbox Field":["Pole wyboru"],"Dropdown Field":["Pole rozwijane"],"Multiple Choice Field":["Pole wyboru wielokrotnego"],"Address Field":["Pole adresu"],"Number Field":["Pole liczby"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Aby w\u0142\u0105czy\u0107 funkcj\u0119 reCAPTCHA w SureForms, w\u0142\u0105cz opcj\u0119 reCAPTCHA w ustawieniach blok\u00f3w i wybierz wersj\u0119. Dodaj tutaj tajny klucz i klucz witryny Google reCAPTCHA. reCAPTCHA zostanie dodana do Twojej strony na froncie."],"Enter your %s here":["Wprowad\u017a tutaj sw\u00f3j %s"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Aby w\u0142\u0105czy\u0107 hCAPTCHA, dodaj klucz witryny i klucz tajny. Skonfiguruj te ustawienia w poszczeg\u00f3lnych formularzach."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Aby w\u0142\u0105czy\u0107 Cloudflare Turnstile, dodaj klucz witryny i klucz tajny. Skonfiguruj te ustawienia w ramach poszczeg\u00f3lnego formularza."],"Save":["Zapisz"],"Anonymous Analytics":["Anonimowa Analiza"],"Learn More":["Dowiedz si\u0119 wi\u0119cej"],"Admin Notification":["Powiadomienie administratora"],"Enable Admin Notification":["W\u0142\u0105cz powiadomienia administratora"],"Admin notifications keep you informed about new form entries since your last visit.":["Powiadomienia administracyjne informuj\u0105 Ci\u0119 o nowych wpisach formularza od Twojej ostatniej wizyty."],"Skip":["Pomi\u0144"],"Continue":["Kontynuuj"],"Maximum Number of Entries":["Maksymalna liczba wpis\u00f3w"],"Maximum Entries":["Maksymalna liczba wpis\u00f3w"],"Response Description After Maximum Entries":["Opis odpowiedzi po maksymalnej liczbie wpis\u00f3w"],"Get Started":["Rozpocznij"],"Integration":["Integracja"],"Connect Native Integrations with SureForms":["Po\u0142\u0105cz natywne integracje z SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Odblokuj pot\u0119\u017cne integracje w planie Premium, aby zautomatyzowa\u0107 swoje przep\u0142ywy pracy i po\u0142\u0105czy\u0107 SureForms bezpo\u015brednio z ulubionymi narz\u0119dziami."],"Send form submissions straight to CRMs, email, and marketing platforms":["Wysy\u0142aj zg\u0142oszenia formularzy bezpo\u015brednio do CRM, e-maili i platform marketingowych"],"Automate repetitive tasks with seamless data syncing":["Zautomatyzuj powtarzalne zadania dzi\u0119ki p\u0142ynnej synchronizacji danych"],"Access exclusive native integrations for faster workflows":["Uzyskaj dost\u0119p do ekskluzywnych natywnych integracji dla szybszych przep\u0142yw\u00f3w pracy"],"Expected format for emails - email@sureforms.com or John Doe ":["Oczekiwany format dla e-maili - email@sureforms.com lub John Doe "],"Payments":["P\u0142atno\u015bci"],"Stripe account disconnected successfully.":["Konto Stripe zosta\u0142o pomy\u015blnie od\u0142\u0105czone."],"Failed to create webhook.":["Nie uda\u0142o si\u0119 utworzy\u0107 webhooka."],"Failed to connect to Stripe.":["Nie uda\u0142o si\u0119 po\u0142\u0105czy\u0107 ze Stripe."],"Webhook":["Webhook"],"Knowledge Base":["Baza wiedzy"],"What\u2019s New":["Co nowego"],"out of":["z"],"No entries found":["Nie znaleziono wpis\u00f3w"],"delete":["usu\u0144"],"Please type \"%s\" in the input box":["Prosz\u0119 wpisa\u0107 \"%s\" w polu wej\u015bciowym"],"To confirm, type \"%s\" in the box below:":["Aby potwierdzi\u0107, wpisz \"%s\" w polu poni\u017cej:"],"Type \"%s\"":["Wpisz \"%s\""],"Go to OttoKit Settings":["Przejd\u017a do ustawie\u0144 OttoKit"],"USD - US Dollar":["USD - Dolar ameryka\u0144ski"],"Payment Mode":["Tryb p\u0142atno\u015bci"],"Test Mode":["Tryb testowy"],"Live Mode":["Tryb na \u017cywo"],"Action":["Akcja"],"General Settings":["Ustawienia og\u00f3lne"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Skonfiguruj podsumowania e-mail, alerty administratora i preferencje danych, aby \u0142atwo zarz\u0105dza\u0107 swoimi formularzami."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Dostosuj domy\u015blne komunikaty o b\u0142\u0119dach wy\u015bwietlane, gdy u\u017cytkownicy przesy\u0142aj\u0105 nieprawid\u0142owe lub niekompletne wpisy formularza."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["W\u0142\u0105cz ochron\u0119 przed spamem dla swoich formularzy, korzystaj\u0105c z us\u0142ug CAPTCHA lub zabezpiecze\u0144 typu honeypot."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Po\u0142\u0105cz i zarz\u0105dzaj swoimi bramkami p\u0142atno\u015bci, aby bezpiecznie akceptowa\u0107 transakcje za po\u015brednictwem swoich formularzy."],"1% transaction and payment gateway fees apply.":["Obowi\u0105zuje 1% op\u0142ata transakcyjna i op\u0142ata za bramk\u0119 p\u0142atnicz\u0105."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["Obowi\u0105zuj\u0105 op\u0142aty za transakcje i bramki p\u0142atnicze w wysoko\u015bci 2,9%. Aktywuj licencj\u0119, aby zmniejszy\u0107 op\u0142aty transakcyjne."],"2.9% transaction and payment gateway fees apply.":["Obowi\u0105zuj\u0105 op\u0142aty za transakcje i bramki p\u0142atnicze w wysoko\u015bci 2,9%."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Prosz\u0119 odwiedzi\u0107 %1$s, usun\u0105\u0107 nieu\u017cywany webhook, a nast\u0119pnie klikn\u0105\u0107 poni\u017cej, aby spr\u00f3bowa\u0107 ponownie."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms nie m\u00f3g\u0142 utworzy\u0107 webhooka, poniewa\u017c na Twoim koncie Stripe sko\u0144czy\u0142y si\u0119 darmowe sloty. Webhooki s\u0105 potrzebne do otrzymywania aktualizacji o p\u0142atno\u015bciach."],"Stripe Dashboard":["Pulpit Stripe"],"Creating\u2026":["Tworzenie\u2026"],"Create Webhook":["Utw\u00f3rz Webhook"],"Successfully connected to Stripe!":["Pomy\u015blnie po\u0142\u0105czono ze Stripe!"],"Invalid response from server. Please try again.":["Nieprawid\u0142owa odpowied\u017a z serwera. Prosz\u0119 spr\u00f3bowa\u0107 ponownie."],"Failed to disconnect Stripe account.":["Nie uda\u0142o si\u0119 od\u0142\u0105czy\u0107 konta Stripe."],"Webhook created successfully!":["Webhook utworzony pomy\u015blnie!"],"Select Currency":["Wybierz walut\u0119"],"Select the default currency for payment forms.":["Wybierz domy\u015bln\u0105 walut\u0119 dla formularzy p\u0142atno\u015bci."],"Connection Status":["Status po\u0142\u0105czenia"],"Disconnect Stripe Account":["Od\u0142\u0105cz konto Stripe"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["Czy na pewno chcesz od\u0142\u0105czy\u0107 swoje konto Stripe? Spowoduje to zatrzymanie wszystkich aktywnych p\u0142atno\u015bci, subskrypcji i transakcji formularzy powi\u0105zanych z tym kontem."],"Disconnect":["Roz\u0142\u0105cz"],"Disconnecting\u2026":["Roz\u0142\u0105czanie\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook zosta\u0142 pomy\u015blnie po\u0142\u0105czony, wszystkie zdarzenia Stripe s\u0105 \u015bledzone."],"Connect your Stripe account to start accepting payments through your forms.":["Po\u0142\u0105cz swoje konto Stripe, aby zacz\u0105\u0107 przyjmowa\u0107 p\u0142atno\u015bci za po\u015brednictwem formularzy."],"Connect to Stripe":["Po\u0142\u0105cz z Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Bezpiecznie po\u0142\u0105cz si\u0119 ze Stripe kilkoma klikni\u0119ciami, aby zacz\u0105\u0107 akceptowa\u0107 p\u0142atno\u015bci!"],"Set the total number of submissions allowed for this form.":["Ustaw ca\u0142kowit\u0105 liczb\u0119 dozwolonych zg\u0142osze\u0144 dla tego formularza."],"Payment Methods":["Metody p\u0142atno\u015bci"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["Tryb testowy pozwala na przetwarzanie p\u0142atno\u015bci bez rzeczywistych op\u0142at. Prze\u0142\u0105cz si\u0119 na tryb na \u017cywo, aby dokonywa\u0107 rzeczywistych transakcji."],"General Payment Settings":["Og\u00f3lne ustawienia p\u0142atno\u015bci"],"These settings apply to all payment gateways.":["Te ustawienia maj\u0105 zastosowanie do wszystkich bramek p\u0142atniczych."],"Stripe Settings":["Ustawienia Stripe"],"Left ($100)":["Lewo ($100)"],"Right (100$)":["Prawo (100$)"],"Left Space ($ 100)":["Wolna przestrze\u0144 ($ 100)"],"Right Space (100 $)":["Prawe Miejsce (100 $)"],"Currency Sign Position":["Pozycja znaku waluty"],"Select the position of the currency symbol relative to the amount.":["Wybierz pozycj\u0119 symbolu waluty wzgl\u0119dem kwoty."],"Learn":["Ucz si\u0119"],"Enable email summaries":["W\u0142\u0105cz podsumowania e-mail"],"Enable IP logging":["W\u0142\u0105cz logowanie IP"],"Turn on Admin Notification from here.":["W\u0142\u0105cz powiadomienia administratora st\u0105d."],"New":["Nowy"],"Send entries to 100+ popular apps.":["Wy\u015blij wpisy do ponad 100 popularnych aplikacji."],"Build automated workflows that run instantly.":["Tw\u00f3rz zautomatyzowane przep\u0142ywy pracy, kt\u00f3re dzia\u0142aj\u0105 natychmiast."],"Create custom app integrations using our Custom App feature.":["Tw\u00f3rz niestandardowe integracje aplikacji za pomoc\u0105 funkcji Niestandardowa Aplikacja."],"Keep your tools in sync automatically.":["Utrzymuj swoje narz\u0119dzia w synchronizacji automatycznie."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["To zainstaluje i aktywuje OttoKit na Twojej stronie WordPress, aby w\u0142\u0105czy\u0107 funkcje automatyzacji."],"Automate Your Forms with OttoKit":["Zautomatyzuj swoje formularze za pomoc\u0105 OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Ka\u017cde przes\u0142anie formularza powinno wywo\u0142a\u0107 jak\u0105\u015b akcj\u0119 \u2014 alert w Slacku, lead w CRM, e-mail z przypomnieniem lub nowy wiersz w Arkuszach Google."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Skonfiguruj uprawnienia klienta AI i ustawienia serwera MCP."],"View documentation":["Wy\u015bwietl dokumentacj\u0119"],"Copy to clipboard":["Kopiuj do schowka"],"Claude Desktop":["Pulpit Claude"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) lub %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["Kod Claude"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (projekt) lub ~\/.claude.json (globalny)"],"Cursor":["Kursor"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (projekt) lub settings.json > mcp.servers (globalne)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml lub config.json"],"Your client's MCP configuration file":["Plik konfiguracyjny MCP Twojego klienta"],"Connect Your AI Client":["Po\u0142\u0105cz swojego klienta AI"],"AI Client":["Klient AI"],"Create an Application Password \u2014 ":["Utw\u00f3rz has\u0142o aplikacji \u2014"],"Open Application Passwords":["Otw\u00f3rz has\u0142a aplikacji"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Lub u\u017cyj tego polecenia CLI, aby szybko doda\u0107 serwer (nadal b\u0119dziesz musia\u0142 ustawi\u0107 zmienne \u015brodowiskowe):"],"Copy the JSON config below into: ":["Skopiuj poni\u017csz\u0105 konfiguracj\u0119 JSON do:"],"Replace \"your-application-password\" with the password from Step 1.":["Zast\u0105p \"your-application-password\" has\u0142em z Kroku 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 punkt ko\u0144cowy MCP Twojej witryny. WP_API_USERNAME \u2014 Twoja nazwa u\u017cytkownika WordPress. WP_API_PASSWORD \u2014 has\u0142o aplikacji, kt\u00f3re wygenerowa\u0142e\u015b."],"View setup docs":["Wy\u015bwietl dokumentacj\u0119 konfiguracji"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["Wtyczka MCP Adapter jest zainstalowana, ale nieaktywna. Aktywuj j\u0105, aby skonfigurowa\u0107 ustawienia MCP."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["Wtyczka MCP Adapter jest wymagana do po\u0142\u0105czenia klient\u00f3w AI z Twoimi formularzami. Pobierz i zainstaluj j\u0105 z GitHub, a nast\u0119pnie aktywuj."],"Download the latest release from":["Pobierz najnowsz\u0105 wersj\u0119 z"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Zainstaluj wtyczk\u0119, przechodz\u0105c do Wtyczki > Dodaj now\u0105 wtyczk\u0119 > Prze\u015blij wtyczk\u0119."],"Activate the MCP Adapter plugin.":["Aktywuj wtyczk\u0119 MCP Adapter."],"Activating\u2026":["Aktywowanie\u2026"],"Activate MCP Adapter":["Aktywuj adapter MCP"],"Download MCP Adapter":["Pobierz adapter MCP"],"Experimental":["Eksperymentalny"],"Enable Abilities":["W\u0142\u0105cz umiej\u0119tno\u015bci"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Zarejestruj mo\u017cliwo\u015bci SureForms w API Umiej\u0119tno\u015bci WordPress. Po w\u0142\u0105czeniu klienci AI mog\u0105 wy\u015bwietla\u0107, czyta\u0107, tworzy\u0107, edytowa\u0107 i usuwa\u0107 Twoje formularze i wpisy. Po wy\u0142\u0105czeniu \u017cadne umiej\u0119tno\u015bci nie s\u0105 rejestrowane i klienci AI nie mog\u0105 wykonywa\u0107 \u017cadnych dzia\u0142a\u0144 na Twoich formularzach."],"Abilities API \u2014 Edit":["API umiej\u0119tno\u015bci \u2014 Edytuj"],"Enable Edit Abilities":["W\u0142\u0105cz mo\u017cliwo\u015bci edycji"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Po w\u0142\u0105czeniu klienci AI mog\u0105 tworzy\u0107 nowe formularze, aktualizowa\u0107 tytu\u0142y formularzy, pola i ustawienia, duplikowa\u0107 formularze oraz modyfikowa\u0107 statusy wpis\u00f3w. Po wy\u0142\u0105czeniu te mo\u017cliwo\u015bci s\u0105 wyrejestrowane i klienci AI mog\u0105 jedynie odczytywa\u0107 Twoje dane."],"Abilities API \u2014 Delete":["API umiej\u0119tno\u015bci \u2014 Usu\u0144"],"Enable Delete Abilities":["W\u0142\u0105cz mo\u017cliwo\u015b\u0107 usuwania"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Po w\u0142\u0105czeniu klienci AI mog\u0105 trwale usuwa\u0107 formularze i wpisy. Usuni\u0119tych danych nie mo\u017cna odzyska\u0107. Po wy\u0142\u0105czeniu, mo\u017cliwo\u015bci usuwania s\u0105 wyrejestrowane i klienci AI nie mog\u0105 usuwa\u0107 \u017cadnych danych."],"MCP Server":["Serwer MCP"],"Enable MCP Server":["W\u0142\u0105cz serwer MCP"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Tworzy dedykowany punkt ko\u0144cowy SureForms MCP, do kt\u00f3rego mog\u0105 si\u0119 pod\u0142\u0105czy\u0107 klienci AI, tacy jak Claude. Gdy jest wy\u0142\u0105czony, punkt ko\u0144cowy jest usuwany i zewn\u0119trzni klienci AI nie mog\u0105 odkrywa\u0107 ani wywo\u0142ywa\u0107 \u017cadnych funkcji SureForms."],"Learn more":["Dowiedz si\u0119 wi\u0119cej"],"MCP Adapter Required":["Wymagany adapter MCP"],"Heading 1":["Nag\u0142\u00f3wek 1"],"Heading 2":["Nag\u0142\u00f3wek 2"],"Heading 3":["Nag\u0142\u00f3wek 3"],"Heading 4":["Nag\u0142\u00f3wek 4"],"Heading 5":["Nag\u0142\u00f3wek 5"],"Heading 6":["Nag\u0142\u00f3wek 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Skonfiguruj klucz API Google Maps do autouzupe\u0142niania adres\u00f3w i podgl\u0105du mapy."],"Help shape the future of SureForms":["Pom\u00f3\u017c kszta\u0142towa\u0107 przysz\u0142o\u015b\u0107 SureForms"],"Enable Google Address Autocomplete":["W\u0142\u0105cz autouzupe\u0142nianie adres\u00f3w Google"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Uaktualnij do planu SureForms Business, aby doda\u0107 autouzupe\u0142nianie adres\u00f3w zasilane przez Google z interaktywnym podgl\u0105dem mapy do swoich formularzy."],"Auto-suggest addresses as users type for faster, error-free submissions":["Automatyczne sugerowanie adres\u00f3w podczas pisania przez u\u017cytkownik\u00f3w dla szybszych, bezb\u0142\u0119dnych zg\u0142osze\u0144"],"Show an interactive map preview with draggable pin for precise locations":["Poka\u017c interaktywny podgl\u0105d mapy z przeci\u0105galnym pinezk\u0105 dla precyzyjnych lokalizacji"],"Automatically populate address fields like city, state, and postal code":["Automatycznie wype\u0142niaj pola adresowe, takie jak miasto, wojew\u00f3dztwo i kod pocztowy"],"This form is now closed as we've received all the entries.":["Formularz jest teraz zamkni\u0119ty, poniewa\u017c otrzymali\u015bmy wszystkie zg\u0142oszenia."],"Thank you for contacting us! We will be in touch with you shortly.":["Dzi\u0119kujemy za skontaktowanie si\u0119 z nami! Wkr\u00f3tce si\u0119 z Tob\u0105 skontaktujemy."],"Saving\u2026":["Zapisywanie\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Po w\u0142\u0105czeniu tego formularza nie b\u0119d\u0105 przechowywane adres IP u\u017cytkownika, nazwa przegl\u0105darki i nazwa urz\u0105dzenia w wpisach."],"Form data":["Dane formularza"],"Unsaved changes":["Niezapisane zmiany"],"Keep editing":["Kontynuuj edytowanie"],"Global Defaults":["Domy\u015blne ustawienia globalne"],"Form Restrictions":["Ograniczenia formularza"],"Configure default settings that apply to newly created forms.":["Skonfiguruj domy\u015blne ustawienia, kt\u00f3re maj\u0105 zastosowanie do nowo utworzonych formularzy."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Zbieraj niesensytywne informacje z Twojej strony internetowej, takie jak wersja PHP i u\u017cywane funkcje, aby pom\u00f3c nam szybciej naprawia\u0107 b\u0142\u0119dy, podejmowa\u0107 m\u0105drzejsze decyzje i tworzy\u0107 funkcje, kt\u00f3re naprawd\u0119 maj\u0105 dla Ciebie znaczenie."],"Failed to load pages. Please refresh and try again.":["Nie uda\u0142o si\u0119 za\u0142adowa\u0107 stron. Od\u015bwie\u017c i spr\u00f3buj ponownie."],"Failed to load settings. Please refresh and try again.":["Nie uda\u0142o si\u0119 za\u0142adowa\u0107 ustawie\u0144. Od\u015bwie\u017c stron\u0119 i spr\u00f3buj ponownie."],"Form Validation fields cannot be left blank.":["Pola walidacji formularza nie mog\u0105 pozosta\u0107 puste."],"Recipient email is required when email summaries are enabled.":["Adres e-mail odbiorcy jest wymagany, gdy w\u0142\u0105czone s\u0105 podsumowania e-mail."],"Please enter a valid recipient email.":["Prosz\u0119 wprowadzi\u0107 prawid\u0142owy adres e-mail odbiorcy."],"Settings saved.":["Ustawienia zapisane."],"Failed to save settings.":["Nie uda\u0142o si\u0119 zapisa\u0107 ustawie\u0144."],"Some settings failed to save. Please retry.":["Niekt\u00f3re ustawienia nie zosta\u0142y zapisane. Prosz\u0119 spr\u00f3bowa\u0107 ponownie."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Niekt\u00f3re pola maj\u0105 niezapisane zmiany. Odrzu\u0107 je, aby kontynuowa\u0107, lub zosta\u0144, aby zapisa\u0107 swoje edycje."],"Discard & switch":["Odrzu\u0107 i prze\u0142\u0105cz"],"Import":["Import"],"Migration":["Migracja"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importuj formularze z Contact Form 7, WPForms, Gravity Forms i innych wtyczek do SureForms."],"Could not generate the import preview.":["Nie mo\u017cna wygenerowa\u0107 podgl\u0105du importu."],"Import failed. Please try again or check your error logs.":["Importowanie nie powiod\u0142o si\u0119. Spr\u00f3buj ponownie lub sprawd\u017a swoje dzienniki b\u0142\u0119d\u00f3w."],"Go back":["Wr\u00f3\u0107"],"Update & import":["Aktualizuj i importuj"],"Confirm & import":["Potwierd\u017a i zaimportuj"],"Form #%s":["Formularz #%s"],"%d field will import":["%d pole zostanie zaimportowane"],"Some fields can't be migrated yet":["Niekt\u00f3re pola nie mog\u0105 jeszcze zosta\u0107 przeniesione"],"These fields will be skipped - add them manually after the form is created:":["Te pola zostan\u0105 pomini\u0119te - dodaj je r\u0119cznie po utworzeniu formularza:"],"Some forms could not be parsed":["Niekt\u00f3re formularze nie mog\u0142y zosta\u0107 przetworzone"],"Update existing":["Zaktualizuj istniej\u0105ce"],"Create a new copy":["Utw\u00f3rz now\u0105 kopi\u0119"],"Could not load forms for this source.":["Nie mo\u017cna za\u0142adowa\u0107 formularzy dla tego \u017ar\u00f3d\u0142a."],"(untitled form)":["(formularz bez tytu\u0142u)"],"Previously imported":["Poprzednio zaimportowane"],"Open existing SureForms form in a new tab":["Otw\u00f3rz istniej\u0105cy formularz SureForms w nowej karcie"],"On re-import":["Przy ponownym imporcie"],"No forms found in this plugin.":["Nie znaleziono formularzy w tej wtyczce."],"%1$d of %2$d form selected":["Wybrano %1$d z %2$d formularzy"],"Preview update":["Podgl\u0105d aktualizacji"],"Preview import":["Podgl\u0105d importu"],"Migration complete":["Migracja zako\u0144czona"],"Nothing was imported":["Nic nie zosta\u0142o zaimportowane"],"%d form was imported into SureForms.":["%d formularz zosta\u0142 zaimportowany do SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["\u017badna z wybranych form nie mog\u0142a zosta\u0107 przeniesiona. Zobacz poni\u017csze ostrze\u017cenia, aby uzyska\u0107 szczeg\u00f3\u0142y."],"Imported forms":["Zaimportowane formularze"],"Edit in SureForms":["Edytuj w SureForms"],"Some fields were skipped during import":["Niekt\u00f3re pola zosta\u0142y pomini\u0119te podczas importu"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Dodaj je r\u0119cznie w edytorze formularzy - nie maj\u0105 jeszcze odpowiednika w SureForms:"],"Some forms failed to import":["Niekt\u00f3re formularze nie zosta\u0142y zaimportowane"],"Import more forms":["Importuj wi\u0119cej formularzy"],"Could not load the list of importable plugins.":["Nie mo\u017cna za\u0142adowa\u0107 listy wtyczek do zaimportowania."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Na tej stronie nie s\u0105 aktywne \u017cadne obs\u0142ugiwane wtyczki formularzy. Aktywuj jedn\u0105 (tak\u0105 jak Contact Form 7) z co najmniej jednym formularzem, aby zaimportowa\u0107 go do SureForms."],"Plugin":["Wtyczka"],"%d form":["%d forma"],"No forms":["Brak formularzy"],"Multiple choice":["Wielokrotny wyb\u00f3r"],"Consent":["Zgoda"],"The image uploaded but could not be inserted. Please try again.":["Obraz zosta\u0142 przes\u0142any, ale nie mo\u017cna go by\u0142o wstawi\u0107. Prosz\u0119 spr\u00f3bowa\u0107 ponownie."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["Nie mo\u017cna przes\u0142a\u0107 obrazu. Mo\u017ce by\u0107 zbyt du\u017cy lub mo\u017cesz nie mie\u0107 uprawnie\u0144 do przesy\u0142ania plik\u00f3w."],"Please choose an image file.":["Prosz\u0119 wybra\u0107 plik graficzny."],"Show views and conversion rate":["Poka\u017c widoki i wska\u017anik konwersji"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Dodaje kolumny Widoki i Wska\u017anik konwersji do listy Formularzy. Widok jest liczony raz na wizyt\u0119 na stronie, gdy formularz pojawia si\u0119 na ekranie, a wska\u017anik konwersji to udzia\u0142 tych widok\u00f3w, kt\u00f3re zako\u0144czy\u0142y si\u0119 przes\u0142aniem. Liczenie rozpoczyna si\u0119, gdy pierwszy raz to w\u0142\u0105czysz, wi\u0119c przes\u0142ania otrzymane przed tym momentem nie s\u0105 liczone do wska\u017anika. Wy\u0142\u0105czenie tego p\u00f3\u017aniej tylko ukrywa kolumny \u2014 liczenie trwa, wi\u0119c dane s\u0105 aktualne, je\u015bli ponownie to w\u0142\u0105czysz."],"Log cleared.":["Dziennik wyczyszczony."],"Could not clear the log.":["Nie mo\u017cna wyczy\u015bci\u0107 dziennika."],"Enable logs":["W\u0142\u0105cz dzienniki"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Rejestruje niepowodzenia przesy\u0142ania formularzy zg\u0142aszane przez przegl\u0105dark\u0119, dzi\u0119ki czemu mo\u017cesz wys\u0142a\u0107 dziennik do wsparcia zamiast czyta\u0107 konsol\u0119. Nic nie jest zapisywane, gdy Twoje formularze dzia\u0142aj\u0105, a przes\u0142ane warto\u015bci nigdy nie s\u0105 przechowywane."],"Download log":["Pobierz dziennik"],"Confirm delete":["Potwierd\u017a usuni\u0119cie"],"Log is full \u2014 download and clear it to keep recording.":["Dziennik jest pe\u0142ny \u2014 pobierz i wyczy\u015b\u0107 go, aby kontynuowa\u0107 rejestrowanie."],"Form Views & Conversion":["Widoki formularzy i konwersja"],"Logs":["Dzienniki"],"Quill heading picker: default paragraph style\u0004Normal":["Normalny"]}}} \ No newline at end of file +{"translation-revision-date":"2025-01-02T08:44:41+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Panel sterowania"],"Settings":["Ustawienia"],"Entries":["Wpisy"],"Status":["Status"],"Form":["Formularz"],"Activated":["Aktywowany"],"Activate":["Aktywuj"],"Address":["Adres"],"Checkbox":["Pole wyboru"],"Dropdown":["Lista rozwijana"],"Email":["E-mail"],"Number":["Numer"],"Phone":["Telefon"],"Textarea":["Pole tekstowe"],"Monday":["Poniedzia\u0142ek"],"Forms":["Formularze"],"New Form Submission - %s":["Nowe przes\u0142anie formularza - %s"],"GitHub":["GitHub"],"(no title)":["(brak tytu\u0142u)"],"General":["Og\u00f3lny"],"No tags available":["Brak dost\u0119pnych tag\u00f3w"],"Back":["Wstecz"],"Generic tags":["Og\u00f3lne tagi"],"Other":["Inne"],"Confirm":["Potwierd\u017a"],"Cancel":["Anuluj"],"Install":["Zainstaluj"],"Plugin Installation failed, Please try again later.":["Instalacja wtyczki nie powiod\u0142a si\u0119, spr\u00f3buj ponownie p\u00f3\u017aniej."],"Plugin activation failed, Please try again later.":["Aktywacja wtyczki nie powiod\u0142a si\u0119, spr\u00f3buj ponownie p\u00f3\u017aniej."],"Integrations":["Integracje"],"What's New?":["Co nowego?"],"Core":["Rdze\u0144"],"Unlicensed":["Bez licencji"],"Connecting\u2026":["\u0141\u0105czenie\u2026"],"Install & Activate":["Zainstaluj i aktywuj"],"Compliance Settings":["Ustawienia zgodno\u015bci"],"Enable GDPR Compliance":["W\u0142\u0105cz zgodno\u015b\u0107 z RODO"],"Never store entry data after form submission":["Nigdy nie przechowuj danych wej\u015bciowych po przes\u0142aniu formularza"],"When enabled this form will never store Entries.":["Gdy jest w\u0142\u0105czony, ten formularz nigdy nie b\u0119dzie przechowywa\u0142 wpis\u00f3w."],"Automatically delete entries":["Automatycznie usu\u0144 wpisy"],"When enabled this form will automatically delete entries after a certain period of time.":["Po w\u0142\u0105czeniu ten formularz automatycznie usunie wpisy po okre\u015blonym czasie."],"Entries older than the days set will be deleted automatically.":["Wpisy starsze ni\u017c ustawione dni zostan\u0105 usuni\u0119te automatycznie."],"Visual":["Wizualny"],"HTML":["HTML"],"All Data":["Wszystkie dane"],"Add Shortcode":["Dodaj shortcode"],"Form input tags":["Tagi wej\u015bciowe formularza"],"Comma separated values are also accepted.":["Warto\u015bci oddzielone przecinkami s\u0105 r\u00f3wnie\u017c akceptowane."],"Email Notification":["Powiadomienie e-mail"],"Name":["Imi\u0119"],"Send Email To":["Wy\u015blij e-mail do"],"Subject":["Temat"],"CC":["DW"],"BCC":["UDW"],"Reply To":["Odpowiedz do"],"Add Key":["Dodaj klucz"],"Add Value":["Dodaj warto\u015b\u0107"],"Add":["Dodaj"],"Confirmation Message":["Wiadomo\u015b\u0107 potwierdzaj\u0105ca"],"After Form Submission":["Po przes\u0142aniu formularza"],"Hide Form":["Ukryj formularz"],"Reset Form":["Zresetuj formularz"],"Custom URL":["Niestandardowy URL"],"Add Query Parameters":["Dodaj parametry zapytania"],"Select if you want to add key-value pairs for form fields to include in query parameters":["Wybierz, je\u015bli chcesz doda\u0107 pary klucz-warto\u015b\u0107 dla p\u00f3l formularza do uwzgl\u0119dnienia w parametrach zapytania"],"Query Parameters":["Parametry zapytania"],"Success Message":["Komunikat o sukcesie"],"Redirect":["Przekieruj"],"Redirect to":["Przekieruj do"],"Page":["Strona"],"Form Confirmation":["Potwierdzenie formularza"],"Confirmation Type":["Typ potwierdzenia"],"Clear":["Wyczy\u015b\u0107"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Niewidoczna"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Walidacje"],"Spam Protection":["Ochrona przed spamem"],"Email Summaries":["Podsumowania e-maili"],"Tuesday":["Wtorek"],"Wednesday":["\u015aroda"],"Thursday":["Czwartek"],"Friday":["Pi\u0105tek"],"Saturday":["Sobota"],"Sunday":["Niedziela"],"Test Email":["Testowy email"],"Schedule Reports":["Zaplanuj raporty"],"IP Logging":["Rejestrowanie IP"],"If this option is turned on, the user's IP address will be saved with the form data":["Je\u015bli ta opcja jest w\u0142\u0105czona, adres IP u\u017cytkownika zostanie zapisany wraz z danymi formularza"],"Confirmation Email Mismatch Message":["Wiadomo\u015b\u0107 o niezgodno\u015bci e-maila potwierdzaj\u0105cego"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s oznacza minimaln\u0105 warto\u015b\u0107 wej\u015bciow\u0105. Na przyk\u0142ad: \"Minimalna warto\u015b\u0107 to 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s oznacza maksymaln\u0105 warto\u015b\u0107 wej\u015bciow\u0105. Na przyk\u0142ad: \"Maksymalna warto\u015b\u0107 to 100.\""],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s oznacza minimaln\u0105 liczb\u0119 wymaganych wybor\u00f3w. Na przyk\u0142ad: \u201eWymagane s\u0105 co najmniej 2 wybory\u201d."],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s oznacza maksymaln\u0105 liczb\u0119 dozwolonych wybor\u00f3w. Na przyk\u0142ad: \u201eDozwolone s\u0105 maksymalnie 4 wybory.\u201d"],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s oznacza minimaln\u0105 liczb\u0119 potrzebnych wybor\u00f3w. Na przyk\u0142ad: \u201eWymagany jest co najmniej 1 wyb\u00f3r.\u201d"],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s oznacza maksymaln\u0105 liczb\u0119 dozwolonych wybor\u00f3w. Na przyk\u0142ad: \u201eDozwolone s\u0105 maksymalnie 3 wybory\u201d."]," Error Message":["Komunikat o b\u0142\u0119dzie"],"Auto":["Samoch\u00f3d"],"Light":["\u015awiat\u0142o"],"Dark":["Ciemny"],"Turnstile":["Bramka"],"Honeypot":["Pu\u0142apka"],"Get Keys":["Pobierz klucze"],"Documentation":["Dokumentacja"],"Site Key":["Klucz strony"],"Secret Key":["Klucz tajny"],"Cloudflare Turnstile":["Cloudflare Turnstile"],"Appearance Mode":["Tryb wygl\u0105du"],"Enable Honeypot Security":["W\u0142\u0105cz zabezpieczenie Honeypot"],"Enable Honeypot Security for better spam protection":["W\u0142\u0105cz Honeypot Security dla lepszej ochrony przed spamem"],"Text":["Tekst"],"OttoKit":["OttoKit"],"Connect with OttoKit":["Po\u0142\u0105cz si\u0119 z OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Bie\u017c\u0105cy adres \u201eOd e-mail\u201d nie pasuje do nazwy domeny Twojej strony internetowej (%1$s). Mo\u017ce to spowodowa\u0107, \u017ce Twoje e-maile z powiadomieniami b\u0119d\u0105 blokowane lub oznaczane jako spam. Alternatywnie, spr\u00f3buj u\u017cy\u0107 adresu Od, kt\u00f3ry pasuje do domeny Twojej strony internetowej (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Obecny adres \u201eOd e-mail\u201d nie pasuje do nazwy domeny Twojej strony internetowej (%s). Mo\u017ce to spowodowa\u0107, \u017ce Twoje e-maile z powiadomieniami zostan\u0105 zablokowane lub oznaczone jako spam."],"We strongly recommend that you install the free ":["Zalecamy zdecydowanie zainstalowanie darmowego"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["wtyczka! Kreator konfiguracji u\u0142atwia napraw\u0119 Twoich e-maili."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Alternatywnie spr\u00f3buj u\u017cy\u0107 adresu nadawcy, kt\u00f3ry pasuje do domeny Twojej strony internetowej (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Prosz\u0119 wprowadzi\u0107 prawid\u0142owy adres e-mail. Powiadomienia nie b\u0119d\u0105 wysy\u0142ane, je\u015bli pole nie zostanie wype\u0142nione poprawnie."],"From Name":["Od Nazwa"],"From Email":["Z e-maila"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["Bie\u017c\u0105cy adres \u201eOd e-mail\u201d mo\u017ce nie pasowa\u0107 do nazwy domeny Twojej strony internetowej (%1$s). Mo\u017ce to spowodowa\u0107, \u017ce Twoje e-maile z powiadomieniami zostan\u0105 zablokowane lub oznaczone jako spam. Alternatywnie, spr\u00f3buj u\u017cy\u0107 adresu Od, kt\u00f3ry pasuje do domeny Twojej strony internetowej (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["Obecny adres \u201eOd e-mail\u201d mo\u017ce nie pasowa\u0107 do nazwy domeny Twojej strony internetowej (%s). Mo\u017ce to spowodowa\u0107, \u017ce Twoje e-maile z powiadomieniami zostan\u0105 zablokowane lub oznaczone jako spam."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Gotowy, aby wyj\u015b\u0107 poza darmowy plan?"],"Upgrade now":["Zaktualizuj teraz"],"and unlock the full power of SureForms!":["i odblokuj pe\u0142n\u0105 moc SureForms!"],"Upgrade SureForms":["Uaktualnij SureForms"],"Upgrade Now":["Zaktualizuj teraz"],"Entries older than the selected days will be deleted.":["Wpisy starsze ni\u017c wybrane dni zostan\u0105 usuni\u0119te."],"Entries Time Period":["Okres czasu wpis\u00f3w"],"Notifications can use only one From Email so please enter a single address.":["Powiadomienia mog\u0105 u\u017cywa\u0107 tylko jednego adresu e-mail nadawcy, wi\u0119c prosz\u0119 poda\u0107 jeden adres."],"Select Page to redirect":["Wybierz stron\u0119 do przekierowania"],"Search for a page":["Wyszukaj stron\u0119"],"Select a page":["Wybierz stron\u0119"],"Form Validation":["Walidacja formularza"],"Required Error Messages":["Wymagane komunikaty o b\u0142\u0119dach"],"Other Error Messages":["Inne komunikaty o b\u0142\u0119dach"],"Input Field Unique":["Pole wej\u015bciowe unikalne"],"Email Field Unique":["Pole e-mail musi by\u0107 unikalne"],"Invalid URL":["Nieprawid\u0142owy URL"],"Phone Field Unique":["Pole telefonu unikalne"],"Invalid Field Number Block":["Nieprawid\u0142owy blok numeru pola"],"Invalid Email":["Nieprawid\u0142owy adres e-mail"],"Number Minimum Value":["Minimalna warto\u015b\u0107 liczby"],"Number Maximum Value":["Maksymalna warto\u015b\u0107 liczby"],"Dropdown Minimum Selections":["Minimalna liczba wybor\u00f3w w rozwijanym menu"],"Dropdown Maximum Selections":["Maksymalna liczba wybor\u00f3w w rozwijanym menu"],"Multiple Choice Minimum Selections":["Minimalna liczba wybor\u00f3w w pytaniach wielokrotnego wyboru"],"Multiple Choice Maximum Selections":["Wielokrotny wyb\u00f3r maksymalna liczba zaznacze\u0144"],"Input Field":["Pole wej\u015bciowe"],"Email Field":["Pole e-mail"],"URL Field":["Pole URL"],"Phone Field":["Pole telefonu"],"Textarea Field":["Pole tekstowe"],"Checkbox Field":["Pole wyboru"],"Dropdown Field":["Pole rozwijane"],"Multiple Choice Field":["Pole wyboru wielokrotnego"],"Address Field":["Pole adresu"],"Number Field":["Pole liczby"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Aby w\u0142\u0105czy\u0107 funkcj\u0119 reCAPTCHA w SureForms, w\u0142\u0105cz opcj\u0119 reCAPTCHA w ustawieniach blok\u00f3w i wybierz wersj\u0119. Dodaj tutaj tajny klucz i klucz witryny Google reCAPTCHA. reCAPTCHA zostanie dodana do Twojej strony na froncie."],"Enter your %s here":["Wprowad\u017a tutaj sw\u00f3j %s"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Aby w\u0142\u0105czy\u0107 hCAPTCHA, dodaj klucz witryny i klucz tajny. Skonfiguruj te ustawienia w poszczeg\u00f3lnych formularzach."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Aby w\u0142\u0105czy\u0107 Cloudflare Turnstile, dodaj klucz witryny i klucz tajny. Skonfiguruj te ustawienia w ramach poszczeg\u00f3lnego formularza."],"Save":["Zapisz"],"Anonymous Analytics":["Anonimowa Analiza"],"Learn More":["Dowiedz si\u0119 wi\u0119cej"],"Admin Notification":["Powiadomienie administratora"],"Enable Admin Notification":["W\u0142\u0105cz powiadomienia administratora"],"Admin notifications keep you informed about new form entries since your last visit.":["Powiadomienia administracyjne informuj\u0105 Ci\u0119 o nowych wpisach formularza od Twojej ostatniej wizyty."],"Skip":["Pomi\u0144"],"Continue":["Kontynuuj"],"Maximum Number of Entries":["Maksymalna liczba wpis\u00f3w"],"Maximum Entries":["Maksymalna liczba wpis\u00f3w"],"Response Description After Maximum Entries":["Opis odpowiedzi po maksymalnej liczbie wpis\u00f3w"],"Get Started":["Rozpocznij"],"Integration":["Integracja"],"Connect Native Integrations with SureForms":["Po\u0142\u0105cz natywne integracje z SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Odblokuj pot\u0119\u017cne integracje w planie Premium, aby zautomatyzowa\u0107 swoje przep\u0142ywy pracy i po\u0142\u0105czy\u0107 SureForms bezpo\u015brednio z ulubionymi narz\u0119dziami."],"Send form submissions straight to CRMs, email, and marketing platforms":["Wysy\u0142aj zg\u0142oszenia formularzy bezpo\u015brednio do CRM, e-maili i platform marketingowych"],"Automate repetitive tasks with seamless data syncing":["Zautomatyzuj powtarzalne zadania dzi\u0119ki p\u0142ynnej synchronizacji danych"],"Access exclusive native integrations for faster workflows":["Uzyskaj dost\u0119p do ekskluzywnych natywnych integracji dla szybszych przep\u0142yw\u00f3w pracy"],"Expected format for emails - email@sureforms.com or John Doe ":["Oczekiwany format dla e-maili - email@sureforms.com lub John Doe "],"Payments":["P\u0142atno\u015bci"],"Stripe account disconnected successfully.":["Konto Stripe zosta\u0142o pomy\u015blnie od\u0142\u0105czone."],"Failed to create webhook.":["Nie uda\u0142o si\u0119 utworzy\u0107 webhooka."],"Failed to connect to Stripe.":["Nie uda\u0142o si\u0119 po\u0142\u0105czy\u0107 ze Stripe."],"Webhook":["Webhook"],"Knowledge Base":["Baza wiedzy"],"What\u2019s New":["Co nowego"],"out of":["z"],"No entries found":["Nie znaleziono wpis\u00f3w"],"delete":["usu\u0144"],"Please type \"%s\" in the input box":["Prosz\u0119 wpisa\u0107 \"%s\" w polu wej\u015bciowym"],"To confirm, type \"%s\" in the box below:":["Aby potwierdzi\u0107, wpisz \"%s\" w polu poni\u017cej:"],"Type \"%s\"":["Wpisz \"%s\""],"Go to OttoKit Settings":["Przejd\u017a do ustawie\u0144 OttoKit"],"USD - US Dollar":["USD - Dolar ameryka\u0144ski"],"Payment Mode":["Tryb p\u0142atno\u015bci"],"Test Mode":["Tryb testowy"],"Live Mode":["Tryb na \u017cywo"],"Action":["Akcja"],"General Settings":["Ustawienia og\u00f3lne"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Skonfiguruj podsumowania e-mail, alerty administratora i preferencje danych, aby \u0142atwo zarz\u0105dza\u0107 swoimi formularzami."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Dostosuj domy\u015blne komunikaty o b\u0142\u0119dach wy\u015bwietlane, gdy u\u017cytkownicy przesy\u0142aj\u0105 nieprawid\u0142owe lub niekompletne wpisy formularza."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["W\u0142\u0105cz ochron\u0119 przed spamem dla swoich formularzy, korzystaj\u0105c z us\u0142ug CAPTCHA lub zabezpiecze\u0144 typu honeypot."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Po\u0142\u0105cz i zarz\u0105dzaj swoimi bramkami p\u0142atno\u015bci, aby bezpiecznie akceptowa\u0107 transakcje za po\u015brednictwem swoich formularzy."],"1% transaction and payment gateway fees apply.":["Obowi\u0105zuje 1% op\u0142ata transakcyjna i op\u0142ata za bramk\u0119 p\u0142atnicz\u0105."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["Obowi\u0105zuj\u0105 op\u0142aty za transakcje i bramki p\u0142atnicze w wysoko\u015bci 2,9%. Aktywuj licencj\u0119, aby zmniejszy\u0107 op\u0142aty transakcyjne."],"2.9% transaction and payment gateway fees apply.":["Obowi\u0105zuj\u0105 op\u0142aty za transakcje i bramki p\u0142atnicze w wysoko\u015bci 2,9%."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Prosz\u0119 odwiedzi\u0107 %1$s, usun\u0105\u0107 nieu\u017cywany webhook, a nast\u0119pnie klikn\u0105\u0107 poni\u017cej, aby spr\u00f3bowa\u0107 ponownie."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms nie m\u00f3g\u0142 utworzy\u0107 webhooka, poniewa\u017c na Twoim koncie Stripe sko\u0144czy\u0142y si\u0119 darmowe sloty. Webhooki s\u0105 potrzebne do otrzymywania aktualizacji o p\u0142atno\u015bciach."],"Stripe Dashboard":["Pulpit Stripe"],"Creating\u2026":["Tworzenie\u2026"],"Create Webhook":["Utw\u00f3rz Webhook"],"Successfully connected to Stripe!":["Pomy\u015blnie po\u0142\u0105czono ze Stripe!"],"Invalid response from server. Please try again.":["Nieprawid\u0142owa odpowied\u017a z serwera. Prosz\u0119 spr\u00f3bowa\u0107 ponownie."],"Failed to disconnect Stripe account.":["Nie uda\u0142o si\u0119 od\u0142\u0105czy\u0107 konta Stripe."],"Webhook created successfully!":["Webhook utworzony pomy\u015blnie!"],"Select Currency":["Wybierz walut\u0119"],"Select the default currency for payment forms.":["Wybierz domy\u015bln\u0105 walut\u0119 dla formularzy p\u0142atno\u015bci."],"Connection Status":["Status po\u0142\u0105czenia"],"Disconnect Stripe Account":["Od\u0142\u0105cz konto Stripe"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["Czy na pewno chcesz od\u0142\u0105czy\u0107 swoje konto Stripe? Spowoduje to zatrzymanie wszystkich aktywnych p\u0142atno\u015bci, subskrypcji i transakcji formularzy powi\u0105zanych z tym kontem."],"Disconnect":["Roz\u0142\u0105cz"],"Disconnecting\u2026":["Roz\u0142\u0105czanie\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook zosta\u0142 pomy\u015blnie po\u0142\u0105czony, wszystkie zdarzenia Stripe s\u0105 \u015bledzone."],"Connect your Stripe account to start accepting payments through your forms.":["Po\u0142\u0105cz swoje konto Stripe, aby zacz\u0105\u0107 przyjmowa\u0107 p\u0142atno\u015bci za po\u015brednictwem formularzy."],"Connect to Stripe":["Po\u0142\u0105cz z Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Bezpiecznie po\u0142\u0105cz si\u0119 ze Stripe kilkoma klikni\u0119ciami, aby zacz\u0105\u0107 akceptowa\u0107 p\u0142atno\u015bci!"],"Set the total number of submissions allowed for this form.":["Ustaw ca\u0142kowit\u0105 liczb\u0119 dozwolonych zg\u0142osze\u0144 dla tego formularza."],"Payment Methods":["Metody p\u0142atno\u015bci"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["Tryb testowy pozwala na przetwarzanie p\u0142atno\u015bci bez rzeczywistych op\u0142at. Prze\u0142\u0105cz si\u0119 na tryb na \u017cywo, aby dokonywa\u0107 rzeczywistych transakcji."],"General Payment Settings":["Og\u00f3lne ustawienia p\u0142atno\u015bci"],"These settings apply to all payment gateways.":["Te ustawienia maj\u0105 zastosowanie do wszystkich bramek p\u0142atniczych."],"Stripe Settings":["Ustawienia Stripe"],"Left ($100)":["Lewo ($100)"],"Right (100$)":["Prawo (100$)"],"Left Space ($ 100)":["Wolna przestrze\u0144 ($ 100)"],"Right Space (100 $)":["Prawe Miejsce (100 $)"],"Currency Sign Position":["Pozycja znaku waluty"],"Select the position of the currency symbol relative to the amount.":["Wybierz pozycj\u0119 symbolu waluty wzgl\u0119dem kwoty."],"Learn":["Ucz si\u0119"],"Enable email summaries":["W\u0142\u0105cz podsumowania e-mail"],"Enable IP logging":["W\u0142\u0105cz logowanie IP"],"Turn on Admin Notification from here.":["W\u0142\u0105cz powiadomienia administratora st\u0105d."],"New":["Nowy"],"Send entries to 100+ popular apps.":["Wy\u015blij wpisy do ponad 100 popularnych aplikacji."],"Build automated workflows that run instantly.":["Tw\u00f3rz zautomatyzowane przep\u0142ywy pracy, kt\u00f3re dzia\u0142aj\u0105 natychmiast."],"Create custom app integrations using our Custom App feature.":["Tw\u00f3rz niestandardowe integracje aplikacji za pomoc\u0105 funkcji Niestandardowa Aplikacja."],"Keep your tools in sync automatically.":["Utrzymuj swoje narz\u0119dzia w synchronizacji automatycznie."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["To zainstaluje i aktywuje OttoKit na Twojej stronie WordPress, aby w\u0142\u0105czy\u0107 funkcje automatyzacji."],"Automate Your Forms with OttoKit":["Zautomatyzuj swoje formularze za pomoc\u0105 OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Ka\u017cde przes\u0142anie formularza powinno wywo\u0142a\u0107 jak\u0105\u015b akcj\u0119 \u2014 alert w Slacku, lead w CRM, e-mail z przypomnieniem lub nowy wiersz w Arkuszach Google."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Skonfiguruj uprawnienia klienta AI i ustawienia serwera MCP."],"View documentation":["Wy\u015bwietl dokumentacj\u0119"],"Copy to clipboard":["Kopiuj do schowka"],"Claude Desktop":["Pulpit Claude"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) lub %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["Kod Claude"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (projekt) lub ~\/.claude.json (globalny)"],"Cursor":["Kursor"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (projekt) lub settings.json > mcp.servers (globalne)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml lub config.json"],"Your client's MCP configuration file":["Plik konfiguracyjny MCP Twojego klienta"],"Connect Your AI Client":["Po\u0142\u0105cz swojego klienta AI"],"AI Client":["Klient AI"],"Create an Application Password \u2014 ":["Utw\u00f3rz has\u0142o aplikacji \u2014"],"Open Application Passwords":["Otw\u00f3rz has\u0142a aplikacji"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Lub u\u017cyj tego polecenia CLI, aby szybko doda\u0107 serwer (nadal b\u0119dziesz musia\u0142 ustawi\u0107 zmienne \u015brodowiskowe):"],"Copy the JSON config below into: ":["Skopiuj poni\u017csz\u0105 konfiguracj\u0119 JSON do:"],"Replace \"your-application-password\" with the password from Step 1.":["Zast\u0105p \"your-application-password\" has\u0142em z Kroku 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 punkt ko\u0144cowy MCP Twojej witryny. WP_API_USERNAME \u2014 Twoja nazwa u\u017cytkownika WordPress. WP_API_PASSWORD \u2014 has\u0142o aplikacji, kt\u00f3re wygenerowa\u0142e\u015b."],"View setup docs":["Wy\u015bwietl dokumentacj\u0119 konfiguracji"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["Wtyczka MCP Adapter jest zainstalowana, ale nieaktywna. Aktywuj j\u0105, aby skonfigurowa\u0107 ustawienia MCP."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["Wtyczka MCP Adapter jest wymagana do po\u0142\u0105czenia klient\u00f3w AI z Twoimi formularzami. Pobierz i zainstaluj j\u0105 z GitHub, a nast\u0119pnie aktywuj."],"Download the latest release from":["Pobierz najnowsz\u0105 wersj\u0119 z"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Zainstaluj wtyczk\u0119, przechodz\u0105c do Wtyczki > Dodaj now\u0105 wtyczk\u0119 > Prze\u015blij wtyczk\u0119."],"Activate the MCP Adapter plugin.":["Aktywuj wtyczk\u0119 MCP Adapter."],"Activating\u2026":["Aktywowanie\u2026"],"Activate MCP Adapter":["Aktywuj adapter MCP"],"Download MCP Adapter":["Pobierz adapter MCP"],"Experimental":["Eksperymentalny"],"Enable Abilities":["W\u0142\u0105cz umiej\u0119tno\u015bci"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Zarejestruj mo\u017cliwo\u015bci SureForms w API Umiej\u0119tno\u015bci WordPress. Po w\u0142\u0105czeniu klienci AI mog\u0105 wy\u015bwietla\u0107, czyta\u0107, tworzy\u0107, edytowa\u0107 i usuwa\u0107 Twoje formularze i wpisy. Po wy\u0142\u0105czeniu \u017cadne umiej\u0119tno\u015bci nie s\u0105 rejestrowane i klienci AI nie mog\u0105 wykonywa\u0107 \u017cadnych dzia\u0142a\u0144 na Twoich formularzach."],"Abilities API \u2014 Edit":["API umiej\u0119tno\u015bci \u2014 Edytuj"],"Enable Edit Abilities":["W\u0142\u0105cz mo\u017cliwo\u015bci edycji"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Po w\u0142\u0105czeniu klienci AI mog\u0105 tworzy\u0107 nowe formularze, aktualizowa\u0107 tytu\u0142y formularzy, pola i ustawienia, duplikowa\u0107 formularze oraz modyfikowa\u0107 statusy wpis\u00f3w. Po wy\u0142\u0105czeniu te mo\u017cliwo\u015bci s\u0105 wyrejestrowane i klienci AI mog\u0105 jedynie odczytywa\u0107 Twoje dane."],"Abilities API \u2014 Delete":["API umiej\u0119tno\u015bci \u2014 Usu\u0144"],"Enable Delete Abilities":["W\u0142\u0105cz mo\u017cliwo\u015b\u0107 usuwania"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Po w\u0142\u0105czeniu klienci AI mog\u0105 trwale usuwa\u0107 formularze i wpisy. Usuni\u0119tych danych nie mo\u017cna odzyska\u0107. Po wy\u0142\u0105czeniu, mo\u017cliwo\u015bci usuwania s\u0105 wyrejestrowane i klienci AI nie mog\u0105 usuwa\u0107 \u017cadnych danych."],"MCP Server":["Serwer MCP"],"Enable MCP Server":["W\u0142\u0105cz serwer MCP"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Tworzy dedykowany punkt ko\u0144cowy SureForms MCP, do kt\u00f3rego mog\u0105 si\u0119 pod\u0142\u0105czy\u0107 klienci AI, tacy jak Claude. Gdy jest wy\u0142\u0105czony, punkt ko\u0144cowy jest usuwany i zewn\u0119trzni klienci AI nie mog\u0105 odkrywa\u0107 ani wywo\u0142ywa\u0107 \u017cadnych funkcji SureForms."],"Learn more":["Dowiedz si\u0119 wi\u0119cej"],"MCP Adapter Required":["Wymagany adapter MCP"],"Heading 1":["Nag\u0142\u00f3wek 1"],"Heading 2":["Nag\u0142\u00f3wek 2"],"Heading 3":["Nag\u0142\u00f3wek 3"],"Heading 4":["Nag\u0142\u00f3wek 4"],"Heading 5":["Nag\u0142\u00f3wek 5"],"Heading 6":["Nag\u0142\u00f3wek 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Skonfiguruj klucz API Google Maps do autouzupe\u0142niania adres\u00f3w i podgl\u0105du mapy."],"Help shape the future of SureForms":["Pom\u00f3\u017c kszta\u0142towa\u0107 przysz\u0142o\u015b\u0107 SureForms"],"Enable Google Address Autocomplete":["W\u0142\u0105cz autouzupe\u0142nianie adres\u00f3w Google"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Uaktualnij do planu SureForms Business, aby doda\u0107 autouzupe\u0142nianie adres\u00f3w zasilane przez Google z interaktywnym podgl\u0105dem mapy do swoich formularzy."],"Auto-suggest addresses as users type for faster, error-free submissions":["Automatyczne sugerowanie adres\u00f3w podczas pisania przez u\u017cytkownik\u00f3w dla szybszych, bezb\u0142\u0119dnych zg\u0142osze\u0144"],"Show an interactive map preview with draggable pin for precise locations":["Poka\u017c interaktywny podgl\u0105d mapy z przeci\u0105galnym pinezk\u0105 dla precyzyjnych lokalizacji"],"Automatically populate address fields like city, state, and postal code":["Automatycznie wype\u0142niaj pola adresowe, takie jak miasto, wojew\u00f3dztwo i kod pocztowy"],"This form is now closed as we've received all the entries.":["Formularz jest teraz zamkni\u0119ty, poniewa\u017c otrzymali\u015bmy wszystkie zg\u0142oszenia."],"Thank you for contacting us! We will be in touch with you shortly.":["Dzi\u0119kujemy za skontaktowanie si\u0119 z nami! Wkr\u00f3tce si\u0119 z Tob\u0105 skontaktujemy."],"Saving\u2026":["Zapisywanie\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Po w\u0142\u0105czeniu tego formularza nie b\u0119d\u0105 przechowywane adres IP u\u017cytkownika, nazwa przegl\u0105darki i nazwa urz\u0105dzenia w wpisach."],"Form data":["Dane formularza"],"Unsaved changes":["Niezapisane zmiany"],"Keep editing":["Kontynuuj edytowanie"],"Global Defaults":["Domy\u015blne ustawienia globalne"],"Form Restrictions":["Ograniczenia formularza"],"Configure default settings that apply to newly created forms.":["Skonfiguruj domy\u015blne ustawienia, kt\u00f3re maj\u0105 zastosowanie do nowo utworzonych formularzy."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Zbieraj niesensytywne informacje z Twojej strony internetowej, takie jak wersja PHP i u\u017cywane funkcje, aby pom\u00f3c nam szybciej naprawia\u0107 b\u0142\u0119dy, podejmowa\u0107 m\u0105drzejsze decyzje i tworzy\u0107 funkcje, kt\u00f3re naprawd\u0119 maj\u0105 dla Ciebie znaczenie."],"Failed to load pages. Please refresh and try again.":["Nie uda\u0142o si\u0119 za\u0142adowa\u0107 stron. Od\u015bwie\u017c i spr\u00f3buj ponownie."],"Failed to load settings. Please refresh and try again.":["Nie uda\u0142o si\u0119 za\u0142adowa\u0107 ustawie\u0144. Od\u015bwie\u017c stron\u0119 i spr\u00f3buj ponownie."],"Form Validation fields cannot be left blank.":["Pola walidacji formularza nie mog\u0105 pozosta\u0107 puste."],"Recipient email is required when email summaries are enabled.":["Adres e-mail odbiorcy jest wymagany, gdy w\u0142\u0105czone s\u0105 podsumowania e-mail."],"Please enter a valid recipient email.":["Prosz\u0119 wprowadzi\u0107 prawid\u0142owy adres e-mail odbiorcy."],"Settings saved.":["Ustawienia zapisane."],"Failed to save settings.":["Nie uda\u0142o si\u0119 zapisa\u0107 ustawie\u0144."],"Some settings failed to save. Please retry.":["Niekt\u00f3re ustawienia nie zosta\u0142y zapisane. Prosz\u0119 spr\u00f3bowa\u0107 ponownie."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Niekt\u00f3re pola maj\u0105 niezapisane zmiany. Odrzu\u0107 je, aby kontynuowa\u0107, lub zosta\u0144, aby zapisa\u0107 swoje edycje."],"Discard & switch":["Odrzu\u0107 i prze\u0142\u0105cz"],"Import":["Import"],"Migration":["Migracja"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importuj formularze z Contact Form 7, WPForms, Gravity Forms i innych wtyczek do SureForms."],"Could not generate the import preview.":["Nie mo\u017cna wygenerowa\u0107 podgl\u0105du importu."],"Import failed. Please try again or check your error logs.":["Importowanie nie powiod\u0142o si\u0119. Spr\u00f3buj ponownie lub sprawd\u017a swoje dzienniki b\u0142\u0119d\u00f3w."],"Go back":["Wr\u00f3\u0107"],"Update & import":["Aktualizuj i importuj"],"Confirm & import":["Potwierd\u017a i zaimportuj"],"Form #%s":["Formularz #%s"],"%d field will import":["%d pole zostanie zaimportowane"],"Some fields can't be migrated yet":["Niekt\u00f3re pola nie mog\u0105 jeszcze zosta\u0107 przeniesione"],"These fields will be skipped - add them manually after the form is created:":["Te pola zostan\u0105 pomini\u0119te - dodaj je r\u0119cznie po utworzeniu formularza:"],"Some forms could not be parsed":["Niekt\u00f3re formularze nie mog\u0142y zosta\u0107 przetworzone"],"Update existing":["Zaktualizuj istniej\u0105ce"],"Create a new copy":["Utw\u00f3rz now\u0105 kopi\u0119"],"Could not load forms for this source.":["Nie mo\u017cna za\u0142adowa\u0107 formularzy dla tego \u017ar\u00f3d\u0142a."],"(untitled form)":["(formularz bez tytu\u0142u)"],"Previously imported":["Poprzednio zaimportowane"],"Open existing SureForms form in a new tab":["Otw\u00f3rz istniej\u0105cy formularz SureForms w nowej karcie"],"On re-import":["Przy ponownym imporcie"],"No forms found in this plugin.":["Nie znaleziono formularzy w tej wtyczce."],"%1$d of %2$d form selected":["Wybrano %1$d z %2$d formularzy"],"Preview update":["Podgl\u0105d aktualizacji"],"Preview import":["Podgl\u0105d importu"],"Migration complete":["Migracja zako\u0144czona"],"Nothing was imported":["Nic nie zosta\u0142o zaimportowane"],"%d form was imported into SureForms.":["%d formularz zosta\u0142 zaimportowany do SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["\u017badna z wybranych form nie mog\u0142a zosta\u0107 przeniesiona. Zobacz poni\u017csze ostrze\u017cenia, aby uzyska\u0107 szczeg\u00f3\u0142y."],"Imported forms":["Zaimportowane formularze"],"Edit in SureForms":["Edytuj w SureForms"],"Some fields were skipped during import":["Niekt\u00f3re pola zosta\u0142y pomini\u0119te podczas importu"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Dodaj je r\u0119cznie w edytorze formularzy - nie maj\u0105 jeszcze odpowiednika w SureForms:"],"Some forms failed to import":["Niekt\u00f3re formularze nie zosta\u0142y zaimportowane"],"Import more forms":["Importuj wi\u0119cej formularzy"],"Could not load the list of importable plugins.":["Nie mo\u017cna za\u0142adowa\u0107 listy wtyczek do zaimportowania."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Na tej stronie nie s\u0105 aktywne \u017cadne obs\u0142ugiwane wtyczki formularzy. Aktywuj jedn\u0105 (tak\u0105 jak Contact Form 7) z co najmniej jednym formularzem, aby zaimportowa\u0107 go do SureForms."],"Plugin":["Wtyczka"],"%d form":["%d forma"],"No forms":["Brak formularzy"],"Multiple choice":["Wielokrotny wyb\u00f3r"],"Consent":["Zgoda"],"The image uploaded but could not be inserted. Please try again.":["Obraz zosta\u0142 przes\u0142any, ale nie mo\u017cna go by\u0142o wstawi\u0107. Prosz\u0119 spr\u00f3bowa\u0107 ponownie."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["Nie mo\u017cna przes\u0142a\u0107 obrazu. Mo\u017ce by\u0107 zbyt du\u017cy lub mo\u017cesz nie mie\u0107 uprawnie\u0144 do przesy\u0142ania plik\u00f3w."],"Please choose an image file.":["Prosz\u0119 wybra\u0107 plik graficzny."],"Show views and conversion rate":["Poka\u017c widoki i wska\u017anik konwersji"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Dodaje kolumny Widoki i Wska\u017anik konwersji do listy Formularzy. Widok jest liczony raz na wizyt\u0119 na stronie, gdy formularz pojawia si\u0119 na ekranie, a wska\u017anik konwersji to udzia\u0142 tych widok\u00f3w, kt\u00f3re zako\u0144czy\u0142y si\u0119 przes\u0142aniem. Liczenie rozpoczyna si\u0119, gdy pierwszy raz to w\u0142\u0105czysz, wi\u0119c przes\u0142ania otrzymane przed tym momentem nie s\u0105 liczone do wska\u017anika. Wy\u0142\u0105czenie tego p\u00f3\u017aniej tylko ukrywa kolumny \u2014 liczenie trwa, wi\u0119c dane s\u0105 aktualne, je\u015bli ponownie to w\u0142\u0105czysz."],"Log cleared.":["Dziennik wyczyszczony."],"Could not clear the log.":["Nie mo\u017cna wyczy\u015bci\u0107 dziennika."],"Enable logs":["W\u0142\u0105cz dzienniki"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Rejestruje niepowodzenia przesy\u0142ania formularzy zg\u0142aszane przez przegl\u0105dark\u0119, dzi\u0119ki czemu mo\u017cesz wys\u0142a\u0107 dziennik do wsparcia zamiast czyta\u0107 konsol\u0119. Nic nie jest zapisywane, gdy Twoje formularze dzia\u0142aj\u0105, a przes\u0142ane warto\u015bci nigdy nie s\u0105 przechowywane."],"Download log":["Pobierz dziennik"],"Confirm delete":["Potwierd\u017a usuni\u0119cie"],"Log is full \u2014 download and clear it to keep recording.":["Dziennik jest pe\u0142ny \u2014 pobierz i wyczy\u015b\u0107 go, aby kontynuowa\u0107 rejestrowanie."],"Form Views & Conversion":["Widoki formularzy i konwersja"],"Logs":["Dzienniki"],"Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures.":["Widoki i przesy\u0142ania przez osoby, kt\u00f3re mog\u0105 edytowa\u0107 stron\u0119, s\u0105 zwykle pomijane, wi\u0119c testowanie w\u0142asnych formularzy nie zmienia tych danych."],"Quill heading picker: default paragraph style\u0004Normal":["Normalny"]}}} \ No newline at end of file diff --git a/languages/sureforms-pl_PL-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json b/languages/sureforms-pl_PL-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json index a926983f8..255df4817 100644 --- a/languages/sureforms-pl_PL-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json +++ b/languages/sureforms-pl_PL-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json @@ -1 +1 @@ -{"translation-revision-date":"2025-01-02T08:44:41+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Panel sterowania"],"Settings":["Ustawienia"],"Entries":["Wpisy"],"Activated":["Aktywowany"],"Advanced Fields":["Pola zaawansowane"],"Select Form":["Wybierz formularz"],"Create New Form":["Utw\u00f3rz nowy formularz"],"Forms":["Formularze"],"Copy":["Kopiuj"],"Business":["Biznes"],"Next":["Dalej"],"Back":["Wstecz"],"Cancel":["Anuluj"],"This is where your form views will appear":["To tutaj pojawi\u0105 si\u0119 widoki twojego formularza"],"Install":["Zainstaluj"],"Plugin Installation failed, Please try again later.":["Instalacja wtyczki nie powiod\u0142a si\u0119, spr\u00f3buj ponownie p\u00f3\u017aniej."],"Plugin activation failed, Please try again later.":["Aktywacja wtyczki nie powiod\u0142a si\u0119, spr\u00f3buj ponownie p\u00f3\u017aniej."],"What's New?":["Co nowego?"],"Core":["Rdze\u0144"],"Unlicensed":["Bez licencji"],"Upgrade":["Aktualizacja"],"Webhooks":["Webhooks"],"Install & Activate":["Zainstaluj i aktywuj"],"Conditional Logic":["Logika warunkowa"],"Premium":["Premium"],"Welcome to SureForms!":["Witamy w SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms to wtyczka do WordPressa, kt\u00f3ra umo\u017cliwia u\u017cytkownikom tworzenie pi\u0119knie wygl\u0105daj\u0105cych formularzy za pomoc\u0105 interfejsu przeci\u0105gnij i upu\u015b\u0107, bez potrzeby kodowania. Integruje si\u0119 z edytorem blok\u00f3w WordPress."],"Read Full Guide":["Przeczytaj pe\u0142ny przewodnik"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Niestandardowe formularze WordPress UPROSZCZONE"],"No Date":["Brak daty"],"Invalid Date":["Nieprawid\u0142owa data"],"Ready to go beyond free plan?":["Gotowy, aby wyj\u015b\u0107 poza darmowy plan?"],"Upgrade now":["Zaktualizuj teraz"],"and unlock the full power of SureForms!":["i odblokuj pe\u0142n\u0105 moc SureForms!"],"Upgrade SureForms":["Uaktualnij SureForms"],"Open Support Ticket":["Otw\u00f3rz zg\u0142oszenie do pomocy technicznej"],"Help Center":["Centrum Pomocy"],"Join our Community on Facebook":["Do\u0142\u0105cz do naszej spo\u0142eczno\u015bci na Facebooku"],"Leave Us a Review":["Zostaw nam recenzj\u0119"],"Quick Access":["Szybki dost\u0119p"],"Upgrade Now":["Zaktualizuj teraz"],"Clear Filters":["Wyczy\u015b\u0107 filtry"],"Unnamed Form":["Formularz bez nazwy"],"Forms Overview":["Przegl\u0105d formularzy"],"Clear Form Filters":["Wyczy\u015b\u0107 filtry formularza"],"Clear Date Filters":["Wyczy\u015b\u0107 filtry daty"],"Select Date Range":["Wybierz zakres dat"],"Apply":["Zastosuj"],"Please wait for the data to load":["Prosz\u0119 poczeka\u0107 na za\u0142adowanie danych"],"No entries to display":["Brak wpis\u00f3w do wy\u015bwietlenia"],"Once you create a form and start receiving submissions, the data will appear here.":["Gdy utworzysz formularz i zaczniesz otrzymywa\u0107 zg\u0142oszenia, dane pojawi\u0105 si\u0119 tutaj."],"Free":["Bezp\u0142atny"],"All Forms":["Wszystkie formularze"],"Guided Setup":["Przewodnik konfiguracji"],"Exit Guided Setup":["Zako\u0144cz konfiguracj\u0119 z przewodnikiem"],"Skip":["Pomi\u0144"],"Build beautiful forms visually":["Tw\u00f3rz pi\u0119kne formularze wizualnie"],"Works perfectly on mobile":["Dzia\u0142a perfekcyjnie na urz\u0105dzeniach mobilnych"],"Easy to connect with automation tools":["\u0141atwe do po\u0142\u0105czenia z narz\u0119dziami automatyzacji"],"Welcome to SureForms":["Witamy w SureForms"],"Smart, Quick and Powerful Forms.":["Inteligentne, szybkie i pot\u0119\u017cne formularze."],"Let's Get Started":["Zacznijmy"],"Build up to 10 forms using AI":["Stw\u00f3rz do 10 formularzy za pomoc\u0105 AI"],"A secure and private connection":["Bezpieczne i prywatne po\u0142\u0105czenie"],"Smart form drafts based on your input":["Inteligentne szkice formularzy na podstawie Twojego wk\u0142adu"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Rozpocz\u0119cie od pustego formularza nie zawsze jest \u0142atwe. Nasza sztuczna inteligencja mo\u017ce pom\u00f3c, tworz\u0105c szkic formularza na podstawie tego, co pr\u00f3bujesz zrobi\u0107 \u2014 oszcz\u0119dzaj\u0105c Tw\u00f3j czas i daj\u0105c Ci jasny kierunek."],"To do this, you'll need to connect your account.":["Aby to zrobi\u0107, musisz po\u0142\u0105czy\u0107 swoje konto."],"Let AI Help You Build Smarter, Faster Forms":["Pozw\u00f3l, aby AI pomog\u0142a Ci tworzy\u0107 m\u0105drzejsze, szybsze formularze"],"Here's what that gives you:":["Oto, co to ci daje:"],"Continue":["Kontynuuj"],"Connect":["Po\u0142\u0105cz"],"Works smoothly with forms made using SureForms":["Dzia\u0142a p\u0142ynnie z formularzami stworzonymi za pomoc\u0105 SureForms"],"Helps your emails reach the inbox instead of spam":["Pomaga Twoim e-mailom dotrze\u0107 do skrzynki odbiorczej zamiast do spamu"],"Setup is straightforward, even if you're not technical":["Konfiguracja jest prosta, nawet je\u015bli nie jeste\u015b techniczny"],"Lightweight and easy to use without adding clutter":["Lekki i \u0142atwy w u\u017cyciu, bez dodawania ba\u0142aganu"],"Make Sure Your Emails Get Delivered":["Upewnij si\u0119, \u017ce Twoje e-maile s\u0105 dostarczane"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["Wi\u0119kszo\u015b\u0107 witryn WordPress ma trudno\u015bci z niezawodnym wysy\u0142aniem e-maili, co oznacza, \u017ce zg\u0142oszenia formularzy z Twojej strony mog\u0105 nie dotrze\u0107 do Twojej skrzynki odbiorczej \u2014 lub trafi\u0107 do spamu."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail to prosty plugin SMTP, kt\u00f3ry pomaga upewni\u0107 si\u0119, \u017ce Twoje e-maile faktycznie zostan\u0105 dostarczone."],"What you will get:":["Co otrzymasz:"],"Install SureMail":["Zainstaluj SureMail"],"AI Form Generation":["Generowanie formularzy AI"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["Zm\u0119czony r\u0119cznym tworzeniem formularzy? Pozw\u00f3l, aby AI wykona\u0142a prac\u0119 za Ciebie. Wystarczy opisa\u0107, a nasza AI stworzy idealny formularz w kilka sekund."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Podziel z\u0142o\u017cone formularze na proste kroki, zmniejszaj\u0105c przyt\u0142oczenie i zwi\u0119kszaj\u0105c wska\u017aniki uko\u0144czenia. Prowad\u017a u\u017cytkownik\u00f3w p\u0142ynnie przez proces"],"Conditional Fields":["Pola warunkowe"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Poka\u017c lub ukryj pola w zale\u017cno\u015bci od odpowiedzi u\u017cytkownika. Zadawaj w\u0142a\u015bciwe pytania i wy\u015bwietlaj tylko to, co jest potrzebne, aby formularze by\u0142y przejrzyste i istotne."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Ulepsz swoje formularze za pomoc\u0105 zaawansowanych p\u00f3l, takich jak przesy\u0142anie wielu plik\u00f3w, pola oceny oraz selektory daty i czasu, aby zbiera\u0107 bogatsze i bardziej elastyczne dane."],"Conversational Forms":["Formy konwersacyjne"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Tw\u00f3rz formularze, kt\u00f3re przypominaj\u0105 rozmow\u0119. Jedno pytanie na raz utrzymuje zaanga\u017cowanie u\u017cytkownik\u00f3w i u\u0142atwia wype\u0142nianie formularzy."],"Digital Signatures":["Podpisy cyfrowe"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Zbieraj prawnie wi\u0105\u017c\u0105ce podpisy cyfrowe bezpo\u015brednio w swoich formularzach do um\u00f3w, zatwierdze\u0144 i kontrakt\u00f3w."],"Calculators":["Kalkulatory"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Dodaj interaktywne kalkulatory do swoich formularzy, aby zapewni\u0107 u\u017cytkownikom natychmiastowe szacunki, oferty i obliczenia."],"User Registration and Login":["Rejestracja i logowanie u\u017cytkownika"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Pozw\u00f3l odwiedzaj\u0105cym rejestrowa\u0107 si\u0119 i logowa\u0107 na Twojej stronie. Przydatne dla cz\u0142onkostwa, spo\u0142eczno\u015bci lub ka\u017cdej strony, kt\u00f3ra wymaga dost\u0119pu u\u017cytkownik\u00f3w."],"PDF Generation Made Simple":["Generowanie PDF w prosty spos\u00f3b"],"Custom App":["Aplikacja niestandardowa"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Zbieraj dane, wysy\u0142aj je do zewn\u0119trznych aplikacji do przetwarzania i natychmiast wy\u015bwietlaj wyniki \u2014 wszystko to p\u0142ynnie zintegrowane, aby tworzy\u0107 dynamiczne, interaktywne do\u015bwiadczenia u\u017cytkownika."],"Select Your Features":["Wybierz swoje funkcje"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Uzyskaj wi\u0119ksz\u0105 kontrol\u0119, szybsze przep\u0142ywy pracy i g\u0142\u0119bsz\u0105 personalizacj\u0119 \u2014 wszystko zaprojektowane, aby pom\u00f3c Ci tworzy\u0107 lepsze strony internetowe przy mniejszym wysi\u0142ku."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Wybrane funkcje wymagaj\u0105 %1$s - u\u017cyj kodu %2$s, aby uzyska\u0107 10% zni\u017cki na dowolny plan."],"Copied":["Skopiowano"],"Style your form to better match your site's design":["Dostosuj styl formularza, aby lepiej pasowa\u0142 do projektu Twojej strony"],"Add spam protection to block common bot submissions":["Dodaj ochron\u0119 przed spamem, aby blokowa\u0107 typowe zg\u0142oszenia bot\u00f3w"],"Get weekly email reports with a summary of form activity":["Otrzymuj cotygodniowe raporty e-mailowe z podsumowaniem aktywno\u015bci formularza"],"You're All Set! \ud83d\ude80":["Wszystko gotowe! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Skorzystaj z naszego kreatora formularzy AI, aby szybko rozpocz\u0105\u0107, lub stw\u00f3rz formularz od podstaw, je\u015bli ju\u017c wiesz, czego potrzebujesz. Twoje formularze s\u0105 gotowe do tworzenia, udost\u0119pniania i \u0142\u0105czenia z odwiedzaj\u0105cymi Twoj\u0105 stron\u0119."],"Final Touches That Make a Difference:":["Ostatnie szlify, kt\u00f3re robi\u0105 r\u00f3\u017cnic\u0119:"],"Build Your First Form":["Zbuduj sw\u00f3j pierwszy formularz"],"File Uploads":["Przesy\u0142anie plik\u00f3w"],"Signature & Rating":["Podpis i Ocena"],"Calculation Forms":["Formularze obliczeniowe"],"And Much More\u2026":["I wiele wi\u0119cej\u2026"],"Upgrade to Pro":["Uaktualnij do wersji Pro"],"Unlock Premium Features":["Odblokuj funkcje premium"],"Build Better Forms with SureForms":["Tw\u00f3rz lepsze formularze z SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Dodaj zaawansowane pola, konwersacyjne uk\u0142ady i inteligentn\u0105 logik\u0119, aby tworzy\u0107 formularze, kt\u00f3re anga\u017cuj\u0105 u\u017cytkownik\u00f3w i zbieraj\u0105 lepsze dane."],"SureForms Video Thumbnail":["Miniatura wideo SureForms"],"Payments":["P\u0142atno\u015bci"],"Knowledge Base":["Baza wiedzy"],"What\u2019s New":["Co nowego"],"Importing\u2026":["Importowanie\u2026"],"Learn":["Ucz si\u0119"],"Unable to complete action. Please try again.":["Nie mo\u017cna uko\u0144czy\u0107 akcji. Prosz\u0119 spr\u00f3bowa\u0107 ponownie."],"Supercharge Your Workflow":["Podkr\u0119\u0107 sw\u00f3j przep\u0142yw pracy"],"Spam protection included":["W zestawie ochrona przed spamem"],"Multistep Forms":["Formularze wieloetapowe"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Wysy\u0142aj wpisy formularzy natychmiast do dowolnego zewn\u0119trznego systemu lub punktu ko\u0144cowego, aby zasila\u0107 zaawansowane przep\u0142ywy pracy."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Automatycznie przekszta\u0142caj wpisy formularzy w czyste, gotowe do pobrania pliki PDF. Idealne do rejestrowania, udost\u0119pniania, archiwizowania lub utrzymywania porz\u0105dku."],"Set up confirmation messages and email notifications for each entry":["Skonfiguruj wiadomo\u015bci potwierdzaj\u0105ce i powiadomienia e-mail dla ka\u017cdego wpisu"],"Something went wrong. Please try again.":["Co\u015b posz\u0142o nie tak. Prosz\u0119 spr\u00f3buj ponownie."],"Payment Forms":["Formularze p\u0142atno\u015bci"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Zbieraj p\u0142atno\u015bci bezpo\u015brednio przez swoje formularze. Akceptuj jednorazowe i cykliczne p\u0142atno\u015bci bezproblemowo."],"SureForms %s":["SureForms %s"],"First name is required.":["Imi\u0119 jest wymagane."],"Please enter a valid email address.":["Prosz\u0119 wprowadzi\u0107 prawid\u0142owy adres e-mail."],"Email address is required.":["Adres e-mail jest wymagany."],"This is required.":["To jest wymagane."],"Okay, just one last step\u2026":["W porz\u0105dku, jeszcze tylko jeden krok\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Pom\u00f3\u017c nam dostosowa\u0107 Twoje do\u015bwiadczenie z SureForms, dziel\u0105c si\u0119 kilkoma informacjami o sobie."],"First Name":["Imi\u0119"],"Enter your first name":["Wprowad\u017a swoje imi\u0119"],"Last Name":["Nazwisko"],"Enter your last name":["Wpisz swoje nazwisko"],"Email Address":["Adres e-mail"],"Enter your email address":["Wprowad\u017a sw\u00f3j adres e-mail"],"Privacy Policy":["Polityka prywatno\u015bci"],"Finish":["Zako\u0144cz"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Pozosta\u0144 na bie\u017c\u0105co i pom\u00f3\u017c kszta\u0142towa\u0107 SureForms! Otrzymuj aktualizacje funkcji i pom\u00f3\u017c nam w ulepszaniu SureForms, dziel\u0105c si\u0119 tym, jak u\u017cywasz wtyczki. Polityka prywatno\u015bci<\/a>."],"%d form ready":["%d formularz gotowy"],"%d already imported":["%d ju\u017c zaimportowano"],"(unnamed source)":["(nienazwane \u017ar\u00f3d\u0142o)"],"All forms already imported":["Wszystkie formularze ju\u017c zaimportowane"],"Import forms":["Importuj formularze"],"Import %d form":["Importuj %d formularz"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Co\u015b posz\u0142o nie tak podczas importowania. Mo\u017cesz spr\u00f3bowa\u0107 ponownie, pomin\u0105\u0107 lub otworzy\u0107 Ustawienia \u2192 Migracja."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Nie wykryto innych wtyczek formularzy. Mo\u017cesz zaimportowa\u0107 w dowolnym momencie z Ustawienia \u2192 Migracja."],"Forms imported":["Formularze zaimportowane"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["%1$d formularz z %2$s jest teraz w SureForms, gotowy do publikacji, stylizacji i po\u0142\u0105czenia."],"%d form imported":["Zaimportowano %d formularz"],"%d form could not be imported":["Nie mo\u017cna zaimportowa\u0107 %d formularza"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d typ pola nie by\u0142 obs\u0142ugiwany. Mo\u017cesz go odbudowa\u0107 r\u0119cznie w SureForms."],"Bring your existing forms with you":["Przynie\u015b ze sob\u0105 swoje istniej\u0105ce formularze"],"We detected forms in another plugin. Pick one to import into SureForms.":["Wykryli\u015bmy formularze w innym wtyczce. Wybierz jeden do zaimportowania do SureForms."],"Choose a form plugin to import from":["Wybierz wtyczk\u0119 formularza do zaimportowania"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Importujesz wi\u0119cej ni\u017c jedn\u0105 wtyczk\u0119? Mo\u017cesz zaimportowa\u0107 dodatkowe \u017ar\u00f3d\u0142a p\u00f3\u017aniej z Ustawienia \u2192 Migracja."],"Import did not complete":["Import nie zosta\u0142 zako\u0144czony"],"I'll do this later":["Zrobi\u0119 to p\u00f3\u017aniej"],"Retry":["Pon\u00f3w"],"Form Checks":["Kontrole formularzy"],"Collapse form checks":["Zwi\u0144 kontrole formularzy"],"Expand form checks":["Rozwi\u0144 kontrole formularzy"],"Ignore":["Ignoruj"],"Working\u2026":["Pracuj\u0119\u2026"]}}} \ No newline at end of file +{"translation-revision-date":"2025-01-02T08:44:41+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Panel sterowania"],"Settings":["Ustawienia"],"Entries":["Wpisy"],"Activated":["Aktywowany"],"Advanced Fields":["Pola zaawansowane"],"Select Form":["Wybierz formularz"],"Create New Form":["Utw\u00f3rz nowy formularz"],"Forms":["Formularze"],"Copy":["Kopiuj"],"Business":["Biznes"],"Next":["Dalej"],"Back":["Wstecz"],"Close":["Zamknij"],"Cancel":["Anuluj"],"This is where your form views will appear":["To tutaj pojawi\u0105 si\u0119 widoki twojego formularza"],"Install":["Zainstaluj"],"Plugin Installation failed, Please try again later.":["Instalacja wtyczki nie powiod\u0142a si\u0119, spr\u00f3buj ponownie p\u00f3\u017aniej."],"Plugin activation failed, Please try again later.":["Aktywacja wtyczki nie powiod\u0142a si\u0119, spr\u00f3buj ponownie p\u00f3\u017aniej."],"What's New?":["Co nowego?"],"Core":["Rdze\u0144"],"Unlicensed":["Bez licencji"],"Upgrade":["Aktualizacja"],"Webhooks":["Webhooks"],"Install & Activate":["Zainstaluj i aktywuj"],"Contact Support":["Skontaktuj si\u0119 z pomoc\u0105 techniczn\u0105"],"Conditional Logic":["Logika warunkowa"],"Premium":["Premium"],"Welcome to SureForms!":["Witamy w SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms to wtyczka do WordPressa, kt\u00f3ra umo\u017cliwia u\u017cytkownikom tworzenie pi\u0119knie wygl\u0105daj\u0105cych formularzy za pomoc\u0105 interfejsu przeci\u0105gnij i upu\u015b\u0107, bez potrzeby kodowania. Integruje si\u0119 z edytorem blok\u00f3w WordPress."],"Read Full Guide":["Przeczytaj pe\u0142ny przewodnik"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Niestandardowe formularze WordPress UPROSZCZONE"],"No Date":["Brak daty"],"Invalid Date":["Nieprawid\u0142owa data"],"Ready to go beyond free plan?":["Gotowy, aby wyj\u015b\u0107 poza darmowy plan?"],"Upgrade now":["Zaktualizuj teraz"],"and unlock the full power of SureForms!":["i odblokuj pe\u0142n\u0105 moc SureForms!"],"Upgrade SureForms":["Uaktualnij SureForms"],"Open Support Ticket":["Otw\u00f3rz zg\u0142oszenie do pomocy technicznej"],"Help Center":["Centrum Pomocy"],"Join our Community on Facebook":["Do\u0142\u0105cz do naszej spo\u0142eczno\u015bci na Facebooku"],"Leave Us a Review":["Zostaw nam recenzj\u0119"],"Quick Access":["Szybki dost\u0119p"],"Upgrade Now":["Zaktualizuj teraz"],"Clear Filters":["Wyczy\u015b\u0107 filtry"],"Unnamed Form":["Formularz bez nazwy"],"Forms Overview":["Przegl\u0105d formularzy"],"Clear Form Filters":["Wyczy\u015b\u0107 filtry formularza"],"Clear Date Filters":["Wyczy\u015b\u0107 filtry daty"],"Select Date Range":["Wybierz zakres dat"],"Apply":["Zastosuj"],"Please wait for the data to load":["Prosz\u0119 poczeka\u0107 na za\u0142adowanie danych"],"No entries to display":["Brak wpis\u00f3w do wy\u015bwietlenia"],"Once you create a form and start receiving submissions, the data will appear here.":["Gdy utworzysz formularz i zaczniesz otrzymywa\u0107 zg\u0142oszenia, dane pojawi\u0105 si\u0119 tutaj."],"Free":["Bezp\u0142atny"],"All Forms":["Wszystkie formularze"],"Guided Setup":["Przewodnik konfiguracji"],"Exit Guided Setup":["Zako\u0144cz konfiguracj\u0119 z przewodnikiem"],"Skip":["Pomi\u0144"],"Build beautiful forms visually":["Tw\u00f3rz pi\u0119kne formularze wizualnie"],"Works perfectly on mobile":["Dzia\u0142a perfekcyjnie na urz\u0105dzeniach mobilnych"],"Easy to connect with automation tools":["\u0141atwe do po\u0142\u0105czenia z narz\u0119dziami automatyzacji"],"Welcome to SureForms":["Witamy w SureForms"],"Smart, Quick and Powerful Forms.":["Inteligentne, szybkie i pot\u0119\u017cne formularze."],"Let's Get Started":["Zacznijmy"],"Build up to 10 forms using AI":["Stw\u00f3rz do 10 formularzy za pomoc\u0105 AI"],"A secure and private connection":["Bezpieczne i prywatne po\u0142\u0105czenie"],"Smart form drafts based on your input":["Inteligentne szkice formularzy na podstawie Twojego wk\u0142adu"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Rozpocz\u0119cie od pustego formularza nie zawsze jest \u0142atwe. Nasza sztuczna inteligencja mo\u017ce pom\u00f3c, tworz\u0105c szkic formularza na podstawie tego, co pr\u00f3bujesz zrobi\u0107 \u2014 oszcz\u0119dzaj\u0105c Tw\u00f3j czas i daj\u0105c Ci jasny kierunek."],"To do this, you'll need to connect your account.":["Aby to zrobi\u0107, musisz po\u0142\u0105czy\u0107 swoje konto."],"Let AI Help You Build Smarter, Faster Forms":["Pozw\u00f3l, aby AI pomog\u0142a Ci tworzy\u0107 m\u0105drzejsze, szybsze formularze"],"Here's what that gives you:":["Oto, co to ci daje:"],"Continue":["Kontynuuj"],"Connect":["Po\u0142\u0105cz"],"Works smoothly with forms made using SureForms":["Dzia\u0142a p\u0142ynnie z formularzami stworzonymi za pomoc\u0105 SureForms"],"Helps your emails reach the inbox instead of spam":["Pomaga Twoim e-mailom dotrze\u0107 do skrzynki odbiorczej zamiast do spamu"],"Setup is straightforward, even if you're not technical":["Konfiguracja jest prosta, nawet je\u015bli nie jeste\u015b techniczny"],"Lightweight and easy to use without adding clutter":["Lekki i \u0142atwy w u\u017cyciu, bez dodawania ba\u0142aganu"],"Make Sure Your Emails Get Delivered":["Upewnij si\u0119, \u017ce Twoje e-maile s\u0105 dostarczane"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["Wi\u0119kszo\u015b\u0107 witryn WordPress ma trudno\u015bci z niezawodnym wysy\u0142aniem e-maili, co oznacza, \u017ce zg\u0142oszenia formularzy z Twojej strony mog\u0105 nie dotrze\u0107 do Twojej skrzynki odbiorczej \u2014 lub trafi\u0107 do spamu."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail to prosty plugin SMTP, kt\u00f3ry pomaga upewni\u0107 si\u0119, \u017ce Twoje e-maile faktycznie zostan\u0105 dostarczone."],"What you will get:":["Co otrzymasz:"],"Install SureMail":["Zainstaluj SureMail"],"AI Form Generation":["Generowanie formularzy AI"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["Zm\u0119czony r\u0119cznym tworzeniem formularzy? Pozw\u00f3l, aby AI wykona\u0142a prac\u0119 za Ciebie. Wystarczy opisa\u0107, a nasza AI stworzy idealny formularz w kilka sekund."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Podziel z\u0142o\u017cone formularze na proste kroki, zmniejszaj\u0105c przyt\u0142oczenie i zwi\u0119kszaj\u0105c wska\u017aniki uko\u0144czenia. Prowad\u017a u\u017cytkownik\u00f3w p\u0142ynnie przez proces"],"Conditional Fields":["Pola warunkowe"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Poka\u017c lub ukryj pola w zale\u017cno\u015bci od odpowiedzi u\u017cytkownika. Zadawaj w\u0142a\u015bciwe pytania i wy\u015bwietlaj tylko to, co jest potrzebne, aby formularze by\u0142y przejrzyste i istotne."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Ulepsz swoje formularze za pomoc\u0105 zaawansowanych p\u00f3l, takich jak przesy\u0142anie wielu plik\u00f3w, pola oceny oraz selektory daty i czasu, aby zbiera\u0107 bogatsze i bardziej elastyczne dane."],"Conversational Forms":["Formy konwersacyjne"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Tw\u00f3rz formularze, kt\u00f3re przypominaj\u0105 rozmow\u0119. Jedno pytanie na raz utrzymuje zaanga\u017cowanie u\u017cytkownik\u00f3w i u\u0142atwia wype\u0142nianie formularzy."],"Digital Signatures":["Podpisy cyfrowe"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Zbieraj prawnie wi\u0105\u017c\u0105ce podpisy cyfrowe bezpo\u015brednio w swoich formularzach do um\u00f3w, zatwierdze\u0144 i kontrakt\u00f3w."],"Calculators":["Kalkulatory"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Dodaj interaktywne kalkulatory do swoich formularzy, aby zapewni\u0107 u\u017cytkownikom natychmiastowe szacunki, oferty i obliczenia."],"User Registration and Login":["Rejestracja i logowanie u\u017cytkownika"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Pozw\u00f3l odwiedzaj\u0105cym rejestrowa\u0107 si\u0119 i logowa\u0107 na Twojej stronie. Przydatne dla cz\u0142onkostwa, spo\u0142eczno\u015bci lub ka\u017cdej strony, kt\u00f3ra wymaga dost\u0119pu u\u017cytkownik\u00f3w."],"PDF Generation Made Simple":["Generowanie PDF w prosty spos\u00f3b"],"Custom App":["Aplikacja niestandardowa"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Zbieraj dane, wysy\u0142aj je do zewn\u0119trznych aplikacji do przetwarzania i natychmiast wy\u015bwietlaj wyniki \u2014 wszystko to p\u0142ynnie zintegrowane, aby tworzy\u0107 dynamiczne, interaktywne do\u015bwiadczenia u\u017cytkownika."],"Select Your Features":["Wybierz swoje funkcje"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Uzyskaj wi\u0119ksz\u0105 kontrol\u0119, szybsze przep\u0142ywy pracy i g\u0142\u0119bsz\u0105 personalizacj\u0119 \u2014 wszystko zaprojektowane, aby pom\u00f3c Ci tworzy\u0107 lepsze strony internetowe przy mniejszym wysi\u0142ku."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Wybrane funkcje wymagaj\u0105 %1$s - u\u017cyj kodu %2$s, aby uzyska\u0107 10% zni\u017cki na dowolny plan."],"Copied":["Skopiowano"],"Style your form to better match your site's design":["Dostosuj styl formularza, aby lepiej pasowa\u0142 do projektu Twojej strony"],"Add spam protection to block common bot submissions":["Dodaj ochron\u0119 przed spamem, aby blokowa\u0107 typowe zg\u0142oszenia bot\u00f3w"],"Get weekly email reports with a summary of form activity":["Otrzymuj cotygodniowe raporty e-mailowe z podsumowaniem aktywno\u015bci formularza"],"You're All Set! \ud83d\ude80":["Wszystko gotowe! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Skorzystaj z naszego kreatora formularzy AI, aby szybko rozpocz\u0105\u0107, lub stw\u00f3rz formularz od podstaw, je\u015bli ju\u017c wiesz, czego potrzebujesz. Twoje formularze s\u0105 gotowe do tworzenia, udost\u0119pniania i \u0142\u0105czenia z odwiedzaj\u0105cymi Twoj\u0105 stron\u0119."],"Final Touches That Make a Difference:":["Ostatnie szlify, kt\u00f3re robi\u0105 r\u00f3\u017cnic\u0119:"],"Build Your First Form":["Zbuduj sw\u00f3j pierwszy formularz"],"File Uploads":["Przesy\u0142anie plik\u00f3w"],"Signature & Rating":["Podpis i Ocena"],"Calculation Forms":["Formularze obliczeniowe"],"And Much More\u2026":["I wiele wi\u0119cej\u2026"],"Upgrade to Pro":["Uaktualnij do wersji Pro"],"Unlock Premium Features":["Odblokuj funkcje premium"],"Build Better Forms with SureForms":["Tw\u00f3rz lepsze formularze z SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Dodaj zaawansowane pola, konwersacyjne uk\u0142ady i inteligentn\u0105 logik\u0119, aby tworzy\u0107 formularze, kt\u00f3re anga\u017cuj\u0105 u\u017cytkownik\u00f3w i zbieraj\u0105 lepsze dane."],"SureForms Video Thumbnail":["Miniatura wideo SureForms"],"Payments":["P\u0142atno\u015bci"],"Knowledge Base":["Baza wiedzy"],"What\u2019s New":["Co nowego"],"Importing\u2026":["Importowanie\u2026"],"Learn":["Ucz si\u0119"],"Unable to complete action. Please try again.":["Nie mo\u017cna uko\u0144czy\u0107 akcji. Prosz\u0119 spr\u00f3bowa\u0107 ponownie."],"Supercharge Your Workflow":["Podkr\u0119\u0107 sw\u00f3j przep\u0142yw pracy"],"Spam protection included":["W zestawie ochrona przed spamem"],"Multistep Forms":["Formularze wieloetapowe"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Wysy\u0142aj wpisy formularzy natychmiast do dowolnego zewn\u0119trznego systemu lub punktu ko\u0144cowego, aby zasila\u0107 zaawansowane przep\u0142ywy pracy."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Automatycznie przekszta\u0142caj wpisy formularzy w czyste, gotowe do pobrania pliki PDF. Idealne do rejestrowania, udost\u0119pniania, archiwizowania lub utrzymywania porz\u0105dku."],"Set up confirmation messages and email notifications for each entry":["Skonfiguruj wiadomo\u015bci potwierdzaj\u0105ce i powiadomienia e-mail dla ka\u017cdego wpisu"],"Something went wrong. Please try again.":["Co\u015b posz\u0142o nie tak. Prosz\u0119 spr\u00f3buj ponownie."],"Payment Forms":["Formularze p\u0142atno\u015bci"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Zbieraj p\u0142atno\u015bci bezpo\u015brednio przez swoje formularze. Akceptuj jednorazowe i cykliczne p\u0142atno\u015bci bezproblemowo."],"SureForms %s":["SureForms %s"],"First name is required.":["Imi\u0119 jest wymagane."],"Please enter a valid email address.":["Prosz\u0119 wprowadzi\u0107 prawid\u0142owy adres e-mail."],"Email address is required.":["Adres e-mail jest wymagany."],"This is required.":["To jest wymagane."],"Okay, just one last step\u2026":["W porz\u0105dku, jeszcze tylko jeden krok\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Pom\u00f3\u017c nam dostosowa\u0107 Twoje do\u015bwiadczenie z SureForms, dziel\u0105c si\u0119 kilkoma informacjami o sobie."],"First Name":["Imi\u0119"],"Enter your first name":["Wprowad\u017a swoje imi\u0119"],"Last Name":["Nazwisko"],"Enter your last name":["Wpisz swoje nazwisko"],"Email Address":["Adres e-mail"],"Enter your email address":["Wprowad\u017a sw\u00f3j adres e-mail"],"Privacy Policy":["Polityka prywatno\u015bci"],"Finish":["Zako\u0144cz"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Pozosta\u0144 na bie\u017c\u0105co i pom\u00f3\u017c kszta\u0142towa\u0107 SureForms! Otrzymuj aktualizacje funkcji i pom\u00f3\u017c nam w ulepszaniu SureForms, dziel\u0105c si\u0119 tym, jak u\u017cywasz wtyczki. Polityka prywatno\u015bci<\/a>."],"%d form ready":["%d formularz gotowy"],"%d already imported":["%d ju\u017c zaimportowano"],"(unnamed source)":["(nienazwane \u017ar\u00f3d\u0142o)"],"All forms already imported":["Wszystkie formularze ju\u017c zaimportowane"],"Import forms":["Importuj formularze"],"Import %d form":["Importuj %d formularz"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Co\u015b posz\u0142o nie tak podczas importowania. Mo\u017cesz spr\u00f3bowa\u0107 ponownie, pomin\u0105\u0107 lub otworzy\u0107 Ustawienia \u2192 Migracja."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Nie wykryto innych wtyczek formularzy. Mo\u017cesz zaimportowa\u0107 w dowolnym momencie z Ustawienia \u2192 Migracja."],"Forms imported":["Formularze zaimportowane"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["%1$d formularz z %2$s jest teraz w SureForms, gotowy do publikacji, stylizacji i po\u0142\u0105czenia."],"%d form imported":["Zaimportowano %d formularz"],"%d form could not be imported":["Nie mo\u017cna zaimportowa\u0107 %d formularza"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d typ pola nie by\u0142 obs\u0142ugiwany. Mo\u017cesz go odbudowa\u0107 r\u0119cznie w SureForms."],"Bring your existing forms with you":["Przynie\u015b ze sob\u0105 swoje istniej\u0105ce formularze"],"We detected forms in another plugin. Pick one to import into SureForms.":["Wykryli\u015bmy formularze w innym wtyczce. Wybierz jeden do zaimportowania do SureForms."],"Choose a form plugin to import from":["Wybierz wtyczk\u0119 formularza do zaimportowania"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Importujesz wi\u0119cej ni\u017c jedn\u0105 wtyczk\u0119? Mo\u017cesz zaimportowa\u0107 dodatkowe \u017ar\u00f3d\u0142a p\u00f3\u017aniej z Ustawienia \u2192 Migracja."],"Import did not complete":["Import nie zosta\u0142 zako\u0144czony"],"I'll do this later":["Zrobi\u0119 to p\u00f3\u017aniej"],"Retry":["Pon\u00f3w"],"Form Checks":["Kontrole formularzy"],"Collapse form checks":["Zwi\u0144 kontrole formularzy"],"Expand form checks":["Rozwi\u0144 kontrole formularzy"],"Ignore":["Ignoruj"],"Working\u2026":["Pracuj\u0119\u2026"],"Details":["Szczeg\u00f3\u0142y"],"Copy details":["Skopiuj szczeg\u00f3\u0142y"]}}} \ No newline at end of file diff --git a/languages/sureforms-pl_PL.mo b/languages/sureforms-pl_PL.mo index 874783a27..813ee4762 100644 Binary files a/languages/sureforms-pl_PL.mo and b/languages/sureforms-pl_PL.mo differ diff --git a/languages/sureforms-pl_PL.po b/languages/sureforms-pl_PL.po index 08f6d0ae8..2420ea57d 100644 --- a/languages/sureforms-pl_PL.po +++ b/languages/sureforms-pl_PL.po @@ -14,9 +14,9 @@ msgstr "" #. Plugin Name of the plugin #. Author of the plugin #: sureforms.php -#: admin/admin.php:1152 -#: admin/admin.php:1153 -#: admin/admin.php:3021 +#: admin/admin.php:1198 +#: admin/admin.php:1199 +#: admin/admin.php:3185 #: inc/abilities/abilities-registrar.php:139 #: inc/gutenberg-hooks.php:109 #: inc/page-builders/bricks/elements/form-widget.php:67 @@ -43,8 +43,8 @@ msgstr "Prosty, ale potężny sposób na tworzenie nowoczesnych formularzy na Tw msgid "https://sureforms.com/" msgstr "https://sureforms.com/" -#: admin/admin.php:1165 -#: admin/admin.php:1166 +#: admin/admin.php:1211 +#: admin/admin.php:1212 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -59,9 +59,9 @@ msgstr "https://sureforms.com/" msgid "Dashboard" msgstr "Panel sterowania" -#: admin/admin.php:1183 -#: admin/admin.php:1184 -#: admin/admin.php:1616 +#: admin/admin.php:1229 +#: admin/admin.php:1230 +#: admin/admin.php:1662 #: inc/compatibility/multilingual/string-collector.php:236 #: inc/compatibility/multilingual/string-collector.php:245 #: inc/compatibility/multilingual/string-collector.php:313 @@ -79,15 +79,15 @@ msgstr "Panel sterowania" msgid "Settings" msgstr "Ustawienia" -#: admin/admin.php:1452 -#: admin/admin.php:1453 +#: admin/admin.php:1498 +#: admin/admin.php:1499 #: inc/post-types.php:270 msgid "New Form" msgstr "Nowy formularz" -#: admin/admin.php:1461 -#: admin/admin.php:1462 -#: admin/admin.php:3340 +#: admin/admin.php:1507 +#: admin/admin.php:1508 +#: admin/admin.php:3504 #: inc/generate-form-markup.php:211 #: inc/generate-form-markup.php:224 #: inc/global-settings/email-summary.php:225 @@ -105,7 +105,7 @@ msgid "Entries" msgstr "Wpisy" #. Translators: Post Title. -#: admin/admin.php:1704 +#: admin/admin.php:1750 #, php-format msgid "Edit %1$s" msgstr "Edytuj %1$s" @@ -118,7 +118,7 @@ msgstr "Edytuj %1$s" #: inc/duplicate-form.php:191 #: inc/export.php:126 #: inc/export.php:184 -#: inc/forms-data.php:88 +#: inc/forms-data.php:108 #: inc/global-settings/global-settings.php:89 #: inc/global-settings/global-settings.php:639 #: inc/rest-api.php:203 @@ -126,18 +126,18 @@ msgid "Nonce verification failed." msgstr "Weryfikacja nonce nie powiodła się." #. translators: %1$s: Opening anchor tag with URL, %2$s: Closing anchor tag, %3$s: SureForms Pro Plugin Name. -#: admin/admin.php:2572 +#: admin/admin.php:2626 #, php-format msgid "Please %1$sactivate%2$s your copy of %3$s to get new features, access support, receive update notifications, and more." msgstr "Proszę %1$saktywować%2$s swoją kopię %3$s, aby uzyskać nowe funkcje, dostęp do wsparcia, otrzymywać powiadomienia o aktualizacjach i więcej." #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version, %4$s: Anchor tag open, %5$s: Closing anchor tag. -#: admin/admin.php:2590 +#: admin/admin.php:2644 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version from %4$shere%5$s." msgstr "SureForms %1$s wymaga co najmniej %2$s %3$s, aby działać poprawnie. Proszę zaktualizować do najnowszej wersji z %4$stąd%5$s." -#: admin/admin.php:3339 +#: admin/admin.php:3503 #: inc/global-settings/email-summary.php:224 #: assets/build/entries.js:172 #: assets/build/payments.js:172 @@ -207,7 +207,7 @@ msgstr "Śmieci" msgid "Published" msgstr "Opublikowano" -#: admin/admin.php:3331 +#: admin/admin.php:3495 msgid "View" msgstr "Widok" @@ -299,11 +299,11 @@ msgstr "Nie określono wtyczki" msgid "Plugin Successfully Activated" msgstr "Wtyczka została pomyślnie aktywowana" -#: admin/admin.php:1780 +#: admin/admin.php:1834 msgid "Activating..." msgstr "Aktywowanie..." -#: admin/admin.php:1781 +#: admin/admin.php:1835 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/formEditor.js:172 @@ -318,17 +318,17 @@ msgstr "Aktywowanie..." msgid "Activated" msgstr "Aktywowany" -#: admin/admin.php:1782 +#: admin/admin.php:1836 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Activate" msgstr "Aktywuj" -#: admin/admin.php:1783 +#: admin/admin.php:1837 msgid "Installing..." msgstr "Instalowanie..." -#: admin/admin.php:1784 +#: admin/admin.php:1838 msgid "Installed" msgstr "Zainstalowano" @@ -336,12 +336,13 @@ msgstr "Zainstalowano" msgid "You do not have permission to access this page." msgstr "Nie masz uprawnień do dostępu do tej strony." -#: admin/admin.php:2784 -#: admin/admin.php:2912 -#: admin/admin.php:2950 -#: admin/admin.php:2971 -#: admin/admin.php:3294 -#: admin/admin.php:3601 +#: admin/admin.php:2874 +#: admin/admin.php:2917 +#: admin/admin.php:3076 +#: admin/admin.php:3114 +#: admin/admin.php:3135 +#: admin/admin.php:3458 +#: admin/admin.php:3847 #: inc/admin-ajax.php:164 #: inc/payments/admin/admin-handler.php:638 #: inc/payments/stripe/admin-stripe-handler.php:80 @@ -354,7 +355,7 @@ msgid "Form ID is required." msgstr "Wymagany jest identyfikator formularza." #: inc/admin-ajax.php:184 -#: inc/form-submit.php:1153 +#: inc/form-submit.php:1261 msgid "Invalid form ID." msgstr "Nieprawidłowy identyfikator formularza." @@ -593,28 +594,28 @@ msgstr "Telefon" msgid "Textarea" msgstr "Pole tekstowe" -#: inc/form-submit.php:231 +#: inc/form-submit.php:281 msgid "Cloudflare Turnstile secret key is invalid." msgstr "Klucz tajny Cloudflare Turnstile jest nieprawidłowy." -#: inc/form-submit.php:238 +#: inc/form-submit.php:288 msgid "Cloudflare Turnstile response is missing." msgstr "Brakuje odpowiedzi Cloudflare Turnstile." -#: inc/form-submit.php:282 +#: inc/form-submit.php:332 msgid "hCaptcha secret key is invalid." msgstr "Klucz tajny hCaptcha jest nieprawidłowy." -#: inc/form-submit.php:289 +#: inc/form-submit.php:339 msgid "hCaptcha response is missing." msgstr "Brakuje odpowiedzi hCaptcha." -#: inc/form-submit.php:330 -#: inc/form-submit.php:589 +#: inc/form-submit.php:380 +#: inc/form-submit.php:639 msgid "Form data is not found." msgstr "Dane formularza nie zostały znalezione." -#: inc/forms-data.php:68 +#: inc/forms-data.php:88 msgid "Sorry, you are not allowed to view the form." msgstr "Przepraszam, nie masz uprawnień do przeglądania formularza." @@ -667,7 +668,7 @@ msgstr "Wartość musi być unikalna." msgid "Sorry, you are not allowed to perform this action." msgstr "Przepraszam, nie masz uprawnień do wykonania tej czynności." -#: admin/admin.php:2639 +#: admin/admin.php:2693 msgid "Rate SureForms" msgstr "Oceń SureForms" @@ -728,7 +729,7 @@ msgstr "Edytuj formularz" msgid "Edit" msgstr "Edytuj" -#: admin/admin.php:3072 +#: admin/admin.php:3236 #: inc/page-builders/elementor/form-widget.php:346 #: assets/build/dashboard.js:2 msgid "Create New Form" @@ -765,8 +766,8 @@ msgstr "Wyświetl formularz" msgid "View Forms" msgstr "Wyświetl formularze" -#: admin/admin.php:1443 -#: admin/admin.php:1444 +#: admin/admin.php:1489 +#: admin/admin.php:1490 #: inc/post-types.php:274 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -8280,7 +8281,7 @@ msgstr "Socialne" msgid "Travel" msgstr "Podróż" -#: inc/helper.php:2375 +#: inc/helper.php:2368 msgid "Blank Form" msgstr "Pusty formularz" @@ -8599,7 +8600,9 @@ msgstr "Proszę dodać opcję props do MultiButtonsControl" msgid "Icon Library" msgstr "Biblioteka ikon" +#: admin/admin.php:4062 #: assets/build/blocks.js:172 +#: assets/build/dashboard.js:172 #: modules/gutenberg/build/blocks.js:4 msgid "Close" msgstr "Zamknij" @@ -8888,9 +8891,9 @@ msgstr "Dodaj bloki do paska szybkich akcji" msgid "Re-arrange block inside Quick Action Bar" msgstr "Przestaw blok wewnątrz paska szybkich akcji" -#: admin/admin.php:1236 -#: admin/admin.php:1237 -#: admin/admin.php:4129 +#: admin/admin.php:1282 +#: admin/admin.php:1283 +#: admin/admin.php:4737 #: assets/build/blocks.js:172 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -9263,7 +9266,7 @@ msgstr "Centrum" msgid "Right" msgstr "Prawo" -#: inc/form-submit.php:1344 +#: inc/form-submit.php:1452 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Google reCAPTCHA" @@ -9273,7 +9276,7 @@ msgstr "Google reCAPTCHA" msgid "CloudFlare Turnstile" msgstr "CloudFlare Turnstile" -#: inc/form-submit.php:1348 +#: inc/form-submit.php:1456 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "hCaptcha" @@ -9569,7 +9572,7 @@ msgstr "Klucz strony" msgid "Secret Key" msgstr "Klucz tajny" -#: inc/form-submit.php:1352 +#: inc/form-submit.php:1460 #: assets/build/settings.js:172 msgid "Cloudflare Turnstile" msgstr "Cloudflare Turnstile" @@ -9594,7 +9597,8 @@ msgstr "Połącz teraz" msgid "Authentication Failed" msgstr "Uwierzytelnianie nie powiodło się" -#: admin/admin.php:3516 +#: admin/admin.php:4061 +#: assets/build/dashboard.js:172 #: assets/build/templatePicker.js:172 msgid "Contact Support" msgstr "Skontaktuj się z pomocą techniczną" @@ -10566,18 +10570,18 @@ msgstr "Odblokuj Dodaj Notatkę" msgid "With the SureForms Starter plan, enhance your submitted form entries by adding personalized notes for better clarity and tracking." msgstr "Dzięki planowi SureForms Starter ulepsz swoje przesłane formularze, dodając spersonalizowane notatki dla lepszej przejrzystości i śledzenia." -#: inc/form-submit.php:990 +#: inc/form-submit.php:1046 msgid "Email notification passed to the sending server" msgstr "Powiadomienie e-mail zostało przekazane do serwera wysyłającego" #. translators: Here, %s is the comma separated emails list. -#: inc/form-submit.php:1063 +#: inc/form-submit.php:1130 #, php-format msgid "Email notification recipient: %s" msgstr "Odbiorca powiadomienia e-mail: %s" #. translators: Here, %1$s is the comma separated emails list and %2$s is error report ( if any ). -#: inc/form-submit.php:1080 +#: inc/form-submit.php:1147 #, php-format msgid "Email server was unable to send the email notification. Recipient: %1$s. Reason: %2$s" msgstr "Serwer poczty nie mógł wysłać powiadomienia e-mail. Odbiorca: %1$s. Powód: %2$s" @@ -10620,7 +10624,7 @@ msgstr "Odblokuj formularze konwersacyjne" msgid "With the SureForms Pro Plan, you can transform your forms into engaging conversational layouts for a seamless user experience." msgstr "Dzięki planowi SureForms Pro możesz przekształcić swoje formularze w angażujące, konwersacyjne układy, zapewniając płynne doświadczenie użytkownika." -#: admin/admin.php:1075 +#: admin/admin.php:1121 msgid "Get SureForms Pro" msgstr "Pobierz SureForms Pro" @@ -10832,24 +10836,24 @@ msgstr "Wybierz gradient" msgid "reCAPTCHA" msgstr "reCAPTCHA" -#: inc/form-submit.php:1288 +#: inc/form-submit.php:1396 msgid "Captcha validation failed. No error code provided." msgstr "Weryfikacja Captcha nie powiodła się. Nie podano kodu błędu." -#: inc/form-submit.php:1289 +#: inc/form-submit.php:1397 msgid "Captcha validation failed." msgstr "Weryfikacja Captcha nie powiodła się." -#: inc/form-submit.php:1356 +#: inc/form-submit.php:1464 msgid "Unknown Captcha" msgstr "Nieznana Captcha" -#: inc/form-submit.php:1357 +#: inc/form-submit.php:1465 msgid "Invalid captcha type." msgstr "Nieprawidłowy typ captcha." #. translators: %s is the captcha title. -#: inc/form-submit.php:1370 +#: inc/form-submit.php:1478 #, php-format msgid "%s verification failed. Please contact your site administrator." msgstr "Weryfikacja %s nie powiodła się. Proszę skontaktować się z administratorem strony." @@ -11246,8 +11250,8 @@ msgstr "Opisz formularz, który chcesz utworzyć" msgid "We are building your form…" msgstr "Budujemy Twój formularz…" -#: admin/admin.php:1351 -#: admin/admin.php:1352 +#: admin/admin.php:1397 +#: admin/admin.php:1398 msgid "SMTP" msgstr "SMTP" @@ -11379,31 +11383,32 @@ msgstr "Włącz powiadomienia administratora" msgid "Admin notifications keep you informed about new form entries since your last visit." msgstr "Powiadomienia administracyjne informują Cię o nowych wpisach formularza od Twojej ostatniej wizyty." -#: admin/admin.php:2789 -#: admin/admin.php:2908 -#: admin/admin.php:2946 -#: admin/admin.php:2967 -#: admin/admin.php:3298 -#: admin/admin.php:3596 +#: admin/admin.php:2869 +#: admin/admin.php:2922 +#: admin/admin.php:3072 +#: admin/admin.php:3110 +#: admin/admin.php:3131 +#: admin/admin.php:3462 +#: admin/admin.php:3842 msgid "Unauthorized user." msgstr "Nieautoryzowany użytkownik." #. translators: 1: opening span, 2: opening strong (inline), 3: closing strong, 4: closing span, 5: opening strong (block), 6: closing strong -#: admin/admin.php:2917 +#: admin/admin.php:3081 #, php-format msgid "%1$sGet started by %2$sbuilding your first form%3$s.%4$s%5$sExperience the power of our intuitive AI Form Builder%6$s" msgstr "%1$sZacznij od %2$szbudowania swojego pierwszego formularza%3$s.%4$s%5$sDoświadcz mocy naszego intuicyjnego Kreatora Formularzy AI%6$s" -#: admin/admin.php:2928 +#: admin/admin.php:3092 msgid "SureForms is waiting for you!" msgstr "SureForms czeka na Ciebie!" -#: admin/admin.php:2930 +#: admin/admin.php:3094 msgid "Build My First Form" msgstr "Zbuduj mój pierwszy formularz" -#: admin/admin.php:2931 -#: admin/admin.php:3418 +#: admin/admin.php:3095 +#: admin/admin.php:3650 msgid "Dismiss" msgstr "Odrzuć" @@ -11423,51 +11428,51 @@ msgstr "Zaloguj się" msgid "Register" msgstr "Zarejestruj się" -#: admin/admin.php:3327 +#: admin/admin.php:3491 msgid "Recent Entries" msgstr "Ostatnie wpisy" -#: admin/admin.php:3328 +#: admin/admin.php:3492 msgid "( Last 7 days )" msgstr "( Ostatnie 7 dni )" -#: admin/admin.php:4070 +#: admin/admin.php:4678 msgid "Use Conditional Logic to show only what matters" msgstr "Użyj logiki warunkowej, aby pokazać tylko to, co ważne" -#: admin/admin.php:4071 +#: admin/admin.php:4679 msgid "Split your form into steps to keep it easy" msgstr "Podziel swój formularz na etapy, aby był łatwy." -#: admin/admin.php:4072 +#: admin/admin.php:4680 msgid "Let people upload files directly to your form" msgstr "Pozwól ludziom przesyłać pliki bezpośrednio do Twojego formularza" -#: admin/admin.php:4073 +#: admin/admin.php:4681 msgid "Turn responses into downloadable PDFs automatically" msgstr "Automatycznie przekształcaj odpowiedzi w pliki PDF do pobrania" -#: admin/admin.php:4074 +#: admin/admin.php:4682 msgid "Let users sign with a simple signature field" msgstr "Pozwól użytkownikom podpisać się w prostym polu podpisu" -#: admin/admin.php:4075 +#: admin/admin.php:4683 msgid "Connect your form to other tools using webhooks" msgstr "Połącz swój formularz z innymi narzędziami za pomocą webhooków" -#: admin/admin.php:4076 +#: admin/admin.php:4684 msgid "Use Conversational Forms for a chat-like experience" msgstr "Użyj Formularzy Konwersacyjnych, aby uzyskać doświadczenie podobne do czatu" -#: admin/admin.php:4077 +#: admin/admin.php:4685 msgid "Let users register or log in through your form" msgstr "Pozwól użytkownikom zarejestrować się lub zalogować przez Twój formularz" -#: admin/admin.php:4078 +#: admin/admin.php:4686 msgid "Build forms that create WordPress user accounts" msgstr "Twórz formularze, które tworzą konta użytkowników WordPress" -#: admin/admin.php:4079 +#: admin/admin.php:4687 msgid "Add calculations to auto-total scores or prices" msgstr "Dodaj obliczenia do automatycznego sumowania wyników lub cen" @@ -11666,6 +11671,7 @@ msgstr "Uzyskaj większą kontrolę, szybsze przepływy pracy i głębszą perso msgid "Selected features require %1$s - use code %2$s to get 10% off on any plan." msgstr "Wybrane funkcje wymagają %1$s - użyj kodu %2$s, aby uzyskać 10% zniżki na dowolny plan." +#: admin/admin.php:4060 #: assets/build/dashboard.js:172 msgid "Copied" msgstr "Skopiowano" @@ -11889,7 +11895,7 @@ msgstr "Odkryj SureDash" msgid "Something went wrong. We have logged the error for further investigation" msgstr "Coś poszło nie tak. Zarejestrowaliśmy błąd do dalszego zbadania" -#: inc/field-validation.php:413 +#: inc/field-validation.php:452 msgid "Field is not valid." msgstr "Pole jest nieprawidłowe." @@ -11957,8 +11963,8 @@ msgstr "Miniatura wideo SureForms" msgid "Expected format for emails - email@sureforms.com or John Doe " msgstr "Oczekiwany format dla e-maili - email@sureforms.com lub John Doe " -#: admin/admin.php:1471 -#: admin/admin.php:1472 +#: admin/admin.php:1517 +#: admin/admin.php:1518 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -12173,7 +12179,7 @@ msgstr "Podnieś swoje SEO i wspinaj się w rankingach wyszukiwania bez wysiłku msgid "Boost your website's visibility with smart SEO automation. Optimize content, track keyword performance, and get actionable insights, all inside WordPress." msgstr "Zwiększ widoczność swojej strony internetowej dzięki inteligentnej automatyzacji SEO. Optymalizuj treści, śledź wydajność słów kluczowych i uzyskaj praktyczne wskazówki, wszystko w WordPressie." -#: inc/form-submit.php:129 +#: inc/form-submit.php:174 #: inc/form-views.php:205 #: inc/payments/admin/admin-handler.php:99 #: inc/payments/admin/admin-handler.php:183 @@ -15372,12 +15378,12 @@ msgid "Stripe Settings" msgstr "Ustawienia Stripe" #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version. -#: admin/admin.php:2281 +#: admin/admin.php:2335 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version." msgstr "SureForms %1$s wymaga co najmniej %2$s %3$s do prawidłowego działania. Proszę zaktualizować do najnowszej wersji." -#: admin/admin.php:2294 +#: admin/admin.php:2348 msgid "Update Now" msgstr "Zaktualizuj teraz" @@ -15425,8 +15431,8 @@ msgstr "Pozycja znaku waluty" msgid "Select the position of the currency symbol relative to the amount." msgstr "Wybierz pozycję symbolu waluty względem kwoty." -#: admin/admin.php:1414 -#: admin/admin.php:1415 +#: admin/admin.php:1460 +#: admin/admin.php:1461 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -15440,41 +15446,41 @@ msgstr "Wybierz pozycję symbolu waluty względem kwoty." msgid "Learn" msgstr "Ucz się" -#: admin/admin.php:2635 +#: admin/admin.php:2689 msgid "Amazing! SureForms is powering your forms and submissions - let's keep growing together!" msgstr "Niesamowite! SureForms napędza Twoje formularze i zgłoszenia - rozwijajmy się razem!" -#: admin/admin.php:2636 +#: admin/admin.php:2690 msgid "If SureForms has been helpful, would you mind taking a moment to leave a 5-star review on WordPress.org?" msgstr "Jeśli SureForms okazał się pomocny, czy mógłbyś poświęcić chwilę na pozostawienie 5-gwiazdkowej recenzji na WordPress.org?" -#: admin/admin.php:2647 -#: admin/admin.php:2711 +#: admin/admin.php:2701 +#: admin/admin.php:2765 msgid "Maybe later" msgstr "Może później" -#: admin/admin.php:2653 +#: admin/admin.php:2707 msgid "I already did" msgstr "Już to zrobiłem" -#: admin/admin.php:2702 +#: admin/admin.php:2756 msgid "SureForms is ready to power your forms — explore what's possible!" msgstr "SureForms jest gotowy, aby zasilić Twoje formularze — odkryj, co jest możliwe!" -#: admin/admin.php:2703 +#: admin/admin.php:2757 msgid "Manage your forms, track submissions, and discover features like AI Form Builder, payment integrations, and more from the SureForms dashboard." msgstr "Zarządzaj swoimi formularzami, śledź zgłoszenia i odkrywaj funkcje takie jak AI Form Builder, integracje płatności i inne z poziomu pulpitu SureForms." -#: admin/admin.php:2706 +#: admin/admin.php:2760 msgid "Go to Dashboard" msgstr "Przejdź do pulpitu nawigacyjnego" -#: admin/admin.php:2717 +#: admin/admin.php:2771 msgid "I already know" msgstr "Już wiem" -#: admin/admin.php:2833 -#: admin/admin.php:3608 +#: admin/admin.php:2981 +#: admin/admin.php:3854 msgid "Invalid parameters." msgstr "Nieprawidłowe parametry." @@ -15858,10 +15864,10 @@ msgid "This form is not yet available. Check back after the scheduled start time msgstr "Ten formularz nie jest jeszcze dostępny. Sprawdź ponownie po zaplanowanym czasie rozpoczęcia." #: inc/admin/html-form-detector.php:268 -#: inc/form-submit.php:197 -#: inc/form-submit.php:503 -#: inc/form-submit.php:548 -#: inc/form-submit.php:1149 +#: inc/form-submit.php:247 +#: inc/form-submit.php:553 +#: inc/form-submit.php:598 +#: inc/form-submit.php:1257 #: inc/migrator/bootstrap.php:357 #: inc/payments/front-end.php:79 #: inc/payments/front-end.php:265 @@ -15884,48 +15890,48 @@ msgstr "Ten formularz nie jest jeszcze dostępny. Sprawdź ponownie po zaplanowa msgid "Security verification failed. Please refresh the page and try again." msgstr "Weryfikacja bezpieczeństwa nie powiodła się. Odśwież stronę i spróbuj ponownie." -#: inc/form-submit.php:582 +#: inc/form-submit.php:632 msgid "Form data was not found." msgstr "Dane formularza nie zostały znalezione." -#: inc/form-submit.php:336 +#: inc/form-submit.php:386 msgid "Form ID is missing." msgstr "Brakuje identyfikatora formularza." -#: inc/form-submit.php:213 +#: inc/form-submit.php:263 msgid "Sorry, you do not have permission to access this resource." msgstr "Przepraszamy, nie masz uprawnień do dostępu do tego zasobu." -#: inc/form-submit.php:368 +#: inc/form-submit.php:418 msgid "You do not have permission to submit this form." msgstr "Nie masz uprawnień do przesłania tego formularza." -#: inc/form-submit.php:378 +#: inc/form-submit.php:428 msgid "This form is no longer available." msgstr "Ten formularz nie jest już dostępny." -#: inc/form-submit.php:396 +#: inc/form-submit.php:446 msgid "Please check the form for errors." msgstr "Proszę sprawdzić formularz pod kątem błędów." -#: inc/form-submit.php:523 -#: inc/form-submit.php:564 +#: inc/form-submit.php:573 +#: inc/form-submit.php:614 msgid "Your submission was flagged as spam. Please try again." msgstr "Twoje zgłoszenie zostało oznaczone jako spam. Proszę spróbuj ponownie." -#: inc/form-submit.php:818 +#: inc/form-submit.php:868 msgid "Unable to submit form. Please try again." msgstr "Nie można przesłać formularza. Proszę spróbować ponownie." -#: inc/form-submit.php:1070 +#: inc/form-submit.php:1137 msgid "No SMTP plugin detected. Please configure an SMTP plugin to enable email sending." msgstr "Nie wykryto wtyczki SMTP. Proszę skonfigurować wtyczkę SMTP, aby umożliwić wysyłanie e-maili." -#: inc/form-submit.php:1071 +#: inc/form-submit.php:1138 msgid "Email sending failed for an unknown reason." msgstr "Wysyłanie e-maila nie powiodło się z nieznanego powodu." -#: inc/form-submit.php:1124 +#: inc/form-submit.php:1201 msgid "No emails were sent." msgstr "Nie wysłano żadnych e-maili." @@ -16438,7 +16444,7 @@ msgid "Duplicate form?" msgstr "Powielić formularz?" #: assets/build/formSubmit.js:2 -#: assets/js/unminified/form-submit.js:917 +#: assets/js/unminified/form-submit.js:938 msgid "An error occurred while submitting your form. Please try again." msgstr "Wystąpił błąd podczas przesyłania formularza. Proszę spróbować ponownie." @@ -16815,28 +16821,28 @@ msgstr "Tajny klucz webhooka nie jest skonfigurowany." msgid "Invalid webhook signature." msgstr "Nieprawidłowy podpis webhooka." -#: admin/admin.php:1253 -#: admin/admin.php:1851 +#: admin/admin.php:1299 +#: admin/admin.php:1905 #: assets/build/formEditor.js:172 msgid "Quizzes" msgstr "Quizy" -#: admin/admin.php:1252 +#: admin/admin.php:1298 msgid "Quiz Entries" msgstr "Wpisy do quizu" -#: admin/admin.php:1255 -#: admin/admin.php:1288 -#: admin/admin.php:1321 +#: admin/admin.php:1301 +#: admin/admin.php:1334 +#: admin/admin.php:1367 #: assets/build/settings.js:172 msgid "New" msgstr "Nowy" -#: inc/form-submit.php:1158 +#: inc/form-submit.php:1266 msgid "Invalid form." msgstr "Nieprawidłowy formularz." -#: inc/form-submit.php:1163 +#: inc/form-submit.php:1271 msgid "Too many requests. Please try again shortly." msgstr "Zbyt wiele żądań. Proszę spróbować ponownie za chwilę." @@ -17345,9 +17351,9 @@ msgstr "Idealne do edukacji, szkoleń i zabawnych ciekawostek" msgid "Select this to create a quiz with scored questions and graded results." msgstr "Wybierz to, aby utworzyć quiz z punktowanymi pytaniami i ocenianymi wynikami." -#: admin/admin.php:1285 -#: admin/admin.php:1286 -#: admin/admin.php:1856 +#: admin/admin.php:1331 +#: admin/admin.php:1332 +#: admin/admin.php:1910 msgid "Survey Reports" msgstr "Raporty z ankiet" @@ -17753,7 +17759,7 @@ msgid "Error creating SureForms Form." msgstr "Błąd podczas tworzenia formularza SureForms." #. translators: %s represents the minimum number of characters required -#: inc/field-validation.php:426 +#: inc/field-validation.php:465 #: inc/translatable.php:94 #, php-format msgid "Please enter at least %s characters." @@ -17911,9 +17917,9 @@ msgstr "Odpowiedź AI była pusta. Proszę dopracować swój prompt i spróbowa msgid "Unable to build form fields from the AI response." msgstr "Nie można utworzyć pól formularza z odpowiedzi AI." -#: admin/admin.php:1318 -#: admin/admin.php:1319 -#: admin/admin.php:1861 +#: admin/admin.php:1364 +#: admin/admin.php:1365 +#: admin/admin.php:1915 msgid "Partial Entries" msgstr "Częściowe wpisy" @@ -18784,23 +18790,23 @@ msgstr "Nie można zweryfikować kwoty płatności dla tego formularza. Proszę msgid "Cancellation is not supported for this payment gateway." msgstr "Anulowanie nie jest obsługiwane dla tej bramki płatności." -#: admin/admin.php:3039 +#: admin/admin.php:3203 msgid "SureForms AI Quick Draft" msgstr "SureForms AI Szybki Szkic" -#: admin/admin.php:3058 +#: admin/admin.php:3222 msgid "Describe the form and let SureForms AI generate it for you." msgstr "Opisz formularz, a SureForms AI wygeneruje go dla Ciebie." -#: admin/admin.php:3061 +#: admin/admin.php:3225 msgid "Describe your form" msgstr "Opisz swój formularz" -#: admin/admin.php:3068 +#: admin/admin.php:3232 msgid "Example: Create a contact form with name, email, phone, and message fields." msgstr "Przykład: Utwórz formularz kontaktowy z polami na imię, email, telefon i wiadomość." -#: admin/admin.php:3109 +#: admin/admin.php:3273 msgid "Redirecting..." msgstr "Przekierowywanie..." @@ -18813,14 +18819,14 @@ msgid "The prompt is too long. Please shorten it and try again." msgstr "Podpowiedź jest zbyt długa. Skróć ją i spróbuj ponownie." #. translators: %s: maximum characters allowed before the @ symbol. -#: inc/field-validation.php:448 +#: inc/field-validation.php:487 #: inc/translatable.php:97 #, php-format msgid "The part before @ may not exceed %s characters." msgstr "Część przed @ nie może przekraczać %s znaków." #. translators: %s: maximum characters allowed after the @ symbol. -#: inc/field-validation.php:454 +#: inc/field-validation.php:493 #: inc/translatable.php:100 #, php-format msgid "The part after @ may not exceed %s characters." @@ -18907,74 +18913,74 @@ msgstr "Przepraszamy, nie masz uprawnień do renderowania tego formularza." msgid "This form requires a payment. Please complete the payment and submit again." msgstr "Ten formularz wymaga płatności. Proszę dokończyć płatność i przesłać ponownie." -#: admin/admin.php:552 +#: admin/admin.php:598 msgid "You are not allowed to update this prompt." msgstr "Nie masz uprawnień do aktualizacji tego polecenia." -#: admin/admin.php:595 +#: admin/admin.php:641 msgid "Finish setting up your form" msgstr "Dokończ konfigurowanie formularza" -#: admin/admin.php:627 +#: admin/admin.php:673 msgid "Review or edit your form" msgstr "Przejrzyj lub edytuj formularz" -#: admin/admin.php:628 -#: admin/admin.php:3907 +#: admin/admin.php:674 +#: admin/admin.php:4515 msgid "Edit form" msgstr "Edytuj formularz" -#: admin/admin.php:633 +#: admin/admin.php:679 msgid "Personalize the Thank You message" msgstr "Spersonalizuj wiadomość podziękowania" -#: admin/admin.php:634 +#: admin/admin.php:680 msgid "Edit message" msgstr "Edytuj wiadomość" -#: admin/admin.php:639 +#: admin/admin.php:685 msgid "Choose who gets notified of new replies" msgstr "Wybierz, kto zostanie powiadomiony o nowych odpowiedziach" -#: admin/admin.php:640 +#: admin/admin.php:686 msgid "Set up email" msgstr "Skonfiguruj e-mail" -#: admin/admin.php:648 +#: admin/admin.php:694 msgid "your form" msgstr "twój formularz" #. translators: %s: form title. -#: admin/admin.php:651 +#: admin/admin.php:697 #, php-format msgid "Finish setting up %s" msgstr "Dokończ konfigurowanie %s" #. translators: %s: form title. -#: admin/admin.php:659 +#: admin/admin.php:705 #, php-format msgid "View %s (opens in a new tab)" msgstr "Zobacz %s (otwiera się w nowej karcie)" -#: admin/admin.php:664 +#: admin/admin.php:710 msgid "Customize your form to get it ready for real submissions:" msgstr "Dostosuj swój formularz, aby był gotowy do rzeczywistych zgłoszeń:" -#: admin/admin.php:3896 +#: admin/admin.php:4504 msgid "We’ve already created this form for you. Finish customising it so it’s ready to collect real submissions." msgstr "Już stworzyliśmy ten formularz dla Ciebie. Dokończ jego dostosowywanie, aby był gotowy do zbierania rzeczywistych zgłoszeń." #. translators: %s: form name. -#: admin/admin.php:3901 +#: admin/admin.php:4509 #, php-format msgid "Finish setting up “%s”" msgstr "Dokończ konfigurowanie „%s”" -#: admin/admin.php:3914 +#: admin/admin.php:4522 msgid "Edit the Thank You message" msgstr "Edytuj wiadomość podziękowania" -#: admin/admin.php:3920 +#: admin/admin.php:4528 msgid "Set where replies go" msgstr "Ustaw, gdzie mają trafiać odpowiedzi" @@ -19002,123 +19008,90 @@ msgstr "Proszę wybrać plik graficzny." msgid "This form could not be submitted. Please refresh the page and try again." msgstr "Nie można było przesłać tego formularza. Proszę odświeżyć stronę i spróbować ponownie." -#: admin/admin.php:2341 -#: admin/admin.php:2430 +#: admin/admin.php:2395 +#: admin/admin.php:2484 msgid "Your SureForms database is up to date. New form entries will be saved as usual." msgstr "Twoja baza danych SureForms jest aktualna. Nowe wpisy formularzy będą zapisywane jak zwykle." -#: admin/admin.php:2355 -#: admin/admin.php:2439 +#: admin/admin.php:2409 +#: admin/admin.php:2493 #: inc/rest-api.php:1447 msgid "SureForms could not finish updating the database. Your hosting may not allow SureForms to create database tables — please contact your hosting provider or SureForms support." msgstr "SureForms nie mogło zakończyć aktualizacji bazy danych. Twój hosting może nie pozwalać SureForms na tworzenie tabel w bazie danych — skontaktuj się z dostawcą hostingu lub wsparciem SureForms." -#: admin/admin.php:2358 +#: admin/admin.php:2412 msgid "Contact support" msgstr "Skontaktuj się z pomocą techniczną" -#: admin/admin.php:2378 +#: admin/admin.php:2432 msgid "Database update needed" msgstr "Wymagana aktualizacja bazy danych" -#: admin/admin.php:2384 +#: admin/admin.php:2438 msgid "Fix now" msgstr "Napraw teraz" -#: admin/admin.php:2453 +#: admin/admin.php:2507 msgid "SureForms — database update needed" msgstr "SureForms — wymagana aktualizacja bazy danych" -#: admin/admin.php:2458 +#: admin/admin.php:2512 msgid "Update database" msgstr "Zaktualizuj bazę danych" -#: admin/admin.php:2478 +#: admin/admin.php:2532 msgid "You do not have permission to update the database." msgstr "Nie masz uprawnień do aktualizacji bazy danych." -#: admin/admin.php:3437 +#: admin/admin.php:3669 msgid "You do not have permission to do this." msgstr "Nie masz uprawnień do wykonania tej czynności." -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:3507 -msgid "%d form submission in a row could not be completed." -msgid_plural "%d form submissions in a row could not be completed." -msgstr[0] "%d przesłanie formularza z rzędu nie mogło zostać ukończone." -msgstr[1] "" - -#: admin/admin.php:3515 -msgid "Visitors may be unable to reach you, and those entries were not saved." -msgstr "Odwiedzający mogą nie być w stanie się z Tobą skontaktować, a te wpisy nie zostały zapisane." - -#: admin/admin.php:3525 -msgid "Form submissions are completing normally." -msgstr "Przesyłanie formularzy przebiega normalnie." - -#: admin/admin.php:3539 -msgid "No caching plugin that needs configuring was found." -msgstr "Nie znaleziono wtyczki buforującej, która wymaga konfiguracji." - #. translators: %s: caching plugin name. -#: admin/admin.php:3551 +#: admin/admin.php:4209 msgid "%s may interfere with your forms." msgstr "%s może zakłócać działanie Twoich formularzy." -#: admin/admin.php:3554 -msgid "Caching and JavaScript optimisation can serve a stale copy of your form or load its scripts out of order." -msgstr "Buforowanie i optymalizacja JavaScript mogą dostarczać nieaktualną kopię formularza lub ładować jego skrypty w niewłaściwej kolejności." - -#: admin/admin.php:3555 +#: admin/admin.php:4185 +#: admin/admin.php:4213 msgid "Help Me Fix" msgstr "Pomóż mi naprawić" -#: admin/admin.php:3650 +#: admin/admin.php:4258 msgid "SureForms found your form entries stored under a different database table prefix. Reconnecting them takes a moment, and your existing entries will be kept." msgstr "SureForms znalazło Twoje wpisy formularzy przechowywane pod innym prefiksem tabeli bazy danych. Ponowne połączenie zajmuje chwilę, a Twoje istniejące wpisy zostaną zachowane." -#: admin/admin.php:3653 +#: admin/admin.php:4261 msgid "SureForms needs to update your database before it can save new form entries. This only takes a moment and will not change your forms or existing content. Entries submitted before now cannot be recovered from here." msgstr "SureForms musi zaktualizować Twoją bazę danych, zanim będzie mogło zapisywać nowe wpisy formularzy. To zajmuje tylko chwilę i nie zmieni Twoich formularzy ani istniejącej zawartości. Wpisy przesłane przed tym momentem nie mogą być odzyskane stąd." #. translators: %s: site host. -#: admin/admin.php:4265 +#: admin/admin.php:5032 msgid "SureForms: form submissions are failing on %s" msgstr "SureForms: przesyłanie formularzy nie powiodło się na %s" -#: admin/admin.php:4274 +#: admin/admin.php:4990 msgid "Debug log: no entries recorded." msgstr "Dziennik debugowania: brak zapisanych wpisów." #. translators: 1: entries shown, 2: entries recorded. -#: admin/admin.php:4278 +#: admin/admin.php:4995 msgid "Debug log (most recent %1$d of %2$d entries)" msgstr "Dziennik debugowania (najnowsze %1$d z %2$d wpisów)" -#: admin/admin.php:4288 -msgid "Older entries were left out to keep this email within the length a mail client accepts. The full log can be downloaded from SureForms → Settings → General." -msgstr "Starsze wpisy zostały pominięte, aby ten e-mail mieścił się w długości akceptowanej przez klienta poczty. Pełny dziennik można pobrać z SureForms → Ustawienia → Ogólne." - -#: admin/admin.php:4318 +#: admin/admin.php:5158 msgid "Hello SureForms support," msgstr "Witaj wsparcie SureForms," -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:4322 -msgid "SureForms has recorded %d form submission in a row that could not be completed." -msgid_plural "SureForms has recorded %d form submissions in a row that could not be completed." -msgstr[0] "SureForms zarejestrowało %d przesłanie formularza z rzędu, które nie mogło zostać ukończone." -msgstr[1] "" - -#: admin/admin.php:4332 +#: admin/admin.php:5182 msgid "Site details" msgstr "Szczegóły strony" -#: admin/admin.php:4335 +#: admin/admin.php:5185 msgid "not active" msgstr "nieaktywny" -#: admin/admin.php:4338 +#: admin/admin.php:5188 msgid "none detected" msgstr "nie wykryto" @@ -19126,7 +19099,7 @@ msgstr "nie wykryto" msgid "No form submission failures have been recorded." msgstr "Nie zarejestrowano żadnych niepowodzeń przesyłania formularzy." -#: inc/form-submit.php:118 +#: inc/form-submit.php:163 msgid "Not found." msgstr "Nie znaleziono." @@ -19211,6 +19184,193 @@ msgstr "Widoki formularzy i konwersja" msgid "Logs" msgstr "Dzienniki" +#: admin/admin.php:2831 +msgid "Previous notice" +msgstr "Poprzednie powiadomienie" + +#: admin/admin.php:2832 +msgid "Next notice" +msgstr "Następne powiadomienie" + +#. translators: 1: current position, 2: total notices. +#: admin/admin.php:2834 +msgid "%1$d of %2$d" +msgstr "%1$d z %2$d" + +#: admin/admin.php:2891 +msgid "Nothing to report." +msgstr "Brak raportu." + +#: admin/admin.php:4057 +#: assets/build/dashboard.js:172 +msgid "Details" +msgstr "Szczegóły" + +#: admin/admin.php:4058 +msgid "What we recorded about this problem. Copy it into your support request so we can start from the cause rather than a description of it." +msgstr "Co zarejestrowaliśmy na temat tego problemu. Skopiuj to do swojego zgłoszenia do wsparcia, abyśmy mogli zacząć od przyczyny, a nie jej opisu." + +#: admin/admin.php:4059 +#: assets/build/dashboard.js:172 +msgid "Copy details" +msgstr "Skopiuj szczegóły" + +#: admin/admin.php:4068 +msgid "Copy the details first, so you have them to paste." +msgstr "Najpierw skopiuj szczegóły, aby móc je wkleić." + +#: admin/admin.php:4072 +msgid "Copied. Contact Support is now available." +msgstr "Skopiowano. Kontakt z pomocą techniczną jest teraz dostępny." + +#: admin/admin.php:4073 +msgid "Your browser would not let us copy. Select the text above and copy it by hand." +msgstr "Twoja przeglądarka nie pozwoliła nam skopiować. Wybierz powyższy tekst i skopiuj go ręcznie." + +#: admin/admin.php:4076 +msgid "Recorded diagnostics" +msgstr "Zarejestrowane diagnostyki" + +#: admin/admin.php:4080 +msgid "Collecting the details…" +msgstr "Zbieranie szczegółów…" + +#: admin/admin.php:4081 +msgid "We could not collect the details. Contact Support and describe what happened, and we will take it from there." +msgstr "Nie udało się zebrać szczegółów. Skontaktuj się z pomocą techniczną i opisz, co się stało, a my zajmiemy się resztą." + +#. translators: %s: form title. +#: admin/admin.php:4108 +msgid "We noticed a form submission failure on %s." +msgstr "Zauważyliśmy błąd przesyłania formularza na %s." + +#: admin/admin.php:4109 +msgid "We noticed a form submission failure." +msgstr "Zauważyliśmy błąd przesyłania formularza." + +#: admin/admin.php:4110 +msgid "Visitors may not be able to reach you, and their entries were not saved." +msgstr "Odwiedzający mogą nie być w stanie się z Tobą skontaktować, a ich wpisy nie zostały zapisane." + +#. translators: %s: form title. +#: admin/admin.php:4115 +msgid "We noticed a notification failure on %s." +msgstr "Zauważyliśmy błąd powiadomienia na %s." + +#: admin/admin.php:4116 +msgid "We noticed a notification failure." +msgstr "Zauważyliśmy błąd powiadomienia." + +#: admin/admin.php:4117 +msgid "The entry was saved, but we could not send the email about it. New entries may be coming in without you knowing." +msgstr "Wpis został zapisany, ale nie udało się wysłać o nim e-maila. Nowe wpisy mogą przychodzić bez Twojej wiedzy." + +#. translators: %s: form title. +#: admin/admin.php:4132 +msgid "We noticed an integration failure on %s." +msgstr "Zauważyliśmy błąd integracji na %s." + +#: admin/admin.php:4133 +msgid "We noticed an integration failure." +msgstr "Zauważyliśmy błąd integracji." + +#: admin/admin.php:4134 +msgid "The entry was saved, but we could not send it to a connected service." +msgstr "Wpis został zapisany, ale nie udało się go wysłać do połączonej usługi." + +#: admin/admin.php:4158 +msgid "View details" +msgstr "Zobacz szczegóły" + +#: admin/admin.php:4212 +msgid "Caching can show visitors an old copy of your form, or load its scripts in the wrong order." +msgstr "Buforowanie może pokazywać odwiedzającym starą kopię formularza lub ładować jego skrypty w niewłaściwej kolejności." + +#: admin/admin.php:5005 +msgid "Older entries were left out to keep this excerpt readable. The full log can be downloaded from SureForms → Settings → General." +msgstr "Starsze wpisy zostały pominięte, aby ten fragment był czytelny. Pełny dziennik można pobrać z SureForms → Ustawienia → Ogólne." + +#. translators: %s: site host. +#: admin/admin.php:5034 +msgid "SureForms has recorded form submissions on %s that could not be completed." +msgstr "SureForms zarejestrował przesyłanie formularzy na %s, które nie mogły zostać ukończone." + +#. translators: %s: site host. +#: admin/admin.php:5038 +msgid "SureForms: notification emails are not being sent on %s" +msgstr "SureForms: e-maile z powiadomieniami nie są wysyłane na %s" + +#. translators: %s: site host. +#: admin/admin.php:5040 +msgid "SureForms saved entries on %s but could not send the notification emails for them." +msgstr "SureForms zapisał wpisy na %s, ale nie udało się wysłać dla nich e-maili z powiadomieniami." + +#. translators: %s: site host. +#: admin/admin.php:5044 +msgid "SureForms: an integration is not receiving entries on %s" +msgstr "SureForms: integracja nie otrzymuje wpisów na %s" + +#. translators: %s: site host. +#: admin/admin.php:5046 +msgid "SureForms saved entries on %s but could not pass them to a connected service." +msgstr "SureForms zapisał wpisy na %s, ale nie udało się ich przekazać do połączonej usługi." + +#. translators: %s: site host. +#: admin/admin.php:5056 +msgid "SureForms: a problem with the forms on %s" +msgstr "SureForms: problem z formularzami na %s" + +#. translators: %s: site host. +#: admin/admin.php:5058 +msgid "SureForms has recorded a problem with the forms on %s." +msgstr "SureForms zarejestrował problem z formularzami na %s." + +#. translators: %d: number of failed submissions. +#: admin/admin.php:5083 +msgid "SureForms has recorded %d form submission that could not be completed." +msgid_plural "SureForms has recorded %d form submissions that could not be completed." +msgstr[0] "SureForms zarejestrował %d przesyłanie formularza, które nie mogło zostać ukończone." +msgstr[1] "" + +#. translators: %d: number of failed notifications. +#: admin/admin.php:5095 +msgid "SureForms saved %d entry but could not send the notification email for it." +msgid_plural "SureForms saved %d entries but could not send the notification emails for them." +msgstr[0] "SureForms zapisał %d wpis, ale nie udało się wysłać dla niego e-maila z powiadomieniem." +msgstr[1] "" + +#. translators: %d: number of failed integration hand-offs. +#: admin/admin.php:5107 +msgid "SureForms saved %d entry but could not pass it to a connected service." +msgid_plural "SureForms saved %d entries but could not pass them to a connected service." +msgstr[0] "SureForms zapisał %d wpis, ale nie udało się go przekazać do połączonej usługi." +msgstr[1] "" + +#. translators: %d: number of recorded problems. +#: admin/admin.php:5119 +msgid "SureForms has recorded %d problem with the forms on this site." +msgid_plural "SureForms has recorded %d problems with the forms on this site." +msgstr[0] "SureForms zarejestrował %d problem z formularzami na tej stronie." +msgstr[1] "" + +#. translators: %s: form title. +#: admin/admin.php:5169 +msgid "Form: %s" +msgstr "Formularz: %s" + +#: admin/admin.php:5189 +msgid "none recorded" +msgstr "brak zarejestrowanych" + +#. translators: %s: date and time of the previous report, in the site's timezone. +#: admin/admin.php:5212 +msgid "Previously reported: %s" +msgstr "Zgłoszono wcześniej: %s" + +#: assets/build/settings.js:172 +msgid "Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures." +msgstr "Widoki i przesyłania przez osoby, które mogą edytować stronę, są zwykle pomijane, więc testowanie własnych formularzy nie zmienia tych danych." + #: inc/post-types.php:265 msgctxt "post type general name" msgid "Forms" diff --git a/languages/sureforms-pt_PT-51635fe6489fc8288d603fe596c755ca.json b/languages/sureforms-pt_PT-51635fe6489fc8288d603fe596c755ca.json index f75ffad2a..4910478a4 100644 --- a/languages/sureforms-pt_PT-51635fe6489fc8288d603fe596c755ca.json +++ b/languages/sureforms-pt_PT-51635fe6489fc8288d603fe596c755ca.json @@ -1 +1 @@ -{"translation-revision-date":"2025-01-02T08:44:42+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Painel de Controle"],"Settings":["Configura\u00e7\u00f5es"],"Entries":["Entradas"],"Status":["Status"],"Form":["Formul\u00e1rio"],"Activated":["Ativado"],"Activate":["Ativar"],"Address":["Endere\u00e7o"],"Checkbox":["Caixa de sele\u00e7\u00e3o"],"Dropdown":["Menu suspenso"],"Email":["Email"],"Number":["N\u00famero"],"Phone":["Telefone"],"Textarea":["\u00c1rea de texto"],"Monday":["Segunda-feira"],"Forms":["Formul\u00e1rios"],"New Form Submission - %s":["Nova Submiss\u00e3o de Formul\u00e1rio - %s"],"GitHub":["GitHub"],"(no title)":["(sem t\u00edtulo)"],"General":["Geral"],"No tags available":["Sem etiquetas dispon\u00edveis"],"Back":["Voltar"],"Generic tags":["Etiquetas gen\u00e9ricas"],"Other":["Outro"],"Confirm":["Confirmar"],"Cancel":["Cancelar"],"Install":["Instalar"],"Plugin Installation failed, Please try again later.":["A instala\u00e7\u00e3o do plugin falhou, por favor, tente novamente mais tarde."],"Plugin activation failed, Please try again later.":["A ativa\u00e7\u00e3o do plugin falhou, por favor, tente novamente mais tarde."],"Integrations":["Integra\u00e7\u00f5es"],"What's New?":["O que h\u00e1 de novo?"],"Core":["N\u00facleo"],"Unlicensed":["Sem licen\u00e7a"],"Connecting\u2026":["Conectando\u2026"],"Install & Activate":["Instalar e Ativar"],"Compliance Settings":["Configura\u00e7\u00f5es de Conformidade"],"Enable GDPR Compliance":["Ativar conformidade com o GDPR"],"Never store entry data after form submission":["Nunca armazene os dados de entrada ap\u00f3s o envio do formul\u00e1rio"],"When enabled this form will never store Entries.":["Quando ativado, este formul\u00e1rio nunca armazenar\u00e1 entradas."],"Automatically delete entries":["Excluir entradas automaticamente"],"When enabled this form will automatically delete entries after a certain period of time.":["Quando ativado, este formul\u00e1rio excluir\u00e1 automaticamente as entradas ap\u00f3s um determinado per\u00edodo de tempo."],"Entries older than the days set will be deleted automatically.":["As entradas mais antigas do que os dias definidos ser\u00e3o exclu\u00eddas automaticamente."],"Visual":["Visual"],"HTML":["HTML"],"All Data":["Todos os dados"],"Add Shortcode":["Adicionar Shortcode"],"Form input tags":["Etiquetas de entrada de formul\u00e1rio"],"Comma separated values are also accepted.":["Valores separados por v\u00edrgula tamb\u00e9m s\u00e3o aceitos."],"Email Notification":["Notifica\u00e7\u00e3o por Email"],"Name":["Nome"],"Send Email To":["Enviar Email Para"],"Subject":["Assunto"],"CC":["CC"],"BCC":["Cco"],"Reply To":["Responder a"],"Add Key":["Adicionar Chave"],"Add Value":["Adicionar Valor"],"Add":["Adicionar"],"Confirmation Message":["Mensagem de Confirma\u00e7\u00e3o"],"After Form Submission":["Ap\u00f3s o Envio do Formul\u00e1rio"],"Hide Form":["Ocultar Formul\u00e1rio"],"Reset Form":["Redefinir Formul\u00e1rio"],"Custom URL":["URL personalizada"],"Add Query Parameters":["Adicionar Par\u00e2metros de Consulta"],"Select if you want to add key-value pairs for form fields to include in query parameters":["Selecione se deseja adicionar pares chave-valor para campos de formul\u00e1rio a serem inclu\u00eddos nos par\u00e2metros de consulta"],"Query Parameters":["Par\u00e2metros de Consulta"],"Success Message":["Mensagem de Sucesso"],"Redirect":["Redirecionar"],"Redirect to":["Redirecionar para"],"Page":["P\u00e1gina"],"Form Confirmation":["Confirma\u00e7\u00e3o de Formul\u00e1rio"],"Confirmation Type":["Tipo de Confirma\u00e7\u00e3o"],"Clear":["Limpar"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Invis\u00edvel"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Valida\u00e7\u00f5es"],"Spam Protection":["Prote\u00e7\u00e3o contra Spam"],"Email Summaries":["Resumos de Email"],"Tuesday":["ter\u00e7a-feira"],"Wednesday":["Quarta-feira"],"Thursday":["Quinta-feira"],"Friday":["Sexta-feira"],"Saturday":["S\u00e1bado"],"Sunday":["Domingo"],"Test Email":["Email de teste"],"Schedule Reports":["Agendar Relat\u00f3rios"],"IP Logging":["Registro de IP"],"If this option is turned on, the user's IP address will be saved with the form data":["Se esta op\u00e7\u00e3o estiver ativada, o endere\u00e7o IP do usu\u00e1rio ser\u00e1 salvo com os dados do formul\u00e1rio"],"Confirmation Email Mismatch Message":["Mensagem de Incompatibilidade de E-mail de Confirma\u00e7\u00e3o"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s representa o valor m\u00ednimo de entrada. Por exemplo: \"O valor m\u00ednimo \u00e9 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s representa o valor m\u00e1ximo de entrada. Por exemplo: \"O valor m\u00e1ximo \u00e9 100.\""],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s representa as sele\u00e7\u00f5es m\u00ednimas necess\u00e1rias. Por exemplo: \"S\u00e3o necess\u00e1rias no m\u00ednimo 2 sele\u00e7\u00f5es.\""],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s representa o n\u00famero m\u00e1ximo de sele\u00e7\u00f5es permitidas. Por exemplo: \"S\u00e3o permitidas no m\u00e1ximo 4 sele\u00e7\u00f5es.\""],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s representa as escolhas m\u00ednimas necess\u00e1rias. Por exemplo: \u201c\u00c9 necess\u00e1ria no m\u00ednimo 1 sele\u00e7\u00e3o.\u201d"],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s representa o n\u00famero m\u00e1ximo de escolhas permitidas. Por exemplo: \"S\u00e3o permitidas no m\u00e1ximo 3 sele\u00e7\u00f5es.\""]," Error Message":["Mensagem de Erro"],"Auto":["Carro"],"Light":["Luz"],"Dark":["Escuro"],"Turnstile":["Catraca"],"Honeypot":["Pote de mel"],"Get Keys":["Obter Chaves"],"Documentation":["Documenta\u00e7\u00e3o"],"Site Key":["Chave do Site"],"Secret Key":["Chave Secreta"],"Cloudflare Turnstile":["Cloudflare Turnstile"],"Appearance Mode":["Modo de Apar\u00eancia"],"Enable Honeypot Security":["Ativar Seguran\u00e7a Honeypot"],"Enable Honeypot Security for better spam protection":["Ative a Seguran\u00e7a Honeypot para melhor prote\u00e7\u00e3o contra spam"],"Text":["Texto"],"OttoKit":["OttoKit"],"Connect with OttoKit":["Conectar com OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["O endere\u00e7o de 'Email de Remetente' atual n\u00e3o corresponde ao nome de dom\u00ednio do seu site (%1$s). Isso pode fazer com que seus e-mails de notifica\u00e7\u00e3o sejam bloqueados ou marcados como spam. Alternativamente, tente usar um Endere\u00e7o de Remetente que corresponda ao dom\u00ednio do seu site (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["O endere\u00e7o de 'Email de Remetente' atual n\u00e3o corresponde ao nome de dom\u00ednio do seu site (%s). Isso pode fazer com que seus e-mails de notifica\u00e7\u00e3o sejam bloqueados ou marcados como spam."],"We strongly recommend that you install the free ":["Recomendamos fortemente que voc\u00ea instale o gratuito"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["plugin! O Assistente de Configura\u00e7\u00e3o facilita a corre\u00e7\u00e3o dos seus e-mails."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Alternativamente, tente usar um endere\u00e7o de remetente que corresponda ao dom\u00ednio do seu site (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Por favor, insira um endere\u00e7o de e-mail v\u00e1lido. Suas notifica\u00e7\u00f5es n\u00e3o ser\u00e3o enviadas se o campo n\u00e3o for preenchido corretamente."],"From Name":["De Nome"],"From Email":["De Email"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["O endere\u00e7o de 'Email de Remetente' atual pode n\u00e3o corresponder ao nome de dom\u00ednio do seu site (%1$s). Isso pode fazer com que seus e-mails de notifica\u00e7\u00e3o sejam bloqueados ou marcados como spam. Alternativamente, tente usar um Endere\u00e7o de Remetente que corresponda ao dom\u00ednio do seu site (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["O endere\u00e7o de 'Email de Remetente' atual pode n\u00e3o corresponder ao nome de dom\u00ednio do seu site (%s). Isso pode fazer com que seus e-mails de notifica\u00e7\u00e3o sejam bloqueados ou marcados como spam."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Pronto para ir al\u00e9m do plano gratuito?"],"Upgrade now":["Atualize agora"],"and unlock the full power of SureForms!":["e desbloqueie todo o poder do SureForms!"],"Upgrade SureForms":["Atualizar SureForms"],"Upgrade Now":["Atualize agora"],"Entries older than the selected days will be deleted.":["As entradas mais antigas que os dias selecionados ser\u00e3o exclu\u00eddas."],"Entries Time Period":["Per\u00edodo de Tempo das Entradas"],"Notifications can use only one From Email so please enter a single address.":["As notifica\u00e7\u00f5es podem usar apenas um \u00fanico endere\u00e7o de e-mail de remetente, portanto, insira um \u00fanico endere\u00e7o."],"Select Page to redirect":["Selecione a p\u00e1gina para redirecionar"],"Search for a page":["Procurar uma p\u00e1gina"],"Select a page":["Selecione uma p\u00e1gina"],"Form Validation":["Valida\u00e7\u00e3o de Formul\u00e1rio"],"Required Error Messages":["Mensagens de Erro Obrigat\u00f3rias"],"Other Error Messages":["Outras Mensagens de Erro"],"Input Field Unique":["Campo de Entrada \u00danico"],"Email Field Unique":["Campo de Email \u00danico"],"Invalid URL":["URL inv\u00e1lido"],"Phone Field Unique":["Campo de Telefone \u00danico"],"Invalid Field Number Block":["Bloco de N\u00famero de Campo Inv\u00e1lido"],"Invalid Email":["Email inv\u00e1lido"],"Number Minimum Value":["Valor M\u00ednimo do N\u00famero"],"Number Maximum Value":["Valor M\u00e1ximo do N\u00famero"],"Dropdown Minimum Selections":["M\u00ednimo de Sele\u00e7\u00f5es no Dropdown"],"Dropdown Maximum Selections":["Sele\u00e7\u00f5es M\u00e1ximas do Dropdown"],"Multiple Choice Minimum Selections":["M\u00faltipla Escolha M\u00ednima de Sele\u00e7\u00f5es"],"Multiple Choice Maximum Selections":["Sele\u00e7\u00f5es M\u00e1ximas de M\u00faltipla Escolha"],"Input Field":["Campo de Entrada"],"Email Field":["Campo de Email"],"URL Field":["Campo de URL"],"Phone Field":["Campo de Telefone"],"Textarea Field":["Campo de \u00c1rea de Texto"],"Checkbox Field":["Campo de Caixa de Sele\u00e7\u00e3o"],"Dropdown Field":["Campo suspenso"],"Multiple Choice Field":["Campo de Escolha M\u00faltipla"],"Address Field":["Campo de Endere\u00e7o"],"Number Field":["Campo Num\u00e9rico"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Para ativar o recurso reCAPTCHA no seu SureForms, ative a op\u00e7\u00e3o reCAPTCHA nas configura\u00e7\u00f5es dos seus blocos e selecione a vers\u00e3o. Adicione a chave secreta e a chave do site do Google reCAPTCHA aqui. O reCAPTCHA ser\u00e1 adicionado \u00e0 sua p\u00e1gina no front-end."],"Enter your %s here":["Insira seu %s aqui"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Para ativar o hCAPTCHA, adicione sua chave do site e chave secreta. Configure essas configura\u00e7\u00f5es dentro do formul\u00e1rio individual."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Para ativar o Cloudflare Turnstile, adicione sua chave do site e chave secreta. Configure essas configura\u00e7\u00f5es dentro do formul\u00e1rio individual."],"Save":["Salvar"],"Anonymous Analytics":["An\u00e1lise An\u00f4nima"],"Learn More":["Saiba mais"],"Admin Notification":["Notifica\u00e7\u00e3o do Administrador"],"Enable Admin Notification":["Ativar Notifica\u00e7\u00e3o de Administrador"],"Admin notifications keep you informed about new form entries since your last visit.":["As notifica\u00e7\u00f5es de administrador mant\u00eam voc\u00ea informado sobre novas entradas de formul\u00e1rio desde sua \u00faltima visita."],"Skip":["Pular"],"Continue":["Continuar"],"Maximum Number of Entries":["N\u00famero M\u00e1ximo de Entradas"],"Maximum Entries":["Entradas M\u00e1ximas"],"Response Description After Maximum Entries":["Descri\u00e7\u00e3o da Resposta Ap\u00f3s o M\u00e1ximo de Entradas"],"Get Started":["Come\u00e7ar"],"Integration":["Integra\u00e7\u00e3o"],"Connect Native Integrations with SureForms":["Conecte Integra\u00e7\u00f5es Nativas com SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Desbloqueie integra\u00e7\u00f5es poderosas no plano Premium para automatizar seus fluxos de trabalho e conectar o SureForms diretamente com suas ferramentas favoritas."],"Send form submissions straight to CRMs, email, and marketing platforms":["Envie envios de formul\u00e1rios diretamente para CRMs, e-mail e plataformas de marketing"],"Automate repetitive tasks with seamless data syncing":["Automatize tarefas repetitivas com sincroniza\u00e7\u00e3o de dados perfeita"],"Access exclusive native integrations for faster workflows":["Acesse integra\u00e7\u00f5es nativas exclusivas para fluxos de trabalho mais r\u00e1pidos"],"Expected format for emails - email@sureforms.com or John Doe ":["Formato esperado para e-mails - email@sureforms.com ou John Doe "],"Payments":["Pagamentos"],"Stripe account disconnected successfully.":["Conta Stripe desconectada com sucesso."],"Failed to create webhook.":["Falha ao criar webhook."],"Failed to connect to Stripe.":["Falha ao conectar-se ao Stripe."],"Webhook":["Webhook"],"Knowledge Base":["Base de Conhecimento"],"What\u2019s New":["O que h\u00e1 de novo"],"out of":["fora de"],"No entries found":["Nenhuma entrada encontrada"],"delete":["excluir"],"Please type \"%s\" in the input box":["Por favor, digite \"%s\" na caixa de entrada"],"To confirm, type \"%s\" in the box below:":["Para confirmar, digite \"%s\" na caixa abaixo:"],"Type \"%s\"":["Digite \"%s\""],"Go to OttoKit Settings":["V\u00e1 para as Configura\u00e7\u00f5es do OttoKit"],"USD - US Dollar":["USD - D\u00f3lar dos EUA"],"Payment Mode":["Modo de Pagamento"],"Test Mode":["Modo de Teste"],"Live Mode":["Modo ao Vivo"],"Action":["A\u00e7\u00e3o"],"General Settings":["Configura\u00e7\u00f5es Gerais"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Configure resumos de e-mail, alertas de administrador e prefer\u00eancias de dados para gerenciar seus formul\u00e1rios com facilidade."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Personalize as mensagens de erro padr\u00e3o exibidas quando os usu\u00e1rios enviam entradas de formul\u00e1rio inv\u00e1lidas ou incompletas."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Ative a prote\u00e7\u00e3o contra spam para seus formul\u00e1rios usando servi\u00e7os CAPTCHA ou seguran\u00e7a honeypot."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Conecte e gerencie seus gateways de pagamento para aceitar transa\u00e7\u00f5es com seguran\u00e7a atrav\u00e9s de seus formul\u00e1rios."],"1% transaction and payment gateway fees apply.":["Aplicam-se taxas de 1% para transa\u00e7\u00f5es e gateways de pagamento."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["Aplicam-se taxas de transa\u00e7\u00e3o e de gateway de pagamento de 2,9%. Ative a licen\u00e7a para reduzir as taxas de transa\u00e7\u00e3o."],"2.9% transaction and payment gateway fees apply.":["Aplicam-se taxas de transa\u00e7\u00e3o e de gateway de pagamento de 2,9%."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Por favor, visite %1$s, exclua um webhook n\u00e3o utilizado e, em seguida, clique abaixo para tentar novamente."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms n\u00e3o p\u00f4de criar um webhook porque sua conta Stripe ficou sem slots gratuitos. Webhooks s\u00e3o necess\u00e1rios para receber atualiza\u00e7\u00f5es sobre pagamentos."],"Stripe Dashboard":["Painel do Stripe"],"Creating\u2026":["Criando\u2026"],"Create Webhook":["Criar Webhook"],"Successfully connected to Stripe!":["Conectado com sucesso ao Stripe!"],"Invalid response from server. Please try again.":["Resposta inv\u00e1lida do servidor. Por favor, tente novamente."],"Failed to disconnect Stripe account.":["Falha ao desconectar a conta do Stripe."],"Webhook created successfully!":["Webhook criado com sucesso!"],"Select Currency":["Selecionar moeda"],"Select the default currency for payment forms.":["Selecione a moeda padr\u00e3o para os formul\u00e1rios de pagamento."],"Connection Status":["Status da Conex\u00e3o"],"Disconnect Stripe Account":["Desconectar Conta do Stripe"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["Tem certeza de que deseja desconectar sua conta do Stripe? Isso interromper\u00e1 todos os pagamentos, assinaturas e transa\u00e7\u00f5es de formul\u00e1rio ativas conectadas a esta conta."],"Disconnect":["Desconectar"],"Disconnecting\u2026":["Desconectando\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook conectado com sucesso, todos os eventos do Stripe est\u00e3o sendo rastreados."],"Connect your Stripe account to start accepting payments through your forms.":["Conecte sua conta Stripe para come\u00e7ar a aceitar pagamentos atrav\u00e9s de seus formul\u00e1rios."],"Connect to Stripe":["Conectar ao Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Conecte-se com seguran\u00e7a ao Stripe com apenas alguns cliques para come\u00e7ar a aceitar pagamentos!"],"Set the total number of submissions allowed for this form.":["Defina o n\u00famero total de envios permitidos para este formul\u00e1rio."],"Payment Methods":["M\u00e9todos de Pagamento"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["O modo de teste permite processar pagamentos sem cobran\u00e7as reais. Mude para o modo ao vivo para transa\u00e7\u00f5es reais."],"General Payment Settings":["Configura\u00e7\u00f5es Gerais de Pagamento"],"These settings apply to all payment gateways.":["Essas configura\u00e7\u00f5es se aplicam a todos os gateways de pagamento."],"Stripe Settings":["Configura\u00e7\u00f5es do Stripe"],"Left ($100)":["Esquerda ($100)"],"Right (100$)":["Certo (100$)"],"Left Space ($ 100)":["Espa\u00e7o Esquerdo ($ 100)"],"Right Space (100 $)":["Espa\u00e7o Direito (100 $)"],"Currency Sign Position":["Posi\u00e7\u00e3o do Sinal de Moeda"],"Select the position of the currency symbol relative to the amount.":["Selecione a posi\u00e7\u00e3o do s\u00edmbolo da moeda em rela\u00e7\u00e3o ao valor."],"Learn":["Aprender"],"Enable email summaries":["Ativar resumos de e-mail"],"Enable IP logging":["Ativar registro de IP"],"Turn on Admin Notification from here.":["Ative a Notifica\u00e7\u00e3o de Administrador daqui."],"New":["Novo"],"Send entries to 100+ popular apps.":["Envie entradas para mais de 100 aplicativos populares."],"Build automated workflows that run instantly.":["Crie fluxos de trabalho automatizados que sejam executados instantaneamente."],"Create custom app integrations using our Custom App feature.":["Crie integra\u00e7\u00f5es de aplicativos personalizadas usando nosso recurso de Aplicativo Personalizado."],"Keep your tools in sync automatically.":["Mantenha suas ferramentas sincronizadas automaticamente."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Isso instalar\u00e1 e ativar\u00e1 o OttoKit no seu site WordPress para habilitar recursos de automa\u00e7\u00e3o."],"Automate Your Forms with OttoKit":["Automatize Seus Formul\u00e1rios com OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Cada envio de formul\u00e1rio deve acionar algo \u2014 um alerta no Slack, um lead no CRM, um e-mail de acompanhamento ou uma nova linha no Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Configure as permiss\u00f5es do cliente de IA e as configura\u00e7\u00f5es do servidor MCP."],"View documentation":["Ver documenta\u00e7\u00e3o"],"Copy to clipboard":["Copiar para a \u00e1rea de transfer\u00eancia"],"Claude Desktop":["Claude Desktop"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) ou %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["C\u00f3digo Claude"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (projeto) ou ~\/.claude.json (global)"],"Cursor":["Cursor"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (projeto) ou settings.json > mcp.servers (global)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml ou config.json"],"Your client's MCP configuration file":["O arquivo de configura\u00e7\u00e3o MCP do seu cliente"],"Connect Your AI Client":["Conecte seu cliente de IA"],"AI Client":["Cliente de IA"],"Create an Application Password \u2014 ":["Criar uma Senha de Aplicativo \u2014"],"Open Application Passwords":["Abrir Senhas de Aplicativos"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Ou use este comando CLI para adicionar o servidor rapidamente (voc\u00ea ainda precisar\u00e1 definir as vari\u00e1veis de ambiente):"],"Copy the JSON config below into: ":["Copie a configura\u00e7\u00e3o JSON abaixo em:"],"Replace \"your-application-password\" with the password from Step 1.":["Substitua \"your-application-password\" pela senha do Passo 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 o endpoint MCP do seu site. WP_API_USERNAME \u2014 seu nome de usu\u00e1rio do WordPress. WP_API_PASSWORD \u2014 a senha do aplicativo que voc\u00ea gerou."],"View setup docs":["Ver documentos de configura\u00e7\u00e3o"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["O plugin MCP Adapter est\u00e1 instalado, mas n\u00e3o est\u00e1 ativo. Ative-o para configurar as defini\u00e7\u00f5es do MCP."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["O plugin MCP Adapter \u00e9 necess\u00e1rio para conectar clientes de IA aos seus formul\u00e1rios. Baixe e instale-o do GitHub, depois ative-o."],"Download the latest release from":["Baixe a vers\u00e3o mais recente de"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Instale o plugin atrav\u00e9s de Plugins > Adicionar Novo Plugin > Enviar Plugin."],"Activate the MCP Adapter plugin.":["Ativar o plugin do Adaptador MCP."],"Activating\u2026":["Ativando\u2026"],"Activate MCP Adapter":["Ativar Adaptador MCP"],"Download MCP Adapter":["Baixar Adaptador MCP"],"Experimental":["Experimental"],"Enable Abilities":["Ativar habilidades"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Registre as habilidades do SureForms com a API de Habilidades do WordPress. Quando ativado, os clientes de IA podem listar, ler, criar, editar e excluir seus formul\u00e1rios e entradas. Quando desativado, nenhuma habilidade \u00e9 registrada e os clientes de IA n\u00e3o podem realizar nenhuma a\u00e7\u00e3o em seus formul\u00e1rios."],"Abilities API \u2014 Edit":["API de Habilidades \u2014 Editar"],"Enable Edit Abilities":["Ativar habilidades de edi\u00e7\u00e3o"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Quando ativado, os clientes de IA podem criar novos formul\u00e1rios, atualizar t\u00edtulos, campos e configura\u00e7\u00f5es de formul\u00e1rios, duplicar formul\u00e1rios e modificar status de entradas. Quando desativado, essas habilidades s\u00e3o desregistradas e os clientes de IA s\u00f3 podem ler seus dados."],"Abilities API \u2014 Delete":["API de Habilidades \u2014 Excluir"],"Enable Delete Abilities":["Ativar habilidades de exclus\u00e3o"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Quando ativado, os clientes de IA podem excluir permanentemente formul\u00e1rios e entradas. Os dados exclu\u00eddos n\u00e3o podem ser recuperados. Quando desativado, as habilidades de exclus\u00e3o s\u00e3o desregistradas e os clientes de IA n\u00e3o podem remover nenhum dado."],"MCP Server":["Servidor MCP"],"Enable MCP Server":["Ativar Servidor MCP"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Cria um endpoint SureForms MCP dedicado ao qual clientes de IA como Claude podem se conectar. Quando desativado, o endpoint \u00e9 removido e clientes de IA externos n\u00e3o podem descobrir ou chamar nenhuma habilidade do SureForms."],"Learn more":["Saiba mais"],"MCP Adapter Required":["Adaptador MCP Necess\u00e1rio"],"Heading 1":["T\u00edtulo 1"],"Heading 2":["T\u00edtulo 2"],"Heading 3":["T\u00edtulo 3"],"Heading 4":["T\u00edtulo 4"],"Heading 5":["T\u00edtulo 5"],"Heading 6":["T\u00edtulo 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Configure a chave da API do Google Maps para preenchimento autom\u00e1tico de endere\u00e7o e visualiza\u00e7\u00e3o do mapa."],"Help shape the future of SureForms":["Ajude a moldar o futuro do SureForms"],"Enable Google Address Autocomplete":["Ativar o preenchimento autom\u00e1tico de endere\u00e7os do Google"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Fa\u00e7a upgrade para o Plano de Neg\u00f3cios SureForms para adicionar a autocompleta\u00e7\u00e3o de endere\u00e7os com tecnologia do Google e visualiza\u00e7\u00e3o interativa de mapa aos seus formul\u00e1rios."],"Auto-suggest addresses as users type for faster, error-free submissions":["Sugira automaticamente endere\u00e7os \u00e0 medida que os usu\u00e1rios digitam para envios mais r\u00e1pidos e sem erros"],"Show an interactive map preview with draggable pin for precise locations":["Mostrar uma pr\u00e9-visualiza\u00e7\u00e3o de mapa interativo com um pino arrast\u00e1vel para locais precisos"],"Automatically populate address fields like city, state, and postal code":["Preencher automaticamente campos de endere\u00e7o como cidade, estado e c\u00f3digo postal"],"This form is now closed as we've received all the entries.":["Este formul\u00e1rio est\u00e1 agora fechado, pois recebemos todas as inscri\u00e7\u00f5es."],"Thank you for contacting us! We will be in touch with you shortly.":["Obrigado por nos contatar! Entraremos em contato com voc\u00ea em breve."],"Saving\u2026":["Salvando\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Quando ativado, este formul\u00e1rio n\u00e3o armazenar\u00e1 o IP do usu\u00e1rio, o nome do navegador e o nome do dispositivo nas entradas."],"Form data":["Dados do formul\u00e1rio"],"Unsaved changes":["Altera\u00e7\u00f5es n\u00e3o salvas"],"Keep editing":["Continue editando"],"Global Defaults":["Configura\u00e7\u00f5es Globais"],"Form Restrictions":["Restri\u00e7\u00f5es de Formul\u00e1rio"],"Configure default settings that apply to newly created forms.":["Configurar as configura\u00e7\u00f5es padr\u00e3o que se aplicam a formul\u00e1rios rec\u00e9m-criados."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Recolha informa\u00e7\u00f5es n\u00e3o sens\u00edveis do seu site, como a vers\u00e3o do PHP e as funcionalidades utilizadas, para nos ajudar a corrigir erros mais rapidamente, tomar decis\u00f5es mais inteligentes e desenvolver funcionalidades que realmente importam para voc\u00ea."],"Failed to load pages. Please refresh and try again.":["Falha ao carregar as p\u00e1ginas. Por favor, atualize e tente novamente."],"Failed to load settings. Please refresh and try again.":["Falha ao carregar as configura\u00e7\u00f5es. Por favor, atualize e tente novamente."],"Form Validation fields cannot be left blank.":["Os campos de valida\u00e7\u00e3o de formul\u00e1rio n\u00e3o podem ficar em branco."],"Recipient email is required when email summaries are enabled.":["O e-mail do destinat\u00e1rio \u00e9 necess\u00e1rio quando os resumos por e-mail est\u00e3o ativados."],"Please enter a valid recipient email.":["Por favor, insira um email de destinat\u00e1rio v\u00e1lido."],"Settings saved.":["Configura\u00e7\u00f5es salvas."],"Failed to save settings.":["Falha ao salvar as configura\u00e7\u00f5es."],"Some settings failed to save. Please retry.":["Algumas configura\u00e7\u00f5es n\u00e3o foram salvas. Por favor, tente novamente."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Alguns campos t\u00eam altera\u00e7\u00f5es n\u00e3o salvas. Descarte-as para continuar ou permane\u00e7a para salvar suas edi\u00e7\u00f5es."],"Discard & switch":["Descartar e mudar"],"Import":["Importar"],"Migration":["Migra\u00e7\u00e3o"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importe formul\u00e1rios do Contact Form 7, WPForms, Gravity Forms e outros plugins para o SureForms."],"Could not generate the import preview.":["N\u00e3o foi poss\u00edvel gerar a pr\u00e9-visualiza\u00e7\u00e3o da importa\u00e7\u00e3o."],"Import failed. Please try again or check your error logs.":["Falha na importa\u00e7\u00e3o. Por favor, tente novamente ou verifique seus logs de erro."],"Go back":["Voltar"],"Update & import":["Atualizar e importar"],"Confirm & import":["Confirmar e importar"],"Form #%s":["Formul\u00e1rio n\u00ba %s"],"%d field will import":["%d campo ser\u00e1 importado"],"Some fields can't be migrated yet":["Alguns campos ainda n\u00e3o podem ser migrados"],"These fields will be skipped - add them manually after the form is created:":["Esses campos ser\u00e3o ignorados - adicione-os manualmente ap\u00f3s a cria\u00e7\u00e3o do formul\u00e1rio:"],"Some forms could not be parsed":["Alguns formul\u00e1rios n\u00e3o puderam ser analisados"],"Update existing":["Atualizar existente"],"Create a new copy":["Criar uma nova c\u00f3pia"],"Could not load forms for this source.":["N\u00e3o foi poss\u00edvel carregar formul\u00e1rios para esta fonte."],"(untitled form)":["(formul\u00e1rio sem t\u00edtulo)"],"Previously imported":["Importado anteriormente"],"Open existing SureForms form in a new tab":["Abrir formul\u00e1rio SureForms existente em uma nova aba"],"On re-import":["Na reimporta\u00e7\u00e3o"],"No forms found in this plugin.":["Nenhum formul\u00e1rio encontrado neste plugin."],"%1$d of %2$d form selected":["%1$d de %2$d formul\u00e1rio selecionado"],"Preview update":["Pr\u00e9-visualiza\u00e7\u00e3o da atualiza\u00e7\u00e3o"],"Preview import":["Pr\u00e9-visualizar importa\u00e7\u00e3o"],"Migration complete":["Migra\u00e7\u00e3o conclu\u00edda"],"Nothing was imported":["Nada foi importado"],"%d form was imported into SureForms.":["%d formul\u00e1rio foi importado para o SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["Nenhum dos formul\u00e1rios selecionados p\u00f4de ser migrado. Veja os avisos abaixo para mais detalhes."],"Imported forms":["Formul\u00e1rios importados"],"Edit in SureForms":["Editar no SureForms"],"Some fields were skipped during import":["Alguns campos foram ignorados durante a importa\u00e7\u00e3o"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Adicione-os manualmente no editor de formul\u00e1rios - ainda n\u00e3o t\u00eam equivalente SureForms:"],"Some forms failed to import":["Alguns formul\u00e1rios falharam ao importar"],"Import more forms":["Importar mais formul\u00e1rios"],"Could not load the list of importable plugins.":["N\u00e3o foi poss\u00edvel carregar a lista de plugins import\u00e1veis."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Nenhum plugin de formul\u00e1rio suportado est\u00e1 ativo neste site. Ative um (como o Contact Form 7) com pelo menos um formul\u00e1rio para import\u00e1-lo para o SureForms."],"Plugin":["Plugin"],"%d form":["%d formul\u00e1rio"],"No forms":["Sem formul\u00e1rios"],"Multiple choice":["M\u00faltipla escolha"],"Consent":["Consentimento"],"The image uploaded but could not be inserted. Please try again.":["A imagem foi carregada, mas n\u00e3o p\u00f4de ser inserida. Por favor, tente novamente."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["A imagem n\u00e3o p\u00f4de ser carregada. Pode ser muito grande ou voc\u00ea pode n\u00e3o ter permiss\u00e3o para carregar arquivos."],"Please choose an image file.":["Por favor, escolha um arquivo de imagem."],"Show views and conversion rate":["Mostrar visualiza\u00e7\u00f5es e taxa de convers\u00e3o"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Adiciona as colunas de Visualiza\u00e7\u00f5es e Taxa de Convers\u00e3o \u00e0 lista de Formul\u00e1rios. Uma visualiza\u00e7\u00e3o \u00e9 contada uma vez por visita \u00e0 p\u00e1gina quando o formul\u00e1rio aparece na tela, e a taxa de convers\u00e3o \u00e9 a parcela dessas visualiza\u00e7\u00f5es que terminou em um envio. A contagem come\u00e7a na primeira vez que voc\u00ea ativa isso, ent\u00e3o os envios recebidos antes disso n\u00e3o s\u00e3o contados na taxa. Desativ\u00e1-lo posteriormente apenas oculta as colunas \u2014 a contagem continua, ent\u00e3o os n\u00fameros est\u00e3o atualizados se voc\u00ea ativ\u00e1-lo novamente."],"Log cleared.":["Log limpo."],"Could not clear the log.":["N\u00e3o foi poss\u00edvel limpar o log."],"Enable logs":["Ativar logs"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Registra falhas de envio de formul\u00e1rios relatadas pelo navegador, para que voc\u00ea possa enviar o log para o suporte em vez de ler o console. Nada \u00e9 registrado enquanto seus formul\u00e1rios est\u00e3o funcionando, e os valores enviados nunca s\u00e3o armazenados."],"Download log":["Baixar log"],"Confirm delete":["Confirmar exclus\u00e3o"],"Log is full \u2014 download and clear it to keep recording.":["O log est\u00e1 cheio \u2014 baixe e limpe-o para continuar registrando."],"Form Views & Conversion":["Visualiza\u00e7\u00f5es e Convers\u00e3o de Formul\u00e1rios"],"Logs":["Logs"],"Quill heading picker: default paragraph style\u0004Normal":["Normal"]}}} \ No newline at end of file +{"translation-revision-date":"2025-01-02T08:44:42+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/settings.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Painel de Controle"],"Settings":["Configura\u00e7\u00f5es"],"Entries":["Entradas"],"Status":["Status"],"Form":["Formul\u00e1rio"],"Activated":["Ativado"],"Activate":["Ativar"],"Address":["Endere\u00e7o"],"Checkbox":["Caixa de sele\u00e7\u00e3o"],"Dropdown":["Menu suspenso"],"Email":["Email"],"Number":["N\u00famero"],"Phone":["Telefone"],"Textarea":["\u00c1rea de texto"],"Monday":["Segunda-feira"],"Forms":["Formul\u00e1rios"],"New Form Submission - %s":["Nova Submiss\u00e3o de Formul\u00e1rio - %s"],"GitHub":["GitHub"],"(no title)":["(sem t\u00edtulo)"],"General":["Geral"],"No tags available":["Sem etiquetas dispon\u00edveis"],"Back":["Voltar"],"Generic tags":["Etiquetas gen\u00e9ricas"],"Other":["Outro"],"Confirm":["Confirmar"],"Cancel":["Cancelar"],"Install":["Instalar"],"Plugin Installation failed, Please try again later.":["A instala\u00e7\u00e3o do plugin falhou, por favor, tente novamente mais tarde."],"Plugin activation failed, Please try again later.":["A ativa\u00e7\u00e3o do plugin falhou, por favor, tente novamente mais tarde."],"Integrations":["Integra\u00e7\u00f5es"],"What's New?":["O que h\u00e1 de novo?"],"Core":["N\u00facleo"],"Unlicensed":["Sem licen\u00e7a"],"Connecting\u2026":["Conectando\u2026"],"Install & Activate":["Instalar e Ativar"],"Compliance Settings":["Configura\u00e7\u00f5es de Conformidade"],"Enable GDPR Compliance":["Ativar conformidade com o GDPR"],"Never store entry data after form submission":["Nunca armazene os dados de entrada ap\u00f3s o envio do formul\u00e1rio"],"When enabled this form will never store Entries.":["Quando ativado, este formul\u00e1rio nunca armazenar\u00e1 entradas."],"Automatically delete entries":["Excluir entradas automaticamente"],"When enabled this form will automatically delete entries after a certain period of time.":["Quando ativado, este formul\u00e1rio excluir\u00e1 automaticamente as entradas ap\u00f3s um determinado per\u00edodo de tempo."],"Entries older than the days set will be deleted automatically.":["As entradas mais antigas do que os dias definidos ser\u00e3o exclu\u00eddas automaticamente."],"Visual":["Visual"],"HTML":["HTML"],"All Data":["Todos os dados"],"Add Shortcode":["Adicionar Shortcode"],"Form input tags":["Etiquetas de entrada de formul\u00e1rio"],"Comma separated values are also accepted.":["Valores separados por v\u00edrgula tamb\u00e9m s\u00e3o aceitos."],"Email Notification":["Notifica\u00e7\u00e3o por Email"],"Name":["Nome"],"Send Email To":["Enviar Email Para"],"Subject":["Assunto"],"CC":["CC"],"BCC":["Cco"],"Reply To":["Responder a"],"Add Key":["Adicionar Chave"],"Add Value":["Adicionar Valor"],"Add":["Adicionar"],"Confirmation Message":["Mensagem de Confirma\u00e7\u00e3o"],"After Form Submission":["Ap\u00f3s o Envio do Formul\u00e1rio"],"Hide Form":["Ocultar Formul\u00e1rio"],"Reset Form":["Redefinir Formul\u00e1rio"],"Custom URL":["URL personalizada"],"Add Query Parameters":["Adicionar Par\u00e2metros de Consulta"],"Select if you want to add key-value pairs for form fields to include in query parameters":["Selecione se deseja adicionar pares chave-valor para campos de formul\u00e1rio a serem inclu\u00eddos nos par\u00e2metros de consulta"],"Query Parameters":["Par\u00e2metros de Consulta"],"Success Message":["Mensagem de Sucesso"],"Redirect":["Redirecionar"],"Redirect to":["Redirecionar para"],"Page":["P\u00e1gina"],"Form Confirmation":["Confirma\u00e7\u00e3o de Formul\u00e1rio"],"Confirmation Type":["Tipo de Confirma\u00e7\u00e3o"],"Clear":["Limpar"],"Google reCAPTCHA":["Google reCAPTCHA"],"hCaptcha":["hCaptcha"],"reCAPTCHA v2 Invisible":["reCAPTCHA v2 Invis\u00edvel"],"reCAPTCHA v3":["reCAPTCHA v3"],"URL":["URL"],"Validations":["Valida\u00e7\u00f5es"],"Spam Protection":["Prote\u00e7\u00e3o contra Spam"],"Email Summaries":["Resumos de Email"],"Tuesday":["ter\u00e7a-feira"],"Wednesday":["Quarta-feira"],"Thursday":["Quinta-feira"],"Friday":["Sexta-feira"],"Saturday":["S\u00e1bado"],"Sunday":["Domingo"],"Test Email":["Email de teste"],"Schedule Reports":["Agendar Relat\u00f3rios"],"IP Logging":["Registro de IP"],"If this option is turned on, the user's IP address will be saved with the form data":["Se esta op\u00e7\u00e3o estiver ativada, o endere\u00e7o IP do usu\u00e1rio ser\u00e1 salvo com os dados do formul\u00e1rio"],"Confirmation Email Mismatch Message":["Mensagem de Incompatibilidade de E-mail de Confirma\u00e7\u00e3o"],"%s represents the minimum input value. For example: \"Minimum value is 10.\"":["%s representa o valor m\u00ednimo de entrada. Por exemplo: \"O valor m\u00ednimo \u00e9 10.\""],"%s represents the maximum input value. For example: \"Maximum value is 100.\"":["%s representa o valor m\u00e1ximo de entrada. Por exemplo: \"O valor m\u00e1ximo \u00e9 100.\""],"%s represents the minimum selections needed. For example: \u201cMinimum 2 selections are required.\u201d":["%s representa as sele\u00e7\u00f5es m\u00ednimas necess\u00e1rias. Por exemplo: \"S\u00e3o necess\u00e1rias no m\u00ednimo 2 sele\u00e7\u00f5es.\""],"%s represents the maximum selections allowed. For example: \u201cMaximum 4 selections are allowed.\u201d":["%s representa o n\u00famero m\u00e1ximo de sele\u00e7\u00f5es permitidas. Por exemplo: \"S\u00e3o permitidas no m\u00e1ximo 4 sele\u00e7\u00f5es.\""],"%s represents the minimum choices needed. For example: \u201cMinimum 1 selection is required.\u201d":["%s representa as escolhas m\u00ednimas necess\u00e1rias. Por exemplo: \u201c\u00c9 necess\u00e1ria no m\u00ednimo 1 sele\u00e7\u00e3o.\u201d"],"%s represents the maximum choices allowed. For example: \u201cMaximum 3 selections are allowed.\u201d":["%s representa o n\u00famero m\u00e1ximo de escolhas permitidas. Por exemplo: \"S\u00e3o permitidas no m\u00e1ximo 3 sele\u00e7\u00f5es.\""]," Error Message":["Mensagem de Erro"],"Auto":["Carro"],"Light":["Luz"],"Dark":["Escuro"],"Turnstile":["Catraca"],"Honeypot":["Pote de mel"],"Get Keys":["Obter Chaves"],"Documentation":["Documenta\u00e7\u00e3o"],"Site Key":["Chave do Site"],"Secret Key":["Chave Secreta"],"Cloudflare Turnstile":["Cloudflare Turnstile"],"Appearance Mode":["Modo de Apar\u00eancia"],"Enable Honeypot Security":["Ativar Seguran\u00e7a Honeypot"],"Enable Honeypot Security for better spam protection":["Ative a Seguran\u00e7a Honeypot para melhor prote\u00e7\u00e3o contra spam"],"Text":["Texto"],"OttoKit":["OttoKit"],"Connect with OttoKit":["Conectar com OttoKit"],"The current 'From Email' address does not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["O endere\u00e7o de 'Email de Remetente' atual n\u00e3o corresponde ao nome de dom\u00ednio do seu site (%1$s). Isso pode fazer com que seus e-mails de notifica\u00e7\u00e3o sejam bloqueados ou marcados como spam. Alternativamente, tente usar um Endere\u00e7o de Remetente que corresponda ao dom\u00ednio do seu site (admin@%2$s)."],"The current 'From Email' address does not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["O endere\u00e7o de 'Email de Remetente' atual n\u00e3o corresponde ao nome de dom\u00ednio do seu site (%s). Isso pode fazer com que seus e-mails de notifica\u00e7\u00e3o sejam bloqueados ou marcados como spam."],"We strongly recommend that you install the free ":["Recomendamos fortemente que voc\u00ea instale o gratuito"]," plugin! The Setup Wizard makes it easy to fix your emails. ":["plugin! O Assistente de Configura\u00e7\u00e3o facilita a corre\u00e7\u00e3o dos seus e-mails."]," Alternately, try using a From Address that matches your website domain (admin@%s).":["Alternativamente, tente usar um endere\u00e7o de remetente que corresponda ao dom\u00ednio do seu site (admin@%s)."],"Please enter a valid email address. Your notifications won't be sent if the field is not filled in correctly.":["Por favor, insira um endere\u00e7o de e-mail v\u00e1lido. Suas notifica\u00e7\u00f5es n\u00e3o ser\u00e3o enviadas se o campo n\u00e3o for preenchido corretamente."],"From Name":["De Nome"],"From Email":["De Email"],"The current 'From Email' address may not match your website domain name (%1$s). This can cause your notification emails to be blocked or marked as spam. Alternately, try using a From Address that matches your website domain (admin@%2$s).":["O endere\u00e7o de 'Email de Remetente' atual pode n\u00e3o corresponder ao nome de dom\u00ednio do seu site (%1$s). Isso pode fazer com que seus e-mails de notifica\u00e7\u00e3o sejam bloqueados ou marcados como spam. Alternativamente, tente usar um Endere\u00e7o de Remetente que corresponda ao dom\u00ednio do seu site (admin@%2$s)."],"The current 'From Email' address may not match your website domain name (%s). This can cause your notification emails to be blocked or marked as spam. ":["O endere\u00e7o de 'Email de Remetente' atual pode n\u00e3o corresponder ao nome de dom\u00ednio do seu site (%s). Isso pode fazer com que seus e-mails de notifica\u00e7\u00e3o sejam bloqueados ou marcados como spam."],"reCAPTCHA":["reCAPTCHA"],"Ready to go beyond free plan?":["Pronto para ir al\u00e9m do plano gratuito?"],"Upgrade now":["Atualize agora"],"and unlock the full power of SureForms!":["e desbloqueie todo o poder do SureForms!"],"Upgrade SureForms":["Atualizar SureForms"],"Upgrade Now":["Atualize agora"],"Entries older than the selected days will be deleted.":["As entradas mais antigas que os dias selecionados ser\u00e3o exclu\u00eddas."],"Entries Time Period":["Per\u00edodo de Tempo das Entradas"],"Notifications can use only one From Email so please enter a single address.":["As notifica\u00e7\u00f5es podem usar apenas um \u00fanico endere\u00e7o de e-mail de remetente, portanto, insira um \u00fanico endere\u00e7o."],"Select Page to redirect":["Selecione a p\u00e1gina para redirecionar"],"Search for a page":["Procurar uma p\u00e1gina"],"Select a page":["Selecione uma p\u00e1gina"],"Form Validation":["Valida\u00e7\u00e3o de Formul\u00e1rio"],"Required Error Messages":["Mensagens de Erro Obrigat\u00f3rias"],"Other Error Messages":["Outras Mensagens de Erro"],"Input Field Unique":["Campo de Entrada \u00danico"],"Email Field Unique":["Campo de Email \u00danico"],"Invalid URL":["URL inv\u00e1lido"],"Phone Field Unique":["Campo de Telefone \u00danico"],"Invalid Field Number Block":["Bloco de N\u00famero de Campo Inv\u00e1lido"],"Invalid Email":["Email inv\u00e1lido"],"Number Minimum Value":["Valor M\u00ednimo do N\u00famero"],"Number Maximum Value":["Valor M\u00e1ximo do N\u00famero"],"Dropdown Minimum Selections":["M\u00ednimo de Sele\u00e7\u00f5es no Dropdown"],"Dropdown Maximum Selections":["Sele\u00e7\u00f5es M\u00e1ximas do Dropdown"],"Multiple Choice Minimum Selections":["M\u00faltipla Escolha M\u00ednima de Sele\u00e7\u00f5es"],"Multiple Choice Maximum Selections":["Sele\u00e7\u00f5es M\u00e1ximas de M\u00faltipla Escolha"],"Input Field":["Campo de Entrada"],"Email Field":["Campo de Email"],"URL Field":["Campo de URL"],"Phone Field":["Campo de Telefone"],"Textarea Field":["Campo de \u00c1rea de Texto"],"Checkbox Field":["Campo de Caixa de Sele\u00e7\u00e3o"],"Dropdown Field":["Campo suspenso"],"Multiple Choice Field":["Campo de Escolha M\u00faltipla"],"Address Field":["Campo de Endere\u00e7o"],"Number Field":["Campo Num\u00e9rico"],"reCAPTCHA v2":["reCAPTCHA v2"],"To enable reCAPTCHA feature on your SureForms Please enable reCAPTCHA option on your blocks setting and select version. Add google reCAPTCHA secret and site key here. reCAPTCHA will be added to your page on front-end.":["Para ativar o recurso reCAPTCHA no seu SureForms, ative a op\u00e7\u00e3o reCAPTCHA nas configura\u00e7\u00f5es dos seus blocos e selecione a vers\u00e3o. Adicione a chave secreta e a chave do site do Google reCAPTCHA aqui. O reCAPTCHA ser\u00e1 adicionado \u00e0 sua p\u00e1gina no front-end."],"Enter your %s here":["Insira seu %s aqui"],"To enable hCAPTCHA, please add your site key and secret key. Configure these settings within the individual form.":["Para ativar o hCAPTCHA, adicione sua chave do site e chave secreta. Configure essas configura\u00e7\u00f5es dentro do formul\u00e1rio individual."],"To enable Cloudflare Turnstile, please add your site key and secret key. Configure these settings within the individual form.":["Para ativar o Cloudflare Turnstile, adicione sua chave do site e chave secreta. Configure essas configura\u00e7\u00f5es dentro do formul\u00e1rio individual."],"Save":["Salvar"],"Anonymous Analytics":["An\u00e1lise An\u00f4nima"],"Learn More":["Saiba mais"],"Admin Notification":["Notifica\u00e7\u00e3o do Administrador"],"Enable Admin Notification":["Ativar Notifica\u00e7\u00e3o de Administrador"],"Admin notifications keep you informed about new form entries since your last visit.":["As notifica\u00e7\u00f5es de administrador mant\u00eam voc\u00ea informado sobre novas entradas de formul\u00e1rio desde sua \u00faltima visita."],"Skip":["Pular"],"Continue":["Continuar"],"Maximum Number of Entries":["N\u00famero M\u00e1ximo de Entradas"],"Maximum Entries":["Entradas M\u00e1ximas"],"Response Description After Maximum Entries":["Descri\u00e7\u00e3o da Resposta Ap\u00f3s o M\u00e1ximo de Entradas"],"Get Started":["Come\u00e7ar"],"Integration":["Integra\u00e7\u00e3o"],"Connect Native Integrations with SureForms":["Conecte Integra\u00e7\u00f5es Nativas com SureForms"],"Unlock powerful integrations in the Premium plan to automate your workflows and connect SureForms directly with your favourite tools.":["Desbloqueie integra\u00e7\u00f5es poderosas no plano Premium para automatizar seus fluxos de trabalho e conectar o SureForms diretamente com suas ferramentas favoritas."],"Send form submissions straight to CRMs, email, and marketing platforms":["Envie envios de formul\u00e1rios diretamente para CRMs, e-mail e plataformas de marketing"],"Automate repetitive tasks with seamless data syncing":["Automatize tarefas repetitivas com sincroniza\u00e7\u00e3o de dados perfeita"],"Access exclusive native integrations for faster workflows":["Acesse integra\u00e7\u00f5es nativas exclusivas para fluxos de trabalho mais r\u00e1pidos"],"Expected format for emails - email@sureforms.com or John Doe ":["Formato esperado para e-mails - email@sureforms.com ou John Doe "],"Payments":["Pagamentos"],"Stripe account disconnected successfully.":["Conta Stripe desconectada com sucesso."],"Failed to create webhook.":["Falha ao criar webhook."],"Failed to connect to Stripe.":["Falha ao conectar-se ao Stripe."],"Webhook":["Webhook"],"Knowledge Base":["Base de Conhecimento"],"What\u2019s New":["O que h\u00e1 de novo"],"out of":["fora de"],"No entries found":["Nenhuma entrada encontrada"],"delete":["excluir"],"Please type \"%s\" in the input box":["Por favor, digite \"%s\" na caixa de entrada"],"To confirm, type \"%s\" in the box below:":["Para confirmar, digite \"%s\" na caixa abaixo:"],"Type \"%s\"":["Digite \"%s\""],"Go to OttoKit Settings":["V\u00e1 para as Configura\u00e7\u00f5es do OttoKit"],"USD - US Dollar":["USD - D\u00f3lar dos EUA"],"Payment Mode":["Modo de Pagamento"],"Test Mode":["Modo de Teste"],"Live Mode":["Modo ao Vivo"],"Action":["A\u00e7\u00e3o"],"General Settings":["Configura\u00e7\u00f5es Gerais"],"Set up email summaries, admin alerts, and data preferences to manage your forms with ease.":["Configure resumos de e-mail, alertas de administrador e prefer\u00eancias de dados para gerenciar seus formul\u00e1rios com facilidade."],"Customize default error messages shown when users submit invalid or incomplete form entries.":["Personalize as mensagens de erro padr\u00e3o exibidas quando os usu\u00e1rios enviam entradas de formul\u00e1rio inv\u00e1lidas ou incompletas."],"Enable spam protection for your forms using CAPTCHA services or honeypot security.":["Ative a prote\u00e7\u00e3o contra spam para seus formul\u00e1rios usando servi\u00e7os CAPTCHA ou seguran\u00e7a honeypot."],"Connect and manage your payment gateways to securely accept transactions through your forms.":["Conecte e gerencie seus gateways de pagamento para aceitar transa\u00e7\u00f5es com seguran\u00e7a atrav\u00e9s de seus formul\u00e1rios."],"1% transaction and payment gateway fees apply.":["Aplicam-se taxas de 1% para transa\u00e7\u00f5es e gateways de pagamento."],"2.9% transaction and payment gateway fees apply. Activate license to reduce transaction fees.":["Aplicam-se taxas de transa\u00e7\u00e3o e de gateway de pagamento de 2,9%. Ative a licen\u00e7a para reduzir as taxas de transa\u00e7\u00e3o."],"2.9% transaction and payment gateway fees apply.":["Aplicam-se taxas de transa\u00e7\u00e3o e de gateway de pagamento de 2,9%."],"Please visit %1$s, delete an unused webhook, then click below to retry.":["Por favor, visite %1$s, exclua um webhook n\u00e3o utilizado e, em seguida, clique abaixo para tentar novamente."],"SureForms could not create a webhook because your Stripe account has run out of free slots. Webhooks are needed to receive updates about payments.":["SureForms n\u00e3o p\u00f4de criar um webhook porque sua conta Stripe ficou sem slots gratuitos. Webhooks s\u00e3o necess\u00e1rios para receber atualiza\u00e7\u00f5es sobre pagamentos."],"Stripe Dashboard":["Painel do Stripe"],"Creating\u2026":["Criando\u2026"],"Create Webhook":["Criar Webhook"],"Successfully connected to Stripe!":["Conectado com sucesso ao Stripe!"],"Invalid response from server. Please try again.":["Resposta inv\u00e1lida do servidor. Por favor, tente novamente."],"Failed to disconnect Stripe account.":["Falha ao desconectar a conta do Stripe."],"Webhook created successfully!":["Webhook criado com sucesso!"],"Select Currency":["Selecionar moeda"],"Select the default currency for payment forms.":["Selecione a moeda padr\u00e3o para os formul\u00e1rios de pagamento."],"Connection Status":["Status da Conex\u00e3o"],"Disconnect Stripe Account":["Desconectar Conta do Stripe"],"Are you sure you want to disconnect your Stripe account? This will stop all active payments, subscriptions, and form transactions connected to this account.":["Tem certeza de que deseja desconectar sua conta do Stripe? Isso interromper\u00e1 todos os pagamentos, assinaturas e transa\u00e7\u00f5es de formul\u00e1rio ativas conectadas a esta conta."],"Disconnect":["Desconectar"],"Disconnecting\u2026":["Desconectando\u2026"],"Webhook successfully connected, all Stripe events are being tracked.":["Webhook conectado com sucesso, todos os eventos do Stripe est\u00e3o sendo rastreados."],"Connect your Stripe account to start accepting payments through your forms.":["Conecte sua conta Stripe para come\u00e7ar a aceitar pagamentos atrav\u00e9s de seus formul\u00e1rios."],"Connect to Stripe":["Conectar ao Stripe"],"Securely connect to Stripe with just a few clicks to begin accepting payments! ":["Conecte-se com seguran\u00e7a ao Stripe com apenas alguns cliques para come\u00e7ar a aceitar pagamentos!"],"Set the total number of submissions allowed for this form.":["Defina o n\u00famero total de envios permitidos para este formul\u00e1rio."],"Payment Methods":["M\u00e9todos de Pagamento"],"Test mode allows you to process payments without real charges. Switch to Live mode for actual transactions.":["O modo de teste permite processar pagamentos sem cobran\u00e7as reais. Mude para o modo ao vivo para transa\u00e7\u00f5es reais."],"General Payment Settings":["Configura\u00e7\u00f5es Gerais de Pagamento"],"These settings apply to all payment gateways.":["Essas configura\u00e7\u00f5es se aplicam a todos os gateways de pagamento."],"Stripe Settings":["Configura\u00e7\u00f5es do Stripe"],"Left ($100)":["Esquerda ($100)"],"Right (100$)":["Certo (100$)"],"Left Space ($ 100)":["Espa\u00e7o Esquerdo ($ 100)"],"Right Space (100 $)":["Espa\u00e7o Direito (100 $)"],"Currency Sign Position":["Posi\u00e7\u00e3o do Sinal de Moeda"],"Select the position of the currency symbol relative to the amount.":["Selecione a posi\u00e7\u00e3o do s\u00edmbolo da moeda em rela\u00e7\u00e3o ao valor."],"Learn":["Aprender"],"Enable email summaries":["Ativar resumos de e-mail"],"Enable IP logging":["Ativar registro de IP"],"Turn on Admin Notification from here.":["Ative a Notifica\u00e7\u00e3o de Administrador daqui."],"New":["Novo"],"Send entries to 100+ popular apps.":["Envie entradas para mais de 100 aplicativos populares."],"Build automated workflows that run instantly.":["Crie fluxos de trabalho automatizados que sejam executados instantaneamente."],"Create custom app integrations using our Custom App feature.":["Crie integra\u00e7\u00f5es de aplicativos personalizadas usando nosso recurso de Aplicativo Personalizado."],"Keep your tools in sync automatically.":["Mantenha suas ferramentas sincronizadas automaticamente."],"This will install and activate OttoKit on your WordPress site to enable automation features.":["Isso instalar\u00e1 e ativar\u00e1 o OttoKit no seu site WordPress para habilitar recursos de automa\u00e7\u00e3o."],"Automate Your Forms with OttoKit":["Automatize Seus Formul\u00e1rios com OttoKit"],"Every form submission should trigger something \u2014 a Slack alert, a CRM lead, a follow-up email, or a new row in Google Sheets.":["Cada envio de formul\u00e1rio deve acionar algo \u2014 um alerta no Slack, um lead no CRM, um e-mail de acompanhamento ou uma nova linha no Google Sheets."],"MCP":["MCP"],"Configure AI client permissions and MCP server settings.":["Configure as permiss\u00f5es do cliente de IA e as configura\u00e7\u00f5es do servidor MCP."],"View documentation":["Ver documenta\u00e7\u00e3o"],"Copy to clipboard":["Copiar para a \u00e1rea de transfer\u00eancia"],"Claude Desktop":["Claude Desktop"],"~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)":["~\/Library\/Application Support\/Claude\/claude_desktop_config.json (macOS) ou %APPDATA%\\Claude\\claude_desktop_config.json (Windows)"],"Claude Code":["C\u00f3digo Claude"],".mcp.json (project) or ~\/.claude.json (global)":[".mcp.json (projeto) ou ~\/.claude.json (global)"],"Cursor":["Cursor"],"~\/.cursor\/mcp.json":["~\/.cursor\/mcp.json"],"VS Code (Copilot)":["VS Code (Copilot)"],".vscode\/mcp.json (project) or settings.json > mcp.servers (global)":[".vscode\/mcp.json (projeto) ou settings.json > mcp.servers (global)"],"~\/.continue\/config.yaml or config.json":["~\/.continue\/config.yaml ou config.json"],"Your client's MCP configuration file":["O arquivo de configura\u00e7\u00e3o MCP do seu cliente"],"Connect Your AI Client":["Conecte seu cliente de IA"],"AI Client":["Cliente de IA"],"Create an Application Password \u2014 ":["Criar uma Senha de Aplicativo \u2014"],"Open Application Passwords":["Abrir Senhas de Aplicativos"],"Or use this CLI command to add the server quickly (you will still need to set the environment variables):":["Ou use este comando CLI para adicionar o servidor rapidamente (voc\u00ea ainda precisar\u00e1 definir as vari\u00e1veis de ambiente):"],"Copy the JSON config below into: ":["Copie a configura\u00e7\u00e3o JSON abaixo em:"],"Replace \"your-application-password\" with the password from Step 1.":["Substitua \"your-application-password\" pela senha do Passo 1."],"WP_API_URL \u2014 your site's MCP endpoint. WP_API_USERNAME \u2014 your WordPress username. WP_API_PASSWORD \u2014 the application password you generated.":["WP_API_URL \u2014 o endpoint MCP do seu site. WP_API_USERNAME \u2014 seu nome de usu\u00e1rio do WordPress. WP_API_PASSWORD \u2014 a senha do aplicativo que voc\u00ea gerou."],"View setup docs":["Ver documentos de configura\u00e7\u00e3o"],"The MCP Adapter plugin is installed but not active. Activate it to configure MCP settings.":["O plugin MCP Adapter est\u00e1 instalado, mas n\u00e3o est\u00e1 ativo. Ative-o para configurar as defini\u00e7\u00f5es do MCP."],"The MCP Adapter plugin is required to connect AI clients to your forms. Download and install it from GitHub, then activate it.":["O plugin MCP Adapter \u00e9 necess\u00e1rio para conectar clientes de IA aos seus formul\u00e1rios. Baixe e instale-o do GitHub, depois ative-o."],"Download the latest release from":["Baixe a vers\u00e3o mais recente de"],"Install the plugin via Plugins > Add New Plugin > Upload Plugin.":["Instale o plugin atrav\u00e9s de Plugins > Adicionar Novo Plugin > Enviar Plugin."],"Activate the MCP Adapter plugin.":["Ativar o plugin do Adaptador MCP."],"Activating\u2026":["Ativando\u2026"],"Activate MCP Adapter":["Ativar Adaptador MCP"],"Download MCP Adapter":["Baixar Adaptador MCP"],"Experimental":["Experimental"],"Enable Abilities":["Ativar habilidades"],"Register SureForms abilities with the WordPress Abilities API. When enabled, AI clients can list, read, create, edit, and delete your forms and entries. When disabled, no abilities are registered and AI clients cannot perform any actions on your forms.":["Registre as habilidades do SureForms com a API de Habilidades do WordPress. Quando ativado, os clientes de IA podem listar, ler, criar, editar e excluir seus formul\u00e1rios e entradas. Quando desativado, nenhuma habilidade \u00e9 registrada e os clientes de IA n\u00e3o podem realizar nenhuma a\u00e7\u00e3o em seus formul\u00e1rios."],"Abilities API \u2014 Edit":["API de Habilidades \u2014 Editar"],"Enable Edit Abilities":["Ativar habilidades de edi\u00e7\u00e3o"],"When enabled, AI clients can create new forms, update form titles, fields, and settings, duplicate forms, and modify entry statuses. When disabled, these abilities are unregistered and AI clients can only read your data.":["Quando ativado, os clientes de IA podem criar novos formul\u00e1rios, atualizar t\u00edtulos, campos e configura\u00e7\u00f5es de formul\u00e1rios, duplicar formul\u00e1rios e modificar status de entradas. Quando desativado, essas habilidades s\u00e3o desregistradas e os clientes de IA s\u00f3 podem ler seus dados."],"Abilities API \u2014 Delete":["API de Habilidades \u2014 Excluir"],"Enable Delete Abilities":["Ativar habilidades de exclus\u00e3o"],"When enabled, AI clients can permanently delete forms and entries. Deleted data cannot be recovered. When disabled, delete abilities are unregistered and AI clients cannot remove any data.":["Quando ativado, os clientes de IA podem excluir permanentemente formul\u00e1rios e entradas. Os dados exclu\u00eddos n\u00e3o podem ser recuperados. Quando desativado, as habilidades de exclus\u00e3o s\u00e3o desregistradas e os clientes de IA n\u00e3o podem remover nenhum dado."],"MCP Server":["Servidor MCP"],"Enable MCP Server":["Ativar Servidor MCP"],"Creates a dedicated SureForms MCP endpoint that AI clients like Claude can connect to. When disabled, the endpoint is removed and external AI clients cannot discover or call any SureForms abilities.":["Cria um endpoint SureForms MCP dedicado ao qual clientes de IA como Claude podem se conectar. Quando desativado, o endpoint \u00e9 removido e clientes de IA externos n\u00e3o podem descobrir ou chamar nenhuma habilidade do SureForms."],"Learn more":["Saiba mais"],"MCP Adapter Required":["Adaptador MCP Necess\u00e1rio"],"Heading 1":["T\u00edtulo 1"],"Heading 2":["T\u00edtulo 2"],"Heading 3":["T\u00edtulo 3"],"Heading 4":["T\u00edtulo 4"],"Heading 5":["T\u00edtulo 5"],"Heading 6":["T\u00edtulo 6"],"Google Maps":["Google Maps"],"Configure Google Maps API key for address autocomplete and map preview.":["Configure a chave da API do Google Maps para preenchimento autom\u00e1tico de endere\u00e7o e visualiza\u00e7\u00e3o do mapa."],"Help shape the future of SureForms":["Ajude a moldar o futuro do SureForms"],"Enable Google Address Autocomplete":["Ativar o preenchimento autom\u00e1tico de endere\u00e7os do Google"],"Upgrade to the SureForms Business Plan to add Google-powered address autocomplete with interactive map preview to your forms.":["Fa\u00e7a upgrade para o Plano de Neg\u00f3cios SureForms para adicionar a autocompleta\u00e7\u00e3o de endere\u00e7os com tecnologia do Google e visualiza\u00e7\u00e3o interativa de mapa aos seus formul\u00e1rios."],"Auto-suggest addresses as users type for faster, error-free submissions":["Sugira automaticamente endere\u00e7os \u00e0 medida que os usu\u00e1rios digitam para envios mais r\u00e1pidos e sem erros"],"Show an interactive map preview with draggable pin for precise locations":["Mostrar uma pr\u00e9-visualiza\u00e7\u00e3o de mapa interativo com um pino arrast\u00e1vel para locais precisos"],"Automatically populate address fields like city, state, and postal code":["Preencher automaticamente campos de endere\u00e7o como cidade, estado e c\u00f3digo postal"],"This form is now closed as we've received all the entries.":["Este formul\u00e1rio est\u00e1 agora fechado, pois recebemos todas as inscri\u00e7\u00f5es."],"Thank you for contacting us! We will be in touch with you shortly.":["Obrigado por nos contatar! Entraremos em contato com voc\u00ea em breve."],"Saving\u2026":["Salvando\u2026"],"When enabled this form will not store User IP, Browser Name and the Device Name in the Entries.":["Quando ativado, este formul\u00e1rio n\u00e3o armazenar\u00e1 o IP do usu\u00e1rio, o nome do navegador e o nome do dispositivo nas entradas."],"Form data":["Dados do formul\u00e1rio"],"Unsaved changes":["Altera\u00e7\u00f5es n\u00e3o salvas"],"Keep editing":["Continue editando"],"Global Defaults":["Configura\u00e7\u00f5es Globais"],"Form Restrictions":["Restri\u00e7\u00f5es de Formul\u00e1rio"],"Configure default settings that apply to newly created forms.":["Configurar as configura\u00e7\u00f5es padr\u00e3o que se aplicam a formul\u00e1rios rec\u00e9m-criados."],"Collect non-sensitive information from your website, such as the PHP version and features used, to help us fix bugs faster, make smarter decisions, and build features that actually matter to you. ":["Recolha informa\u00e7\u00f5es n\u00e3o sens\u00edveis do seu site, como a vers\u00e3o do PHP e as funcionalidades utilizadas, para nos ajudar a corrigir erros mais rapidamente, tomar decis\u00f5es mais inteligentes e desenvolver funcionalidades que realmente importam para voc\u00ea."],"Failed to load pages. Please refresh and try again.":["Falha ao carregar as p\u00e1ginas. Por favor, atualize e tente novamente."],"Failed to load settings. Please refresh and try again.":["Falha ao carregar as configura\u00e7\u00f5es. Por favor, atualize e tente novamente."],"Form Validation fields cannot be left blank.":["Os campos de valida\u00e7\u00e3o de formul\u00e1rio n\u00e3o podem ficar em branco."],"Recipient email is required when email summaries are enabled.":["O e-mail do destinat\u00e1rio \u00e9 necess\u00e1rio quando os resumos por e-mail est\u00e3o ativados."],"Please enter a valid recipient email.":["Por favor, insira um email de destinat\u00e1rio v\u00e1lido."],"Settings saved.":["Configura\u00e7\u00f5es salvas."],"Failed to save settings.":["Falha ao salvar as configura\u00e7\u00f5es."],"Some settings failed to save. Please retry.":["Algumas configura\u00e7\u00f5es n\u00e3o foram salvas. Por favor, tente novamente."],"Some fields have unsaved changes. Discard them to continue, or stay to save your edits.":["Alguns campos t\u00eam altera\u00e7\u00f5es n\u00e3o salvas. Descarte-as para continuar ou permane\u00e7a para salvar suas edi\u00e7\u00f5es."],"Discard & switch":["Descartar e mudar"],"Import":["Importar"],"Migration":["Migra\u00e7\u00e3o"],"Import forms from Contact Form 7, WPForms, Gravity Forms, and other plugins into SureForms.":["Importe formul\u00e1rios do Contact Form 7, WPForms, Gravity Forms e outros plugins para o SureForms."],"Could not generate the import preview.":["N\u00e3o foi poss\u00edvel gerar a pr\u00e9-visualiza\u00e7\u00e3o da importa\u00e7\u00e3o."],"Import failed. Please try again or check your error logs.":["Falha na importa\u00e7\u00e3o. Por favor, tente novamente ou verifique seus logs de erro."],"Go back":["Voltar"],"Update & import":["Atualizar e importar"],"Confirm & import":["Confirmar e importar"],"Form #%s":["Formul\u00e1rio n\u00ba %s"],"%d field will import":["%d campo ser\u00e1 importado"],"Some fields can't be migrated yet":["Alguns campos ainda n\u00e3o podem ser migrados"],"These fields will be skipped - add them manually after the form is created:":["Esses campos ser\u00e3o ignorados - adicione-os manualmente ap\u00f3s a cria\u00e7\u00e3o do formul\u00e1rio:"],"Some forms could not be parsed":["Alguns formul\u00e1rios n\u00e3o puderam ser analisados"],"Update existing":["Atualizar existente"],"Create a new copy":["Criar uma nova c\u00f3pia"],"Could not load forms for this source.":["N\u00e3o foi poss\u00edvel carregar formul\u00e1rios para esta fonte."],"(untitled form)":["(formul\u00e1rio sem t\u00edtulo)"],"Previously imported":["Importado anteriormente"],"Open existing SureForms form in a new tab":["Abrir formul\u00e1rio SureForms existente em uma nova aba"],"On re-import":["Na reimporta\u00e7\u00e3o"],"No forms found in this plugin.":["Nenhum formul\u00e1rio encontrado neste plugin."],"%1$d of %2$d form selected":["%1$d de %2$d formul\u00e1rio selecionado"],"Preview update":["Pr\u00e9-visualiza\u00e7\u00e3o da atualiza\u00e7\u00e3o"],"Preview import":["Pr\u00e9-visualizar importa\u00e7\u00e3o"],"Migration complete":["Migra\u00e7\u00e3o conclu\u00edda"],"Nothing was imported":["Nada foi importado"],"%d form was imported into SureForms.":["%d formul\u00e1rio foi importado para o SureForms."],"None of the selected forms could be migrated. See the warnings below for details.":["Nenhum dos formul\u00e1rios selecionados p\u00f4de ser migrado. Veja os avisos abaixo para mais detalhes."],"Imported forms":["Formul\u00e1rios importados"],"Edit in SureForms":["Editar no SureForms"],"Some fields were skipped during import":["Alguns campos foram ignorados durante a importa\u00e7\u00e3o"],"Add these manually in the form editor - they have no SureForms equivalent yet:":["Adicione-os manualmente no editor de formul\u00e1rios - ainda n\u00e3o t\u00eam equivalente SureForms:"],"Some forms failed to import":["Alguns formul\u00e1rios falharam ao importar"],"Import more forms":["Importar mais formul\u00e1rios"],"Could not load the list of importable plugins.":["N\u00e3o foi poss\u00edvel carregar a lista de plugins import\u00e1veis."],"No supported form plugins are active on this site. Activate one (such as Contact Form 7) with at least one form to import it into SureForms.":["Nenhum plugin de formul\u00e1rio suportado est\u00e1 ativo neste site. Ative um (como o Contact Form 7) com pelo menos um formul\u00e1rio para import\u00e1-lo para o SureForms."],"Plugin":["Plugin"],"%d form":["%d formul\u00e1rio"],"No forms":["Sem formul\u00e1rios"],"Multiple choice":["M\u00faltipla escolha"],"Consent":["Consentimento"],"The image uploaded but could not be inserted. Please try again.":["A imagem foi carregada, mas n\u00e3o p\u00f4de ser inserida. Por favor, tente novamente."],"The image could not be uploaded. It may be too large, or you may not have permission to upload files.":["A imagem n\u00e3o p\u00f4de ser carregada. Pode ser muito grande ou voc\u00ea pode n\u00e3o ter permiss\u00e3o para carregar arquivos."],"Please choose an image file.":["Por favor, escolha um arquivo de imagem."],"Show views and conversion rate":["Mostrar visualiza\u00e7\u00f5es e taxa de convers\u00e3o"],"Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns \u2014 counting continues, so the figures are up to date if you switch it back on.":["Adiciona as colunas de Visualiza\u00e7\u00f5es e Taxa de Convers\u00e3o \u00e0 lista de Formul\u00e1rios. Uma visualiza\u00e7\u00e3o \u00e9 contada uma vez por visita \u00e0 p\u00e1gina quando o formul\u00e1rio aparece na tela, e a taxa de convers\u00e3o \u00e9 a parcela dessas visualiza\u00e7\u00f5es que terminou em um envio. A contagem come\u00e7a na primeira vez que voc\u00ea ativa isso, ent\u00e3o os envios recebidos antes disso n\u00e3o s\u00e3o contados na taxa. Desativ\u00e1-lo posteriormente apenas oculta as colunas \u2014 a contagem continua, ent\u00e3o os n\u00fameros est\u00e3o atualizados se voc\u00ea ativ\u00e1-lo novamente."],"Log cleared.":["Log limpo."],"Could not clear the log.":["N\u00e3o foi poss\u00edvel limpar o log."],"Enable logs":["Ativar logs"],"Records form submission failures reported by the browser, so you can send the log to support instead of reading the console. Nothing is written while your forms are working, and submitted values are never stored.":["Registra falhas de envio de formul\u00e1rios relatadas pelo navegador, para que voc\u00ea possa enviar o log para o suporte em vez de ler o console. Nada \u00e9 registrado enquanto seus formul\u00e1rios est\u00e3o funcionando, e os valores enviados nunca s\u00e3o armazenados."],"Download log":["Baixar log"],"Confirm delete":["Confirmar exclus\u00e3o"],"Log is full \u2014 download and clear it to keep recording.":["O log est\u00e1 cheio \u2014 baixe e limpe-o para continuar registrando."],"Form Views & Conversion":["Visualiza\u00e7\u00f5es e Convers\u00e3o de Formul\u00e1rios"],"Logs":["Logs"],"Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures.":["Visualiza\u00e7\u00f5es e envios por qualquer pessoa que possa editar o site normalmente s\u00e3o deixados de fora, para que testar seus pr\u00f3prios formul\u00e1rios n\u00e3o altere esses n\u00fameros."],"Quill heading picker: default paragraph style\u0004Normal":["Normal"]}}} \ No newline at end of file diff --git a/languages/sureforms-pt_PT-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json b/languages/sureforms-pt_PT-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json index 675bb3596..41ecfb087 100644 --- a/languages/sureforms-pt_PT-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json +++ b/languages/sureforms-pt_PT-a8e4a9e4a048ac2cb1c6e28cb6b9f3a1.json @@ -1 +1 @@ -{"translation-revision-date":"2025-01-02T08:44:42+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Painel de Controle"],"Settings":["Configura\u00e7\u00f5es"],"Entries":["Entradas"],"Activated":["Ativado"],"Advanced Fields":["Campos Avan\u00e7ados"],"Select Form":["Selecionar Formul\u00e1rio"],"Create New Form":["Criar Novo Formul\u00e1rio"],"Forms":["Formul\u00e1rios"],"Copy":["Copiar"],"Business":["Neg\u00f3cio"],"Next":["Pr\u00f3ximo"],"Back":["Voltar"],"Cancel":["Cancelar"],"This is where your form views will appear":["\u00c9 aqui que suas visualiza\u00e7\u00f5es de formul\u00e1rio aparecer\u00e3o"],"Install":["Instalar"],"Plugin Installation failed, Please try again later.":["A instala\u00e7\u00e3o do plugin falhou, por favor, tente novamente mais tarde."],"Plugin activation failed, Please try again later.":["A ativa\u00e7\u00e3o do plugin falhou, por favor, tente novamente mais tarde."],"What's New?":["O que h\u00e1 de novo?"],"Core":["N\u00facleo"],"Unlicensed":["Sem licen\u00e7a"],"Upgrade":["Atualizar"],"Webhooks":["Webhooks"],"Install & Activate":["Instalar e Ativar"],"Conditional Logic":["L\u00f3gica Condicional"],"Premium":["Premium"],"Welcome to SureForms!":["Bem-vindo ao SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms \u00e9 um plugin do WordPress que permite aos usu\u00e1rios criar formul\u00e1rios bonitos atrav\u00e9s de uma interface de arrastar e soltar, sem necessidade de codifica\u00e7\u00e3o. Ele se integra com o editor de blocos do WordPress."],"Read Full Guide":["Leia o Guia Completo"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Formul\u00e1rios Personalizados para WordPress FEITOS SIMPLES"],"No Date":["Sem data"],"Invalid Date":["Data Inv\u00e1lida"],"Ready to go beyond free plan?":["Pronto para ir al\u00e9m do plano gratuito?"],"Upgrade now":["Atualize agora"],"and unlock the full power of SureForms!":["e desbloqueie todo o poder do SureForms!"],"Upgrade SureForms":["Atualizar SureForms"],"Open Support Ticket":["Abrir Chamado de Suporte"],"Help Center":["Centro de Ajuda"],"Join our Community on Facebook":["Junte-se \u00e0 nossa comunidade no Facebook"],"Leave Us a Review":["Deixe-nos uma avalia\u00e7\u00e3o"],"Quick Access":["Acesso R\u00e1pido"],"Upgrade Now":["Atualize agora"],"Clear Filters":["Limpar Filtros"],"Unnamed Form":["Formul\u00e1rio Sem Nome"],"Forms Overview":["Vis\u00e3o Geral dos Formul\u00e1rios"],"Clear Form Filters":["Limpar Filtros do Formul\u00e1rio"],"Clear Date Filters":["Limpar Filtros de Data"],"Select Date Range":["Selecionar Intervalo de Datas"],"Apply":["Aplicar"],"Please wait for the data to load":["Por favor, aguarde o carregamento dos dados"],"No entries to display":["Sem entradas para exibir"],"Once you create a form and start receiving submissions, the data will appear here.":["Assim que voc\u00ea criar um formul\u00e1rio e come\u00e7ar a receber submiss\u00f5es, os dados aparecer\u00e3o aqui."],"Free":["Gr\u00e1tis"],"All Forms":["Todas as Formas"],"Guided Setup":["Configura\u00e7\u00e3o Guiada"],"Exit Guided Setup":["Sair da Configura\u00e7\u00e3o Guiada"],"Skip":["Pular"],"Build beautiful forms visually":["Crie formul\u00e1rios bonitos visualmente"],"Works perfectly on mobile":["Funciona perfeitamente no celular"],"Easy to connect with automation tools":["F\u00e1cil de conectar com ferramentas de automa\u00e7\u00e3o"],"Welcome to SureForms":["Bem-vindo ao SureForms"],"Smart, Quick and Powerful Forms.":["Formul\u00e1rios Inteligentes, R\u00e1pidos e Poderosos."],"Let's Get Started":["Vamos come\u00e7ar"],"Build up to 10 forms using AI":["Crie at\u00e9 10 formul\u00e1rios usando IA"],"A secure and private connection":["Uma conex\u00e3o segura e privada"],"Smart form drafts based on your input":["Rascunhos de formul\u00e1rios inteligentes com base no seu input"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Come\u00e7ar a partir de um formul\u00e1rio em branco nem sempre \u00e9 f\u00e1cil. Nossa IA pode ajudar criando um rascunho de formul\u00e1rio com base no que voc\u00ea est\u00e1 tentando fazer \u2014 economizando tempo e dando-lhe uma dire\u00e7\u00e3o clara."],"To do this, you'll need to connect your account.":["Para fazer isso, voc\u00ea precisar\u00e1 conectar sua conta."],"Let AI Help You Build Smarter, Faster Forms":["Deixe a IA Ajud\u00e1-lo a Criar Formul\u00e1rios Mais Inteligentes e R\u00e1pidos"],"Here's what that gives you:":["Aqui est\u00e1 o que isso lhe d\u00e1:"],"Continue":["Continuar"],"Connect":["Conectar"],"Works smoothly with forms made using SureForms":["Funciona perfeitamente com formul\u00e1rios feitos usando SureForms"],"Helps your emails reach the inbox instead of spam":["Ajuda seus e-mails a chegarem na caixa de entrada em vez de irem para o spam"],"Setup is straightforward, even if you're not technical":["A configura\u00e7\u00e3o \u00e9 simples, mesmo se voc\u00ea n\u00e3o for t\u00e9cnico"],"Lightweight and easy to use without adding clutter":["Leve e f\u00e1cil de usar sem adicionar desordem"],"Make Sure Your Emails Get Delivered":["Certifique-se de que seus e-mails sejam entregues"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["A maioria dos sites WordPress tem dificuldade em enviar e-mails de forma confi\u00e1vel, o que significa que os envios de formul\u00e1rios do seu site podem n\u00e3o chegar \u00e0 sua caixa de entrada \u2014 ou acabar no spam."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail \u00e9 um plugin SMTP simples que ajuda a garantir que seus e-mails sejam realmente entregues."],"What you will get:":["O que voc\u00ea receber\u00e1:"],"Install SureMail":["Instalar SureMail"],"AI Form Generation":["Gera\u00e7\u00e3o de Formul\u00e1rios por IA"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["Cansado de criar formul\u00e1rios manualmente? Deixe a IA fazer o trabalho por voc\u00ea. Basta descrever e nossa IA criar\u00e1 seu formul\u00e1rio perfeito em segundos."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Divida formul\u00e1rios complexos em etapas simples, reduzindo a sobrecarga e aumentando as taxas de conclus\u00e3o. Guie os usu\u00e1rios suavemente pelo processo"],"Conditional Fields":["Campos Condicionais"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Mostrar ou ocultar campos com base nas respostas do usu\u00e1rio. Fa\u00e7a as perguntas certas e exiba apenas o que \u00e9 necess\u00e1rio para manter os formul\u00e1rios limpos e relevantes."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Melhore seus formul\u00e1rios com campos avan\u00e7ados, como upload de m\u00faltiplos arquivos, campos de avalia\u00e7\u00e3o e seletores de data e hora para coletar dados mais ricos e flex\u00edveis."],"Conversational Forms":["Formas de Conversa\u00e7\u00e3o"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Crie formul\u00e1rios que pare\u00e7am uma conversa. Uma pergunta de cada vez mant\u00e9m os usu\u00e1rios engajados e facilita o preenchimento do formul\u00e1rio."],"Digital Signatures":["Assinaturas Digitais"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Recolha assinaturas digitais legalmente vinculativas diretamente nos seus formul\u00e1rios para acordos, aprova\u00e7\u00f5es e contratos."],"Calculators":["Calculadoras"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Adicione calculadoras interativas aos seus formul\u00e1rios para estimativas, cota\u00e7\u00f5es e c\u00e1lculos instant\u00e2neos para seus usu\u00e1rios."],"User Registration and Login":["Registro e Login de Usu\u00e1rio"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Permita que os visitantes se registrem e fa\u00e7am login no seu site. \u00datil para associa\u00e7\u00f5es, comunidades ou qualquer site que necessite de acesso de usu\u00e1rios."],"PDF Generation Made Simple":["Gera\u00e7\u00e3o de PDF Simplificada"],"Custom App":["Aplicativo Personalizado"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Coletar dados, envi\u00e1-los para aplicativos externos para processamento e exibir resultados instantaneamente \u2014 tudo integrado de forma harmoniosa para criar experi\u00eancias de usu\u00e1rio din\u00e2micas e interativas."],"Select Your Features":["Selecione suas funcionalidades"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Obtenha mais controle, fluxos de trabalho mais r\u00e1pidos e personaliza\u00e7\u00e3o mais profunda \u2014 tudo projetado para ajud\u00e1-lo a construir melhores sites com menos esfor\u00e7o."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Recursos selecionados requerem %1$s - use o c\u00f3digo %2$s para obter 10% de desconto em qualquer plano."],"Copied":["Copiado"],"Style your form to better match your site's design":["Estilize seu formul\u00e1rio para combinar melhor com o design do seu site"],"Add spam protection to block common bot submissions":["Adicione prote\u00e7\u00e3o contra spam para bloquear envios comuns de bots"],"Get weekly email reports with a summary of form activity":["Receba relat\u00f3rios semanais por e-mail com um resumo da atividade do formul\u00e1rio"],"You're All Set! \ud83d\ude80":["Est\u00e1 tudo pronto! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Use nosso construtor de formul\u00e1rios de IA para come\u00e7ar rapidamente ou construa seu formul\u00e1rio do zero se voc\u00ea j\u00e1 souber o que precisa. Seus formul\u00e1rios est\u00e3o prontos para criar, compartilhar e conectar com os visitantes do seu site."],"Final Touches That Make a Difference:":["Toques Finais Que Fazem a Diferen\u00e7a:"],"Build Your First Form":["Crie Seu Primeiro Formul\u00e1rio"],"File Uploads":["Envios de Arquivos"],"Signature & Rating":["Assinatura e Avalia\u00e7\u00e3o"],"Calculation Forms":["Formul\u00e1rios de C\u00e1lculo"],"And Much More\u2026":["E muito mais\u2026"],"Upgrade to Pro":["Atualize para o Pro"],"Unlock Premium Features":["Desbloquear Recursos Premium"],"Build Better Forms with SureForms":["Construa Melhores Formul\u00e1rios com SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Adicione campos avan\u00e7ados, layouts conversacionais e l\u00f3gica inteligente para criar formul\u00e1rios que envolvam os usu\u00e1rios e capturem dados melhores."],"SureForms Video Thumbnail":["Miniatura de V\u00eddeo do SureForms"],"Payments":["Pagamentos"],"Knowledge Base":["Base de Conhecimento"],"What\u2019s New":["O que h\u00e1 de novo"],"Importing\u2026":["Importando\u2026"],"Learn":["Aprender"],"Unable to complete action. Please try again.":["N\u00e3o foi poss\u00edvel completar a a\u00e7\u00e3o. Por favor, tente novamente."],"Supercharge Your Workflow":["Supercarregue seu fluxo de trabalho"],"Spam protection included":["Prote\u00e7\u00e3o contra spam inclu\u00edda"],"Multistep Forms":["Formul\u00e1rios em v\u00e1rias etapas"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Envie entradas de formul\u00e1rio instantaneamente para qualquer sistema externo ou endpoint para impulsionar fluxos de trabalho avan\u00e7ados."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Transforme automaticamente as entradas de formul\u00e1rios em PDFs limpos e prontos para download. Perfeito para registros, compartilhamento, arquivamento ou para manter tudo organizado."],"Set up confirmation messages and email notifications for each entry":["Configure mensagens de confirma\u00e7\u00e3o e notifica\u00e7\u00f5es por e-mail para cada entrada"],"Something went wrong. Please try again.":["Algo deu errado. Por favor, tente novamente."],"Payment Forms":["Formas de Pagamento"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Cobre pagamentos diretamente atrav\u00e9s dos seus formul\u00e1rios. Aceite pagamentos \u00fanicos e recorrentes de forma fluida."],"SureForms %s":["SureForms %s"],"First name is required.":["O primeiro nome \u00e9 obrigat\u00f3rio."],"Please enter a valid email address.":["Por favor, insira um endere\u00e7o de e-mail v\u00e1lido."],"Email address is required.":["Endere\u00e7o de e-mail \u00e9 obrigat\u00f3rio."],"This is required.":["Isto \u00e9 necess\u00e1rio."],"Okay, just one last step\u2026":["Ok, s\u00f3 mais um \u00faltimo passo\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Ajude-nos a personalizar sua experi\u00eancia com o SureForms compartilhando um pouco sobre voc\u00ea."],"First Name":["Primeiro Nome"],"Enter your first name":["Insira seu primeiro nome"],"Last Name":["Sobrenome"],"Enter your last name":["Digite seu sobrenome"],"Email Address":["Endere\u00e7o de Email"],"Enter your email address":["Insira o seu endere\u00e7o de e-mail"],"Privacy Policy":["Pol\u00edtica de Privacidade"],"Finish":["Terminar"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Fique por dentro e ajude a moldar o SureForms! Receba atualiza\u00e7\u00f5es de recursos e nos ajude a melhorar o SureForms compartilhando como voc\u00ea usa o plugin. Pol\u00edtica de Privacidade<\/a>."],"%d form ready":["%d formul\u00e1rio pronto"],"%d already imported":["%d j\u00e1 importados"],"(unnamed source)":["(fonte sem nome)"],"All forms already imported":["Todos os formul\u00e1rios j\u00e1 importados"],"Import forms":["Importar formul\u00e1rios"],"Import %d form":["Importar %d formul\u00e1rio"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Algo deu errado durante a importa\u00e7\u00e3o. Voc\u00ea pode tentar novamente, pular ou abrir Configura\u00e7\u00f5es \u2192 Migra\u00e7\u00e3o."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Nenhum outro plugin de formul\u00e1rio detectado. Voc\u00ea pode importar a qualquer momento em Configura\u00e7\u00f5es \u2192 Migra\u00e7\u00e3o."],"Forms imported":["Formul\u00e1rios importados"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["%1$d formul\u00e1rio de %2$s est\u00e1 agora no SureForms, pronto para publicar, estilizar e conectar."],"%d form imported":["%d formul\u00e1rio importado"],"%d form could not be imported":["%d formul\u00e1rio n\u00e3o p\u00f4de ser importado"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d tipo de campo n\u00e3o era suportado. Voc\u00ea pode reconstru\u00ed-lo manualmente dentro do SureForms."],"Bring your existing forms with you":["Traga seus formul\u00e1rios existentes com voc\u00ea"],"We detected forms in another plugin. Pick one to import into SureForms.":["Detect\u00e1mos formul\u00e1rios noutro plugin. Escolha um para importar para o SureForms."],"Choose a form plugin to import from":["Escolha um plugin de formul\u00e1rio para importar de"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Importando mais de um plugin? Voc\u00ea pode importar fontes adicionais mais tarde em Configura\u00e7\u00f5es \u2192 Migra\u00e7\u00e3o."],"Import did not complete":["A importa\u00e7\u00e3o n\u00e3o foi conclu\u00edda"],"I'll do this later":["Vou fazer isso mais tarde"],"Retry":["Tentar novamente"],"Form Checks":["Verifica\u00e7\u00f5es de Formul\u00e1rio"],"Collapse form checks":["Recolher verifica\u00e7\u00f5es de formul\u00e1rio"],"Expand form checks":["Expandir verifica\u00e7\u00f5es de formul\u00e1rio"],"Ignore":["Ignorar"],"Working\u2026":["Trabalhando\u2026"]}}} \ No newline at end of file +{"translation-revision-date":"2025-01-02T08:44:42+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/build\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"Dashboard":["Painel de Controle"],"Settings":["Configura\u00e7\u00f5es"],"Entries":["Entradas"],"Activated":["Ativado"],"Advanced Fields":["Campos Avan\u00e7ados"],"Select Form":["Selecionar Formul\u00e1rio"],"Create New Form":["Criar Novo Formul\u00e1rio"],"Forms":["Formul\u00e1rios"],"Copy":["Copiar"],"Business":["Neg\u00f3cio"],"Next":["Pr\u00f3ximo"],"Back":["Voltar"],"Close":["Fechar"],"Cancel":["Cancelar"],"This is where your form views will appear":["\u00c9 aqui que suas visualiza\u00e7\u00f5es de formul\u00e1rio aparecer\u00e3o"],"Install":["Instalar"],"Plugin Installation failed, Please try again later.":["A instala\u00e7\u00e3o do plugin falhou, por favor, tente novamente mais tarde."],"Plugin activation failed, Please try again later.":["A ativa\u00e7\u00e3o do plugin falhou, por favor, tente novamente mais tarde."],"What's New?":["O que h\u00e1 de novo?"],"Core":["N\u00facleo"],"Unlicensed":["Sem licen\u00e7a"],"Upgrade":["Atualizar"],"Webhooks":["Webhooks"],"Install & Activate":["Instalar e Ativar"],"Contact Support":["Contactar Suporte"],"Conditional Logic":["L\u00f3gica Condicional"],"Premium":["Premium"],"Welcome to SureForms!":["Bem-vindo ao SureForms!"],"SureForms is a WordPress plugin that enables users to create beautiful looking forms through a drag-and-drop interface, without needing to code. It integrates with the WordPress block editor.":["SureForms \u00e9 um plugin do WordPress que permite aos usu\u00e1rios criar formul\u00e1rios bonitos atrav\u00e9s de uma interface de arrastar e soltar, sem necessidade de codifica\u00e7\u00e3o. Ele se integra com o editor de blocos do WordPress."],"Read Full Guide":["Leia o Guia Completo"],"SureForms: Custom WordPress Forms MADE SIMPLE":["SureForms: Formul\u00e1rios Personalizados para WordPress FEITOS SIMPLES"],"No Date":["Sem data"],"Invalid Date":["Data Inv\u00e1lida"],"Ready to go beyond free plan?":["Pronto para ir al\u00e9m do plano gratuito?"],"Upgrade now":["Atualize agora"],"and unlock the full power of SureForms!":["e desbloqueie todo o poder do SureForms!"],"Upgrade SureForms":["Atualizar SureForms"],"Open Support Ticket":["Abrir Chamado de Suporte"],"Help Center":["Centro de Ajuda"],"Join our Community on Facebook":["Junte-se \u00e0 nossa comunidade no Facebook"],"Leave Us a Review":["Deixe-nos uma avalia\u00e7\u00e3o"],"Quick Access":["Acesso R\u00e1pido"],"Upgrade Now":["Atualize agora"],"Clear Filters":["Limpar Filtros"],"Unnamed Form":["Formul\u00e1rio Sem Nome"],"Forms Overview":["Vis\u00e3o Geral dos Formul\u00e1rios"],"Clear Form Filters":["Limpar Filtros do Formul\u00e1rio"],"Clear Date Filters":["Limpar Filtros de Data"],"Select Date Range":["Selecionar Intervalo de Datas"],"Apply":["Aplicar"],"Please wait for the data to load":["Por favor, aguarde o carregamento dos dados"],"No entries to display":["Sem entradas para exibir"],"Once you create a form and start receiving submissions, the data will appear here.":["Assim que voc\u00ea criar um formul\u00e1rio e come\u00e7ar a receber submiss\u00f5es, os dados aparecer\u00e3o aqui."],"Free":["Gr\u00e1tis"],"All Forms":["Todas as Formas"],"Guided Setup":["Configura\u00e7\u00e3o Guiada"],"Exit Guided Setup":["Sair da Configura\u00e7\u00e3o Guiada"],"Skip":["Pular"],"Build beautiful forms visually":["Crie formul\u00e1rios bonitos visualmente"],"Works perfectly on mobile":["Funciona perfeitamente no celular"],"Easy to connect with automation tools":["F\u00e1cil de conectar com ferramentas de automa\u00e7\u00e3o"],"Welcome to SureForms":["Bem-vindo ao SureForms"],"Smart, Quick and Powerful Forms.":["Formul\u00e1rios Inteligentes, R\u00e1pidos e Poderosos."],"Let's Get Started":["Vamos come\u00e7ar"],"Build up to 10 forms using AI":["Crie at\u00e9 10 formul\u00e1rios usando IA"],"A secure and private connection":["Uma conex\u00e3o segura e privada"],"Smart form drafts based on your input":["Rascunhos de formul\u00e1rios inteligentes com base no seu input"],"Starting from a blank form isn't always easy. Our AI can help by creating a draft form based on what you're trying to do \u2014 saving you time and giving you a clear direction.":["Come\u00e7ar a partir de um formul\u00e1rio em branco nem sempre \u00e9 f\u00e1cil. Nossa IA pode ajudar criando um rascunho de formul\u00e1rio com base no que voc\u00ea est\u00e1 tentando fazer \u2014 economizando tempo e dando-lhe uma dire\u00e7\u00e3o clara."],"To do this, you'll need to connect your account.":["Para fazer isso, voc\u00ea precisar\u00e1 conectar sua conta."],"Let AI Help You Build Smarter, Faster Forms":["Deixe a IA Ajud\u00e1-lo a Criar Formul\u00e1rios Mais Inteligentes e R\u00e1pidos"],"Here's what that gives you:":["Aqui est\u00e1 o que isso lhe d\u00e1:"],"Continue":["Continuar"],"Connect":["Conectar"],"Works smoothly with forms made using SureForms":["Funciona perfeitamente com formul\u00e1rios feitos usando SureForms"],"Helps your emails reach the inbox instead of spam":["Ajuda seus e-mails a chegarem na caixa de entrada em vez de irem para o spam"],"Setup is straightforward, even if you're not technical":["A configura\u00e7\u00e3o \u00e9 simples, mesmo se voc\u00ea n\u00e3o for t\u00e9cnico"],"Lightweight and easy to use without adding clutter":["Leve e f\u00e1cil de usar sem adicionar desordem"],"Make Sure Your Emails Get Delivered":["Certifique-se de que seus e-mails sejam entregues"],"Most WordPress sites struggle to send emails reliably, which means form submissions from your site might not reach your inbox \u2014 or end up in spam.":["A maioria dos sites WordPress tem dificuldade em enviar e-mails de forma confi\u00e1vel, o que significa que os envios de formul\u00e1rios do seu site podem n\u00e3o chegar \u00e0 sua caixa de entrada \u2014 ou acabar no spam."],"SureMail is a simple SMTP plugin that helps make sure your emails actually get delivered.":["SureMail \u00e9 um plugin SMTP simples que ajuda a garantir que seus e-mails sejam realmente entregues."],"What you will get:":["O que voc\u00ea receber\u00e1:"],"Install SureMail":["Instalar SureMail"],"AI Form Generation":["Gera\u00e7\u00e3o de Formul\u00e1rios por IA"],"Tired of building forms manually? Let AI do the work for you. Just describe and our AI will create your perfect form in seconds.":["Cansado de criar formul\u00e1rios manualmente? Deixe a IA fazer o trabalho por voc\u00ea. Basta descrever e nossa IA criar\u00e1 seu formul\u00e1rio perfeito em segundos."],"Break complex forms into simple steps, reducing overwhelm and boosting completion rates. Guide users smoothly through the process":["Divida formul\u00e1rios complexos em etapas simples, reduzindo a sobrecarga e aumentando as taxas de conclus\u00e3o. Guie os usu\u00e1rios suavemente pelo processo"],"Conditional Fields":["Campos Condicionais"],"Show or hide fields based on user answers. Ask the right questions and display only what's needed to keep forms clean and relevant.":["Mostrar ou ocultar campos com base nas respostas do usu\u00e1rio. Fa\u00e7a as perguntas certas e exiba apenas o que \u00e9 necess\u00e1rio para manter os formul\u00e1rios limpos e relevantes."],"Enhance your forms with advanced fields like multi-file upload, rating fields, and date & time pickers to collect richer, flexible data.":["Melhore seus formul\u00e1rios com campos avan\u00e7ados, como upload de m\u00faltiplos arquivos, campos de avalia\u00e7\u00e3o e seletores de data e hora para coletar dados mais ricos e flex\u00edveis."],"Conversational Forms":["Formas de Conversa\u00e7\u00e3o"],"Create forms that feel like a conversation. One question at a time keeps users engaged and makes form completion easy.":["Crie formul\u00e1rios que pare\u00e7am uma conversa. Uma pergunta de cada vez mant\u00e9m os usu\u00e1rios engajados e facilita o preenchimento do formul\u00e1rio."],"Digital Signatures":["Assinaturas Digitais"],"Collect legally binding digital signatures directly in your forms for agreements, approvals, and contracts.":["Recolha assinaturas digitais legalmente vinculativas diretamente nos seus formul\u00e1rios para acordos, aprova\u00e7\u00f5es e contratos."],"Calculators":["Calculadoras"],"Add interactive calculators to your forms for instant estimates, quotes, and calculations for your users.":["Adicione calculadoras interativas aos seus formul\u00e1rios para estimativas, cota\u00e7\u00f5es e c\u00e1lculos instant\u00e2neos para seus usu\u00e1rios."],"User Registration and Login":["Registro e Login de Usu\u00e1rio"],"Allow visitors to register and log in to your site. Useful for membership, community, or any site that needs user access.":["Permita que os visitantes se registrem e fa\u00e7am login no seu site. \u00datil para associa\u00e7\u00f5es, comunidades ou qualquer site que necessite de acesso de usu\u00e1rios."],"PDF Generation Made Simple":["Gera\u00e7\u00e3o de PDF Simplificada"],"Custom App":["Aplicativo Personalizado"],"Collect data, send it to external applications for processing, and display results instantly \u2014 all seamlessly integrated to create dynamic, interactive user experiences.":["Coletar dados, envi\u00e1-los para aplicativos externos para processamento e exibir resultados instantaneamente \u2014 tudo integrado de forma harmoniosa para criar experi\u00eancias de usu\u00e1rio din\u00e2micas e interativas."],"Select Your Features":["Selecione suas funcionalidades"],"Get more control, faster workflows, and deeper customization \u2014 all designed to help you build better websites with less effort.":["Obtenha mais controle, fluxos de trabalho mais r\u00e1pidos e personaliza\u00e7\u00e3o mais profunda \u2014 tudo projetado para ajud\u00e1-lo a construir melhores sites com menos esfor\u00e7o."],"Selected features require %1$s - use code %2$s to get 10% off on any plan.":["Recursos selecionados requerem %1$s - use o c\u00f3digo %2$s para obter 10% de desconto em qualquer plano."],"Copied":["Copiado"],"Style your form to better match your site's design":["Estilize seu formul\u00e1rio para combinar melhor com o design do seu site"],"Add spam protection to block common bot submissions":["Adicione prote\u00e7\u00e3o contra spam para bloquear envios comuns de bots"],"Get weekly email reports with a summary of form activity":["Receba relat\u00f3rios semanais por e-mail com um resumo da atividade do formul\u00e1rio"],"You're All Set! \ud83d\ude80":["Est\u00e1 tudo pronto! \ud83d\ude80"],"Use our AI form builder to get started quickly, or build your form from scratch if you already know what you need. Your forms are ready to create, share, and connect with your site visitors.":["Use nosso construtor de formul\u00e1rios de IA para come\u00e7ar rapidamente ou construa seu formul\u00e1rio do zero se voc\u00ea j\u00e1 souber o que precisa. Seus formul\u00e1rios est\u00e3o prontos para criar, compartilhar e conectar com os visitantes do seu site."],"Final Touches That Make a Difference:":["Toques Finais Que Fazem a Diferen\u00e7a:"],"Build Your First Form":["Crie Seu Primeiro Formul\u00e1rio"],"File Uploads":["Envios de Arquivos"],"Signature & Rating":["Assinatura e Avalia\u00e7\u00e3o"],"Calculation Forms":["Formul\u00e1rios de C\u00e1lculo"],"And Much More\u2026":["E muito mais\u2026"],"Upgrade to Pro":["Atualize para o Pro"],"Unlock Premium Features":["Desbloquear Recursos Premium"],"Build Better Forms with SureForms":["Construa Melhores Formul\u00e1rios com SureForms"],"Add advanced fields, conversational layouts, and smart logic to create forms that engage users and capture better data.":["Adicione campos avan\u00e7ados, layouts conversacionais e l\u00f3gica inteligente para criar formul\u00e1rios que envolvam os usu\u00e1rios e capturem dados melhores."],"SureForms Video Thumbnail":["Miniatura de V\u00eddeo do SureForms"],"Payments":["Pagamentos"],"Knowledge Base":["Base de Conhecimento"],"What\u2019s New":["O que h\u00e1 de novo"],"Importing\u2026":["Importando\u2026"],"Learn":["Aprender"],"Unable to complete action. Please try again.":["N\u00e3o foi poss\u00edvel completar a a\u00e7\u00e3o. Por favor, tente novamente."],"Supercharge Your Workflow":["Supercarregue seu fluxo de trabalho"],"Spam protection included":["Prote\u00e7\u00e3o contra spam inclu\u00edda"],"Multistep Forms":["Formul\u00e1rios em v\u00e1rias etapas"],"Send form entries instantly to any external system or endpoint to power advanced workflows.":["Envie entradas de formul\u00e1rio instantaneamente para qualquer sistema externo ou endpoint para impulsionar fluxos de trabalho avan\u00e7ados."],"Automatically turn form entries into clean, ready-to-download PDFs. Perfect for records, sharing, archiving, or keeping things organized.":["Transforme automaticamente as entradas de formul\u00e1rios em PDFs limpos e prontos para download. Perfeito para registros, compartilhamento, arquivamento ou para manter tudo organizado."],"Set up confirmation messages and email notifications for each entry":["Configure mensagens de confirma\u00e7\u00e3o e notifica\u00e7\u00f5es por e-mail para cada entrada"],"Something went wrong. Please try again.":["Algo deu errado. Por favor, tente novamente."],"Payment Forms":["Formas de Pagamento"],"Collect payments directly through your forms. Accept one-time and recurring payments seamlessly.":["Cobre pagamentos diretamente atrav\u00e9s dos seus formul\u00e1rios. Aceite pagamentos \u00fanicos e recorrentes de forma fluida."],"SureForms %s":["SureForms %s"],"First name is required.":["O primeiro nome \u00e9 obrigat\u00f3rio."],"Please enter a valid email address.":["Por favor, insira um endere\u00e7o de e-mail v\u00e1lido."],"Email address is required.":["Endere\u00e7o de e-mail \u00e9 obrigat\u00f3rio."],"This is required.":["Isto \u00e9 necess\u00e1rio."],"Okay, just one last step\u2026":["Ok, s\u00f3 mais um \u00faltimo passo\u2026"],"Help us tailor your SureForms experience by sharing a bit about yourself.":["Ajude-nos a personalizar sua experi\u00eancia com o SureForms compartilhando um pouco sobre voc\u00ea."],"First Name":["Primeiro Nome"],"Enter your first name":["Insira seu primeiro nome"],"Last Name":["Sobrenome"],"Enter your last name":["Digite seu sobrenome"],"Email Address":["Endere\u00e7o de Email"],"Enter your email address":["Insira o seu endere\u00e7o de e-mail"],"Privacy Policy":["Pol\u00edtica de Privacidade"],"Finish":["Terminar"],"Stay in the loop and help shape SureForms! Get feature updates, and help us in betterment of SureForms by sharing how you use the plugin. Privacy Policy<\/a>.":["Fique por dentro e ajude a moldar o SureForms! Receba atualiza\u00e7\u00f5es de recursos e nos ajude a melhorar o SureForms compartilhando como voc\u00ea usa o plugin. Pol\u00edtica de Privacidade<\/a>."],"%d form ready":["%d formul\u00e1rio pronto"],"%d already imported":["%d j\u00e1 importados"],"(unnamed source)":["(fonte sem nome)"],"All forms already imported":["Todos os formul\u00e1rios j\u00e1 importados"],"Import forms":["Importar formul\u00e1rios"],"Import %d form":["Importar %d formul\u00e1rio"],"Something went wrong while importing. You can retry, skip, or open Settings \u2192 Migration.":["Algo deu errado durante a importa\u00e7\u00e3o. Voc\u00ea pode tentar novamente, pular ou abrir Configura\u00e7\u00f5es \u2192 Migra\u00e7\u00e3o."],"No other form plugins detected. You can import any time from Settings \u2192 Migration.":["Nenhum outro plugin de formul\u00e1rio detectado. Voc\u00ea pode importar a qualquer momento em Configura\u00e7\u00f5es \u2192 Migra\u00e7\u00e3o."],"Forms imported":["Formul\u00e1rios importados"],"%1$d form from %2$s is now in SureForms, ready to publish, style, and connect.":["%1$d formul\u00e1rio de %2$s est\u00e1 agora no SureForms, pronto para publicar, estilizar e conectar."],"%d form imported":["%d formul\u00e1rio importado"],"%d form could not be imported":["%d formul\u00e1rio n\u00e3o p\u00f4de ser importado"],"%d field type was unsupported. You can rebuild it manually inside SureForms.":["%d tipo de campo n\u00e3o era suportado. Voc\u00ea pode reconstru\u00ed-lo manualmente dentro do SureForms."],"Bring your existing forms with you":["Traga seus formul\u00e1rios existentes com voc\u00ea"],"We detected forms in another plugin. Pick one to import into SureForms.":["Detect\u00e1mos formul\u00e1rios noutro plugin. Escolha um para importar para o SureForms."],"Choose a form plugin to import from":["Escolha um plugin de formul\u00e1rio para importar de"],"Importing more than one plugin? You can import additional sources later from Settings \u2192 Migration.":["Importando mais de um plugin? Voc\u00ea pode importar fontes adicionais mais tarde em Configura\u00e7\u00f5es \u2192 Migra\u00e7\u00e3o."],"Import did not complete":["A importa\u00e7\u00e3o n\u00e3o foi conclu\u00edda"],"I'll do this later":["Vou fazer isso mais tarde"],"Retry":["Tentar novamente"],"Form Checks":["Verifica\u00e7\u00f5es de Formul\u00e1rio"],"Collapse form checks":["Recolher verifica\u00e7\u00f5es de formul\u00e1rio"],"Expand form checks":["Expandir verifica\u00e7\u00f5es de formul\u00e1rio"],"Ignore":["Ignorar"],"Working\u2026":["Trabalhando\u2026"],"Details":["Detalhes"],"Copy details":["Copiar detalhes"]}}} \ No newline at end of file diff --git a/languages/sureforms-pt_PT.mo b/languages/sureforms-pt_PT.mo index 3596a03cb..621e72a05 100644 Binary files a/languages/sureforms-pt_PT.mo and b/languages/sureforms-pt_PT.mo differ diff --git a/languages/sureforms-pt_PT.po b/languages/sureforms-pt_PT.po index e032b2c41..3e10f455c 100644 --- a/languages/sureforms-pt_PT.po +++ b/languages/sureforms-pt_PT.po @@ -14,9 +14,9 @@ msgstr "" #. Plugin Name of the plugin #. Author of the plugin #: sureforms.php -#: admin/admin.php:1152 -#: admin/admin.php:1153 -#: admin/admin.php:3021 +#: admin/admin.php:1198 +#: admin/admin.php:1199 +#: admin/admin.php:3185 #: inc/abilities/abilities-registrar.php:139 #: inc/gutenberg-hooks.php:109 #: inc/page-builders/bricks/elements/form-widget.php:67 @@ -43,8 +43,8 @@ msgstr "Uma maneira simples, mas poderosa, de criar formulários modernos para o msgid "https://sureforms.com/" msgstr "https://sureforms.com/" -#: admin/admin.php:1165 -#: admin/admin.php:1166 +#: admin/admin.php:1211 +#: admin/admin.php:1212 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -59,9 +59,9 @@ msgstr "https://sureforms.com/" msgid "Dashboard" msgstr "Painel de Controle" -#: admin/admin.php:1183 -#: admin/admin.php:1184 -#: admin/admin.php:1616 +#: admin/admin.php:1229 +#: admin/admin.php:1230 +#: admin/admin.php:1662 #: inc/compatibility/multilingual/string-collector.php:236 #: inc/compatibility/multilingual/string-collector.php:245 #: inc/compatibility/multilingual/string-collector.php:313 @@ -79,15 +79,15 @@ msgstr "Painel de Controle" msgid "Settings" msgstr "Configurações" -#: admin/admin.php:1452 -#: admin/admin.php:1453 +#: admin/admin.php:1498 +#: admin/admin.php:1499 #: inc/post-types.php:270 msgid "New Form" msgstr "Novo Formulário" -#: admin/admin.php:1461 -#: admin/admin.php:1462 -#: admin/admin.php:3340 +#: admin/admin.php:1507 +#: admin/admin.php:1508 +#: admin/admin.php:3504 #: inc/generate-form-markup.php:211 #: inc/generate-form-markup.php:224 #: inc/global-settings/email-summary.php:225 @@ -105,7 +105,7 @@ msgid "Entries" msgstr "Entradas" #. Translators: Post Title. -#: admin/admin.php:1704 +#: admin/admin.php:1750 #, php-format msgid "Edit %1$s" msgstr "Editar %1$s" @@ -118,7 +118,7 @@ msgstr "Editar %1$s" #: inc/duplicate-form.php:191 #: inc/export.php:126 #: inc/export.php:184 -#: inc/forms-data.php:88 +#: inc/forms-data.php:108 #: inc/global-settings/global-settings.php:89 #: inc/global-settings/global-settings.php:639 #: inc/rest-api.php:203 @@ -126,18 +126,18 @@ msgid "Nonce verification failed." msgstr "A verificação do nonce falhou." #. translators: %1$s: Opening anchor tag with URL, %2$s: Closing anchor tag, %3$s: SureForms Pro Plugin Name. -#: admin/admin.php:2572 +#: admin/admin.php:2626 #, php-format msgid "Please %1$sactivate%2$s your copy of %3$s to get new features, access support, receive update notifications, and more." msgstr "Por favor, %1$sative%2$s sua cópia do %3$s para obter novos recursos, acessar suporte, receber notificações de atualizações e muito mais." #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version, %4$s: Anchor tag open, %5$s: Closing anchor tag. -#: admin/admin.php:2590 +#: admin/admin.php:2644 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version from %4$shere%5$s." msgstr "O SureForms %1$s requer um mínimo de %2$s %3$s para funcionar corretamente. Por favor, atualize para a versão mais recente %4$saqui%5$s." -#: admin/admin.php:3339 +#: admin/admin.php:3503 #: inc/global-settings/email-summary.php:224 #: assets/build/entries.js:172 #: assets/build/payments.js:172 @@ -207,7 +207,7 @@ msgstr "Lixo" msgid "Published" msgstr "Publicado" -#: admin/admin.php:3331 +#: admin/admin.php:3495 msgid "View" msgstr "Visualizar" @@ -299,11 +299,11 @@ msgstr "Nenhum plugin especificado" msgid "Plugin Successfully Activated" msgstr "Plugin ativado com sucesso" -#: admin/admin.php:1780 +#: admin/admin.php:1834 msgid "Activating..." msgstr "Ativando..." -#: admin/admin.php:1781 +#: admin/admin.php:1835 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/formEditor.js:172 @@ -318,17 +318,17 @@ msgstr "Ativando..." msgid "Activated" msgstr "Ativado" -#: admin/admin.php:1782 +#: admin/admin.php:1836 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Activate" msgstr "Ativar" -#: admin/admin.php:1783 +#: admin/admin.php:1837 msgid "Installing..." msgstr "Instalando..." -#: admin/admin.php:1784 +#: admin/admin.php:1838 msgid "Installed" msgstr "Instalado" @@ -336,12 +336,13 @@ msgstr "Instalado" msgid "You do not have permission to access this page." msgstr "Você não tem permissão para acessar esta página." -#: admin/admin.php:2784 -#: admin/admin.php:2912 -#: admin/admin.php:2950 -#: admin/admin.php:2971 -#: admin/admin.php:3294 -#: admin/admin.php:3601 +#: admin/admin.php:2874 +#: admin/admin.php:2917 +#: admin/admin.php:3076 +#: admin/admin.php:3114 +#: admin/admin.php:3135 +#: admin/admin.php:3458 +#: admin/admin.php:3847 #: inc/admin-ajax.php:164 #: inc/payments/admin/admin-handler.php:638 #: inc/payments/stripe/admin-stripe-handler.php:80 @@ -354,7 +355,7 @@ msgid "Form ID is required." msgstr "O ID do formulário é obrigatório." #: inc/admin-ajax.php:184 -#: inc/form-submit.php:1153 +#: inc/form-submit.php:1261 msgid "Invalid form ID." msgstr "ID de formulário inválido." @@ -593,28 +594,28 @@ msgstr "Telefone" msgid "Textarea" msgstr "Área de texto" -#: inc/form-submit.php:231 +#: inc/form-submit.php:281 msgid "Cloudflare Turnstile secret key is invalid." msgstr "A chave secreta do Cloudflare Turnstile é inválida." -#: inc/form-submit.php:238 +#: inc/form-submit.php:288 msgid "Cloudflare Turnstile response is missing." msgstr "Resposta do Cloudflare Turnstile está faltando." -#: inc/form-submit.php:282 +#: inc/form-submit.php:332 msgid "hCaptcha secret key is invalid." msgstr "A chave secreta do hCaptcha é inválida." -#: inc/form-submit.php:289 +#: inc/form-submit.php:339 msgid "hCaptcha response is missing." msgstr "Falta a resposta do hCaptcha." -#: inc/form-submit.php:330 -#: inc/form-submit.php:589 +#: inc/form-submit.php:380 +#: inc/form-submit.php:639 msgid "Form data is not found." msgstr "Os dados do formulário não foram encontrados." -#: inc/forms-data.php:68 +#: inc/forms-data.php:88 msgid "Sorry, you are not allowed to view the form." msgstr "Desculpe, você não tem permissão para visualizar o formulário." @@ -667,7 +668,7 @@ msgstr "O valor precisa ser único." msgid "Sorry, you are not allowed to perform this action." msgstr "Desculpe, você não tem permissão para realizar esta ação." -#: admin/admin.php:2639 +#: admin/admin.php:2693 msgid "Rate SureForms" msgstr "Avalie SureForms" @@ -728,7 +729,7 @@ msgstr "Editar Formulário" msgid "Edit" msgstr "Editar" -#: admin/admin.php:3072 +#: admin/admin.php:3236 #: inc/page-builders/elementor/form-widget.php:346 #: assets/build/dashboard.js:2 msgid "Create New Form" @@ -765,8 +766,8 @@ msgstr "Ver Formulário" msgid "View Forms" msgstr "Ver Formulários" -#: admin/admin.php:1443 -#: admin/admin.php:1444 +#: admin/admin.php:1489 +#: admin/admin.php:1490 #: inc/post-types.php:274 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -8280,7 +8281,7 @@ msgstr "Social" msgid "Travel" msgstr "Viagem" -#: inc/helper.php:2375 +#: inc/helper.php:2368 msgid "Blank Form" msgstr "Formulário em Branco" @@ -8599,7 +8600,9 @@ msgstr "Por favor, adicione uma opção de propriedades ao MultiButtonsControl" msgid "Icon Library" msgstr "Biblioteca de Ícones" +#: admin/admin.php:4062 #: assets/build/blocks.js:172 +#: assets/build/dashboard.js:172 #: modules/gutenberg/build/blocks.js:4 msgid "Close" msgstr "Fechar" @@ -8888,9 +8891,9 @@ msgstr "Adicionar blocos à Barra de Ação Rápida" msgid "Re-arrange block inside Quick Action Bar" msgstr "Reorganizar bloco dentro da Barra de Ação Rápida" -#: admin/admin.php:1236 -#: admin/admin.php:1237 -#: admin/admin.php:4129 +#: admin/admin.php:1282 +#: admin/admin.php:1283 +#: admin/admin.php:4737 #: assets/build/blocks.js:172 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -9263,7 +9266,7 @@ msgstr "Centro" msgid "Right" msgstr "Certo" -#: inc/form-submit.php:1344 +#: inc/form-submit.php:1452 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Google reCAPTCHA" @@ -9273,7 +9276,7 @@ msgstr "Google reCAPTCHA" msgid "CloudFlare Turnstile" msgstr "CloudFlare Turnstile" -#: inc/form-submit.php:1348 +#: inc/form-submit.php:1456 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "hCaptcha" @@ -9569,7 +9572,7 @@ msgstr "Chave do Site" msgid "Secret Key" msgstr "Chave Secreta" -#: inc/form-submit.php:1352 +#: inc/form-submit.php:1460 #: assets/build/settings.js:172 msgid "Cloudflare Turnstile" msgstr "Cloudflare Turnstile" @@ -9594,7 +9597,8 @@ msgstr "Conectar agora" msgid "Authentication Failed" msgstr "Falha na autenticação" -#: admin/admin.php:3516 +#: admin/admin.php:4061 +#: assets/build/dashboard.js:172 #: assets/build/templatePicker.js:172 msgid "Contact Support" msgstr "Contactar Suporte" @@ -10566,18 +10570,18 @@ msgstr "Desbloquear Adicionar Nota" msgid "With the SureForms Starter plan, enhance your submitted form entries by adding personalized notes for better clarity and tracking." msgstr "Com o plano SureForms Starter, melhore suas entradas de formulário enviadas adicionando notas personalizadas para maior clareza e acompanhamento." -#: inc/form-submit.php:990 +#: inc/form-submit.php:1046 msgid "Email notification passed to the sending server" msgstr "Notificação por email enviada para o servidor de envio" #. translators: Here, %s is the comma separated emails list. -#: inc/form-submit.php:1063 +#: inc/form-submit.php:1130 #, php-format msgid "Email notification recipient: %s" msgstr "Destinatário da notificação por e-mail: %s" #. translators: Here, %1$s is the comma separated emails list and %2$s is error report ( if any ). -#: inc/form-submit.php:1080 +#: inc/form-submit.php:1147 #, php-format msgid "Email server was unable to send the email notification. Recipient: %1$s. Reason: %2$s" msgstr "O servidor de e-mail não conseguiu enviar a notificação por e-mail. Destinatário: %1$s. Motivo: %2$s" @@ -10620,7 +10624,7 @@ msgstr "Desbloquear Formulários Conversacionais" msgid "With the SureForms Pro Plan, you can transform your forms into engaging conversational layouts for a seamless user experience." msgstr "Com o Plano SureForms Pro, você pode transformar seus formulários em layouts conversacionais envolventes para uma experiência do usuário perfeita." -#: admin/admin.php:1075 +#: admin/admin.php:1121 msgid "Get SureForms Pro" msgstr "Obtenha o SureForms Pro" @@ -10832,24 +10836,24 @@ msgstr "Selecionar Gradiente" msgid "reCAPTCHA" msgstr "reCAPTCHA" -#: inc/form-submit.php:1288 +#: inc/form-submit.php:1396 msgid "Captcha validation failed. No error code provided." msgstr "A validação do Captcha falhou. Nenhum código de erro fornecido." -#: inc/form-submit.php:1289 +#: inc/form-submit.php:1397 msgid "Captcha validation failed." msgstr "Falha na validação do captcha." -#: inc/form-submit.php:1356 +#: inc/form-submit.php:1464 msgid "Unknown Captcha" msgstr "Captcha Desconhecido" -#: inc/form-submit.php:1357 +#: inc/form-submit.php:1465 msgid "Invalid captcha type." msgstr "Tipo de captcha inválido." #. translators: %s is the captcha title. -#: inc/form-submit.php:1370 +#: inc/form-submit.php:1478 #, php-format msgid "%s verification failed. Please contact your site administrator." msgstr "A verificação de %s falhou. Por favor, entre em contato com o administrador do seu site." @@ -11246,8 +11250,8 @@ msgstr "Descreva o formulário que você deseja criar" msgid "We are building your form…" msgstr "Estamos construindo seu formulário…" -#: admin/admin.php:1351 -#: admin/admin.php:1352 +#: admin/admin.php:1397 +#: admin/admin.php:1398 msgid "SMTP" msgstr "SMTP" @@ -11379,31 +11383,32 @@ msgstr "Ativar Notificação de Administrador" msgid "Admin notifications keep you informed about new form entries since your last visit." msgstr "As notificações de administrador mantêm você informado sobre novas entradas de formulário desde sua última visita." -#: admin/admin.php:2789 -#: admin/admin.php:2908 -#: admin/admin.php:2946 -#: admin/admin.php:2967 -#: admin/admin.php:3298 -#: admin/admin.php:3596 +#: admin/admin.php:2869 +#: admin/admin.php:2922 +#: admin/admin.php:3072 +#: admin/admin.php:3110 +#: admin/admin.php:3131 +#: admin/admin.php:3462 +#: admin/admin.php:3842 msgid "Unauthorized user." msgstr "Usuário não autorizado." #. translators: 1: opening span, 2: opening strong (inline), 3: closing strong, 4: closing span, 5: opening strong (block), 6: closing strong -#: admin/admin.php:2917 +#: admin/admin.php:3081 #, php-format msgid "%1$sGet started by %2$sbuilding your first form%3$s.%4$s%5$sExperience the power of our intuitive AI Form Builder%6$s" msgstr "%1$sComece por %2$scriar o seu primeiro formulário%3$s.%4$s%5$sExperimente o poder do nosso intuitivo Criador de Formulários com IA%6$s" -#: admin/admin.php:2928 +#: admin/admin.php:3092 msgid "SureForms is waiting for you!" msgstr "SureForms está esperando por você!" -#: admin/admin.php:2930 +#: admin/admin.php:3094 msgid "Build My First Form" msgstr "Construir Meu Primeiro Formulário" -#: admin/admin.php:2931 -#: admin/admin.php:3418 +#: admin/admin.php:3095 +#: admin/admin.php:3650 msgid "Dismiss" msgstr "Dispensar" @@ -11423,51 +11428,51 @@ msgstr "Entrar" msgid "Register" msgstr "Registrar" -#: admin/admin.php:3327 +#: admin/admin.php:3491 msgid "Recent Entries" msgstr "Entradas Recentes" -#: admin/admin.php:3328 +#: admin/admin.php:3492 msgid "( Last 7 days )" msgstr "( Últimos 7 dias )" -#: admin/admin.php:4070 +#: admin/admin.php:4678 msgid "Use Conditional Logic to show only what matters" msgstr "Use lógica condicional para mostrar apenas o que importa" -#: admin/admin.php:4071 +#: admin/admin.php:4679 msgid "Split your form into steps to keep it easy" msgstr "Divida seu formulário em etapas para mantê-lo simples" -#: admin/admin.php:4072 +#: admin/admin.php:4680 msgid "Let people upload files directly to your form" msgstr "Permita que as pessoas enviem arquivos diretamente para o seu formulário" -#: admin/admin.php:4073 +#: admin/admin.php:4681 msgid "Turn responses into downloadable PDFs automatically" msgstr "Transforme as respostas em PDFs baixáveis automaticamente" -#: admin/admin.php:4074 +#: admin/admin.php:4682 msgid "Let users sign with a simple signature field" msgstr "Permita que os usuários assinem com um campo de assinatura simples" -#: admin/admin.php:4075 +#: admin/admin.php:4683 msgid "Connect your form to other tools using webhooks" msgstr "Conecte seu formulário a outras ferramentas usando webhooks" -#: admin/admin.php:4076 +#: admin/admin.php:4684 msgid "Use Conversational Forms for a chat-like experience" msgstr "Use Formulários de Conversa para uma experiência semelhante a um chat" -#: admin/admin.php:4077 +#: admin/admin.php:4685 msgid "Let users register or log in through your form" msgstr "Permita que os usuários se registrem ou façam login através do seu formulário" -#: admin/admin.php:4078 +#: admin/admin.php:4686 msgid "Build forms that create WordPress user accounts" msgstr "Crie formulários que criem contas de usuário no WordPress" -#: admin/admin.php:4079 +#: admin/admin.php:4687 msgid "Add calculations to auto-total scores or prices" msgstr "Adicione cálculos para totalizar automaticamente pontuações ou preços" @@ -11666,6 +11671,7 @@ msgstr "Obtenha mais controle, fluxos de trabalho mais rápidos e personalizaç msgid "Selected features require %1$s - use code %2$s to get 10% off on any plan." msgstr "Recursos selecionados requerem %1$s - use o código %2$s para obter 10% de desconto em qualquer plano." +#: admin/admin.php:4060 #: assets/build/dashboard.js:172 msgid "Copied" msgstr "Copiado" @@ -11889,7 +11895,7 @@ msgstr "Explore o SureDash" msgid "Something went wrong. We have logged the error for further investigation" msgstr "Algo deu errado. Registramos o erro para investigação posterior" -#: inc/field-validation.php:413 +#: inc/field-validation.php:452 msgid "Field is not valid." msgstr "O campo não é válido." @@ -11957,8 +11963,8 @@ msgstr "Miniatura de Vídeo do SureForms" msgid "Expected format for emails - email@sureforms.com or John Doe " msgstr "Formato esperado para e-mails - email@sureforms.com ou John Doe " -#: admin/admin.php:1471 -#: admin/admin.php:1472 +#: admin/admin.php:1517 +#: admin/admin.php:1518 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -12173,7 +12179,7 @@ msgstr "Eleve seu SEO e suba nos rankings de busca sem esforço!" msgid "Boost your website's visibility with smart SEO automation. Optimize content, track keyword performance, and get actionable insights, all inside WordPress." msgstr "Aumente a visibilidade do seu site com automação inteligente de SEO. Otimize o conteúdo, acompanhe o desempenho das palavras-chave e obtenha insights acionáveis, tudo dentro do WordPress." -#: inc/form-submit.php:129 +#: inc/form-submit.php:174 #: inc/form-views.php:205 #: inc/payments/admin/admin-handler.php:99 #: inc/payments/admin/admin-handler.php:183 @@ -15372,12 +15378,12 @@ msgid "Stripe Settings" msgstr "Configurações do Stripe" #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version. -#: admin/admin.php:2281 +#: admin/admin.php:2335 #, php-format msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version." msgstr "O SureForms %1$s requer o mínimo %2$s %3$s para funcionar corretamente. Por favor, atualize para a versão mais recente." -#: admin/admin.php:2294 +#: admin/admin.php:2348 msgid "Update Now" msgstr "Atualizar agora" @@ -15425,8 +15431,8 @@ msgstr "Posição do Sinal de Moeda" msgid "Select the position of the currency symbol relative to the amount." msgstr "Selecione a posição do símbolo da moeda em relação ao valor." -#: admin/admin.php:1414 -#: admin/admin.php:1415 +#: admin/admin.php:1460 +#: admin/admin.php:1461 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -15440,41 +15446,41 @@ msgstr "Selecione a posição do símbolo da moeda em relação ao valor." msgid "Learn" msgstr "Aprender" -#: admin/admin.php:2635 +#: admin/admin.php:2689 msgid "Amazing! SureForms is powering your forms and submissions - let's keep growing together!" msgstr "Incrível! SureForms está alimentando seus formulários e submissões - vamos continuar crescendo juntos!" -#: admin/admin.php:2636 +#: admin/admin.php:2690 msgid "If SureForms has been helpful, would you mind taking a moment to leave a 5-star review on WordPress.org?" msgstr "Se o SureForms foi útil, você se importaria de deixar um comentário de 5 estrelas no WordPress.org?" -#: admin/admin.php:2647 -#: admin/admin.php:2711 +#: admin/admin.php:2701 +#: admin/admin.php:2765 msgid "Maybe later" msgstr "Talvez mais tarde" -#: admin/admin.php:2653 +#: admin/admin.php:2707 msgid "I already did" msgstr "Eu já fiz" -#: admin/admin.php:2702 +#: admin/admin.php:2756 msgid "SureForms is ready to power your forms — explore what's possible!" msgstr "SureForms está pronto para potencializar seus formulários — explore o que é possível!" -#: admin/admin.php:2703 +#: admin/admin.php:2757 msgid "Manage your forms, track submissions, and discover features like AI Form Builder, payment integrations, and more from the SureForms dashboard." msgstr "Gerencie seus formulários, acompanhe as submissões e descubra recursos como o Construtor de Formulários com IA, integrações de pagamento e muito mais no painel do SureForms." -#: admin/admin.php:2706 +#: admin/admin.php:2760 msgid "Go to Dashboard" msgstr "Ir para o Painel" -#: admin/admin.php:2717 +#: admin/admin.php:2771 msgid "I already know" msgstr "Eu já sei" -#: admin/admin.php:2833 -#: admin/admin.php:3608 +#: admin/admin.php:2981 +#: admin/admin.php:3854 msgid "Invalid parameters." msgstr "Parâmetros inválidos." @@ -15858,10 +15864,10 @@ msgid "This form is not yet available. Check back after the scheduled start time msgstr "Este formulário ainda não está disponível. Verifique novamente após o horário de início programado." #: inc/admin/html-form-detector.php:268 -#: inc/form-submit.php:197 -#: inc/form-submit.php:503 -#: inc/form-submit.php:548 -#: inc/form-submit.php:1149 +#: inc/form-submit.php:247 +#: inc/form-submit.php:553 +#: inc/form-submit.php:598 +#: inc/form-submit.php:1257 #: inc/migrator/bootstrap.php:357 #: inc/payments/front-end.php:79 #: inc/payments/front-end.php:265 @@ -15884,48 +15890,48 @@ msgstr "Este formulário ainda não está disponível. Verifique novamente após msgid "Security verification failed. Please refresh the page and try again." msgstr "A verificação de segurança falhou. Por favor, atualize a página e tente novamente." -#: inc/form-submit.php:582 +#: inc/form-submit.php:632 msgid "Form data was not found." msgstr "Os dados do formulário não foram encontrados." -#: inc/form-submit.php:336 +#: inc/form-submit.php:386 msgid "Form ID is missing." msgstr "O ID do formulário está ausente." -#: inc/form-submit.php:213 +#: inc/form-submit.php:263 msgid "Sorry, you do not have permission to access this resource." msgstr "Desculpe, você não tem permissão para acessar este recurso." -#: inc/form-submit.php:368 +#: inc/form-submit.php:418 msgid "You do not have permission to submit this form." msgstr "Você não tem permissão para enviar este formulário." -#: inc/form-submit.php:378 +#: inc/form-submit.php:428 msgid "This form is no longer available." msgstr "Este formulário não está mais disponível." -#: inc/form-submit.php:396 +#: inc/form-submit.php:446 msgid "Please check the form for errors." msgstr "Por favor, verifique o formulário em busca de erros." -#: inc/form-submit.php:523 -#: inc/form-submit.php:564 +#: inc/form-submit.php:573 +#: inc/form-submit.php:614 msgid "Your submission was flagged as spam. Please try again." msgstr "Sua submissão foi marcada como spam. Por favor, tente novamente." -#: inc/form-submit.php:818 +#: inc/form-submit.php:868 msgid "Unable to submit form. Please try again." msgstr "Não foi possível enviar o formulário. Por favor, tente novamente." -#: inc/form-submit.php:1070 +#: inc/form-submit.php:1137 msgid "No SMTP plugin detected. Please configure an SMTP plugin to enable email sending." msgstr "Nenhum plugin SMTP detectado. Por favor, configure um plugin SMTP para habilitar o envio de e-mails." -#: inc/form-submit.php:1071 +#: inc/form-submit.php:1138 msgid "Email sending failed for an unknown reason." msgstr "O envio do e-mail falhou por uma razão desconhecida." -#: inc/form-submit.php:1124 +#: inc/form-submit.php:1201 msgid "No emails were sent." msgstr "Nenhum e-mail foi enviado." @@ -16438,7 +16444,7 @@ msgid "Duplicate form?" msgstr "Duplicar formulário?" #: assets/build/formSubmit.js:2 -#: assets/js/unminified/form-submit.js:917 +#: assets/js/unminified/form-submit.js:938 msgid "An error occurred while submitting your form. Please try again." msgstr "Ocorreu um erro ao enviar o seu formulário. Por favor, tente novamente." @@ -16815,28 +16821,28 @@ msgstr "Segredo do webhook não configurado." msgid "Invalid webhook signature." msgstr "Assinatura de webhook inválida." -#: admin/admin.php:1253 -#: admin/admin.php:1851 +#: admin/admin.php:1299 +#: admin/admin.php:1905 #: assets/build/formEditor.js:172 msgid "Quizzes" msgstr "Questionários" -#: admin/admin.php:1252 +#: admin/admin.php:1298 msgid "Quiz Entries" msgstr "Entradas do Quiz" -#: admin/admin.php:1255 -#: admin/admin.php:1288 -#: admin/admin.php:1321 +#: admin/admin.php:1301 +#: admin/admin.php:1334 +#: admin/admin.php:1367 #: assets/build/settings.js:172 msgid "New" msgstr "Novo" -#: inc/form-submit.php:1158 +#: inc/form-submit.php:1266 msgid "Invalid form." msgstr "Formulário inválido." -#: inc/form-submit.php:1163 +#: inc/form-submit.php:1271 msgid "Too many requests. Please try again shortly." msgstr "Solicitações demais. Por favor, tente novamente em breve." @@ -17345,9 +17351,9 @@ msgstr "Perfeito para educação, treinamento e curiosidades divertidas" msgid "Select this to create a quiz with scored questions and graded results." msgstr "Selecione isto para criar um questionário com perguntas pontuadas e resultados avaliados." -#: admin/admin.php:1285 -#: admin/admin.php:1286 -#: admin/admin.php:1856 +#: admin/admin.php:1331 +#: admin/admin.php:1332 +#: admin/admin.php:1910 msgid "Survey Reports" msgstr "Relatórios de Pesquisa" @@ -17753,7 +17759,7 @@ msgid "Error creating SureForms Form." msgstr "Erro ao criar o formulário SureForms." #. translators: %s represents the minimum number of characters required -#: inc/field-validation.php:426 +#: inc/field-validation.php:465 #: inc/translatable.php:94 #, php-format msgid "Please enter at least %s characters." @@ -17911,9 +17917,9 @@ msgstr "A resposta da IA estava vazia. Por favor, refine seu prompt e tente nova msgid "Unable to build form fields from the AI response." msgstr "Não foi possível criar campos de formulário a partir da resposta da IA." -#: admin/admin.php:1318 -#: admin/admin.php:1319 -#: admin/admin.php:1861 +#: admin/admin.php:1364 +#: admin/admin.php:1365 +#: admin/admin.php:1915 msgid "Partial Entries" msgstr "Entradas Parciais" @@ -18784,23 +18790,23 @@ msgstr "O valor do pagamento não pôde ser verificado para este formulário. Po msgid "Cancellation is not supported for this payment gateway." msgstr "O cancelamento não é suportado para este gateway de pagamento." -#: admin/admin.php:3039 +#: admin/admin.php:3203 msgid "SureForms AI Quick Draft" msgstr "SureForms AI Rascunho Rápido" -#: admin/admin.php:3058 +#: admin/admin.php:3222 msgid "Describe the form and let SureForms AI generate it for you." msgstr "Descreva o formulário e deixe o SureForms AI gerá-lo para você." -#: admin/admin.php:3061 +#: admin/admin.php:3225 msgid "Describe your form" msgstr "Descreva seu formulário" -#: admin/admin.php:3068 +#: admin/admin.php:3232 msgid "Example: Create a contact form with name, email, phone, and message fields." msgstr "Exemplo: Crie um formulário de contato com campos de nome, email, telefone e mensagem." -#: admin/admin.php:3109 +#: admin/admin.php:3273 msgid "Redirecting..." msgstr "Redirecionando..." @@ -18813,14 +18819,14 @@ msgid "The prompt is too long. Please shorten it and try again." msgstr "O prompt é muito longo. Por favor, encurte-o e tente novamente." #. translators: %s: maximum characters allowed before the @ symbol. -#: inc/field-validation.php:448 +#: inc/field-validation.php:487 #: inc/translatable.php:97 #, php-format msgid "The part before @ may not exceed %s characters." msgstr "A parte antes do @ não pode exceder %s caracteres." #. translators: %s: maximum characters allowed after the @ symbol. -#: inc/field-validation.php:454 +#: inc/field-validation.php:493 #: inc/translatable.php:100 #, php-format msgid "The part after @ may not exceed %s characters." @@ -18907,74 +18913,74 @@ msgstr "Desculpe, você não tem permissão para renderizar este formulário." msgid "This form requires a payment. Please complete the payment and submit again." msgstr "Este formulário requer um pagamento. Por favor, complete o pagamento e envie novamente." -#: admin/admin.php:552 +#: admin/admin.php:598 msgid "You are not allowed to update this prompt." msgstr "Você não tem permissão para atualizar este prompt." -#: admin/admin.php:595 +#: admin/admin.php:641 msgid "Finish setting up your form" msgstr "Conclua a configuração do seu formulário" -#: admin/admin.php:627 +#: admin/admin.php:673 msgid "Review or edit your form" msgstr "Revise ou edite seu formulário" -#: admin/admin.php:628 -#: admin/admin.php:3907 +#: admin/admin.php:674 +#: admin/admin.php:4515 msgid "Edit form" msgstr "Editar formulário" -#: admin/admin.php:633 +#: admin/admin.php:679 msgid "Personalize the Thank You message" msgstr "Personalize a mensagem de agradecimento" -#: admin/admin.php:634 +#: admin/admin.php:680 msgid "Edit message" msgstr "Editar mensagem" -#: admin/admin.php:639 +#: admin/admin.php:685 msgid "Choose who gets notified of new replies" msgstr "Escolha quem será notificado sobre novas respostas" -#: admin/admin.php:640 +#: admin/admin.php:686 msgid "Set up email" msgstr "Configurar e-mail" -#: admin/admin.php:648 +#: admin/admin.php:694 msgid "your form" msgstr "seu formulário" #. translators: %s: form title. -#: admin/admin.php:651 +#: admin/admin.php:697 #, php-format msgid "Finish setting up %s" msgstr "Conclua a configuração de %s" #. translators: %s: form title. -#: admin/admin.php:659 +#: admin/admin.php:705 #, php-format msgid "View %s (opens in a new tab)" msgstr "Visualizar %s (abre em uma nova aba)" -#: admin/admin.php:664 +#: admin/admin.php:710 msgid "Customize your form to get it ready for real submissions:" msgstr "Personalize seu formulário para deixá-lo pronto para envios reais:" -#: admin/admin.php:3896 +#: admin/admin.php:4504 msgid "We’ve already created this form for you. Finish customising it so it’s ready to collect real submissions." msgstr "Já criamos este formulário para você. Termine de personalizá-lo para que esteja pronto para coletar envios reais." #. translators: %s: form name. -#: admin/admin.php:3901 +#: admin/admin.php:4509 #, php-format msgid "Finish setting up “%s”" msgstr "Conclua a configuração de “%s”" -#: admin/admin.php:3914 +#: admin/admin.php:4522 msgid "Edit the Thank You message" msgstr "Edite a mensagem de agradecimento" -#: admin/admin.php:3920 +#: admin/admin.php:4528 msgid "Set where replies go" msgstr "Defina para onde vão as respostas" @@ -19002,123 +19008,90 @@ msgstr "Por favor, escolha um arquivo de imagem." msgid "This form could not be submitted. Please refresh the page and try again." msgstr "Este formulário não pôde ser enviado. Por favor, atualize a página e tente novamente." -#: admin/admin.php:2341 -#: admin/admin.php:2430 +#: admin/admin.php:2395 +#: admin/admin.php:2484 msgid "Your SureForms database is up to date. New form entries will be saved as usual." msgstr "Seu banco de dados SureForms está atualizado. Novas entradas de formulário serão salvas como de costume." -#: admin/admin.php:2355 -#: admin/admin.php:2439 +#: admin/admin.php:2409 +#: admin/admin.php:2493 #: inc/rest-api.php:1447 msgid "SureForms could not finish updating the database. Your hosting may not allow SureForms to create database tables — please contact your hosting provider or SureForms support." msgstr "SureForms não conseguiu concluir a atualização do banco de dados. Sua hospedagem pode não permitir que o SureForms crie tabelas de banco de dados — por favor, entre em contato com seu provedor de hospedagem ou com o suporte do SureForms." -#: admin/admin.php:2358 +#: admin/admin.php:2412 msgid "Contact support" msgstr "Contatar suporte" -#: admin/admin.php:2378 +#: admin/admin.php:2432 msgid "Database update needed" msgstr "Atualização do banco de dados necessária" -#: admin/admin.php:2384 +#: admin/admin.php:2438 msgid "Fix now" msgstr "Corrigir agora" -#: admin/admin.php:2453 +#: admin/admin.php:2507 msgid "SureForms — database update needed" msgstr "SureForms — atualização do banco de dados necessária" -#: admin/admin.php:2458 +#: admin/admin.php:2512 msgid "Update database" msgstr "Atualizar banco de dados" -#: admin/admin.php:2478 +#: admin/admin.php:2532 msgid "You do not have permission to update the database." msgstr "Você não tem permissão para atualizar o banco de dados." -#: admin/admin.php:3437 +#: admin/admin.php:3669 msgid "You do not have permission to do this." msgstr "Você não tem permissão para fazer isso." -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:3507 -msgid "%d form submission in a row could not be completed." -msgid_plural "%d form submissions in a row could not be completed." -msgstr[0] "%d envio de formulário consecutivo não pôde ser concluído." -msgstr[1] "" - -#: admin/admin.php:3515 -msgid "Visitors may be unable to reach you, and those entries were not saved." -msgstr "Os visitantes podem não conseguir entrar em contato com você, e essas entradas não foram salvas." - -#: admin/admin.php:3525 -msgid "Form submissions are completing normally." -msgstr "Os envios de formulários estão sendo concluídos normalmente." - -#: admin/admin.php:3539 -msgid "No caching plugin that needs configuring was found." -msgstr "Nenhum plugin de cache que precise de configuração foi encontrado." - #. translators: %s: caching plugin name. -#: admin/admin.php:3551 +#: admin/admin.php:4209 msgid "%s may interfere with your forms." msgstr "%s pode interferir com seus formulários." -#: admin/admin.php:3554 -msgid "Caching and JavaScript optimisation can serve a stale copy of your form or load its scripts out of order." -msgstr "O cache e a otimização de JavaScript podem servir uma cópia desatualizada do seu formulário ou carregar seus scripts fora de ordem." - -#: admin/admin.php:3555 +#: admin/admin.php:4185 +#: admin/admin.php:4213 msgid "Help Me Fix" msgstr "Ajude-me a corrigir" -#: admin/admin.php:3650 +#: admin/admin.php:4258 msgid "SureForms found your form entries stored under a different database table prefix. Reconnecting them takes a moment, and your existing entries will be kept." msgstr "SureForms encontrou suas entradas de formulário armazenadas sob um prefixo de tabela de banco de dados diferente. Reconectá-las leva um momento, e suas entradas existentes serão mantidas." -#: admin/admin.php:3653 +#: admin/admin.php:4261 msgid "SureForms needs to update your database before it can save new form entries. This only takes a moment and will not change your forms or existing content. Entries submitted before now cannot be recovered from here." msgstr "SureForms precisa atualizar seu banco de dados antes que possa salvar novas entradas de formulário. Isso leva apenas um momento e não alterará seus formulários ou conteúdo existente. Entradas enviadas antes de agora não podem ser recuperadas daqui." #. translators: %s: site host. -#: admin/admin.php:4265 +#: admin/admin.php:5032 msgid "SureForms: form submissions are failing on %s" msgstr "SureForms: os envios de formulário estão falhando em %s" -#: admin/admin.php:4274 +#: admin/admin.php:4990 msgid "Debug log: no entries recorded." msgstr "Log de depuração: nenhuma entrada registrada." #. translators: 1: entries shown, 2: entries recorded. -#: admin/admin.php:4278 +#: admin/admin.php:4995 msgid "Debug log (most recent %1$d of %2$d entries)" msgstr "Log de depuração (mais recente %1$d de %2$d entradas)" -#: admin/admin.php:4288 -msgid "Older entries were left out to keep this email within the length a mail client accepts. The full log can be downloaded from SureForms → Settings → General." -msgstr "Entradas mais antigas foram deixadas de fora para manter este e-mail dentro do comprimento aceito por um cliente de e-mail. O log completo pode ser baixado de SureForms → Configurações → Geral." - -#: admin/admin.php:4318 +#: admin/admin.php:5158 msgid "Hello SureForms support," msgstr "Olá suporte do SureForms," -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:4322 -msgid "SureForms has recorded %d form submission in a row that could not be completed." -msgid_plural "SureForms has recorded %d form submissions in a row that could not be completed." -msgstr[0] "SureForms registrou %d envio de formulário consecutivo que não pôde ser concluído." -msgstr[1] "" - -#: admin/admin.php:4332 +#: admin/admin.php:5182 msgid "Site details" msgstr "Detalhes do site" -#: admin/admin.php:4335 +#: admin/admin.php:5185 msgid "not active" msgstr "não ativo" -#: admin/admin.php:4338 +#: admin/admin.php:5188 msgid "none detected" msgstr "nenhum detectado" @@ -19126,7 +19099,7 @@ msgstr "nenhum detectado" msgid "No form submission failures have been recorded." msgstr "Nenhuma falha de envio de formulário foi registrada." -#: inc/form-submit.php:118 +#: inc/form-submit.php:163 msgid "Not found." msgstr "Não encontrado." @@ -19211,6 +19184,193 @@ msgstr "Visualizações e Conversão de Formulários" msgid "Logs" msgstr "Logs" +#: admin/admin.php:2831 +msgid "Previous notice" +msgstr "Aviso anterior" + +#: admin/admin.php:2832 +msgid "Next notice" +msgstr "Próximo aviso" + +#. translators: 1: current position, 2: total notices. +#: admin/admin.php:2834 +msgid "%1$d of %2$d" +msgstr "%1$d de %2$d" + +#: admin/admin.php:2891 +msgid "Nothing to report." +msgstr "Nada a relatar." + +#: admin/admin.php:4057 +#: assets/build/dashboard.js:172 +msgid "Details" +msgstr "Detalhes" + +#: admin/admin.php:4058 +msgid "What we recorded about this problem. Copy it into your support request so we can start from the cause rather than a description of it." +msgstr "O que registramos sobre este problema. Copie-o em sua solicitação de suporte para que possamos começar pela causa e não por uma descrição dela." + +#: admin/admin.php:4059 +#: assets/build/dashboard.js:172 +msgid "Copy details" +msgstr "Copiar detalhes" + +#: admin/admin.php:4068 +msgid "Copy the details first, so you have them to paste." +msgstr "Copie os detalhes primeiro, para que você os tenha para colar." + +#: admin/admin.php:4072 +msgid "Copied. Contact Support is now available." +msgstr "Copiado. Contatar Suporte agora está disponível." + +#: admin/admin.php:4073 +msgid "Your browser would not let us copy. Select the text above and copy it by hand." +msgstr "Seu navegador não nos permitiu copiar. Selecione o texto acima e copie-o manualmente." + +#: admin/admin.php:4076 +msgid "Recorded diagnostics" +msgstr "Diagnósticos registrados" + +#: admin/admin.php:4080 +msgid "Collecting the details…" +msgstr "Coletando os detalhes…" + +#: admin/admin.php:4081 +msgid "We could not collect the details. Contact Support and describe what happened, and we will take it from there." +msgstr "Não conseguimos coletar os detalhes. Contate o Suporte e descreva o que aconteceu, e nós cuidaremos disso a partir daí." + +#. translators: %s: form title. +#: admin/admin.php:4108 +msgid "We noticed a form submission failure on %s." +msgstr "Notamos uma falha de envio de formulário em %s." + +#: admin/admin.php:4109 +msgid "We noticed a form submission failure." +msgstr "Notamos uma falha de envio de formulário." + +#: admin/admin.php:4110 +msgid "Visitors may not be able to reach you, and their entries were not saved." +msgstr "Os visitantes podem não conseguir entrar em contato com você, e suas entradas não foram salvas." + +#. translators: %s: form title. +#: admin/admin.php:4115 +msgid "We noticed a notification failure on %s." +msgstr "Notamos uma falha de notificação em %s." + +#: admin/admin.php:4116 +msgid "We noticed a notification failure." +msgstr "Notamos uma falha de notificação." + +#: admin/admin.php:4117 +msgid "The entry was saved, but we could not send the email about it. New entries may be coming in without you knowing." +msgstr "A entrada foi salva, mas não conseguimos enviar o e-mail sobre ela. Novas entradas podem estar chegando sem que você saiba." + +#. translators: %s: form title. +#: admin/admin.php:4132 +msgid "We noticed an integration failure on %s." +msgstr "Notamos uma falha de integração em %s." + +#: admin/admin.php:4133 +msgid "We noticed an integration failure." +msgstr "Notamos uma falha de integração." + +#: admin/admin.php:4134 +msgid "The entry was saved, but we could not send it to a connected service." +msgstr "A entrada foi salva, mas não conseguimos enviá-la para um serviço conectado." + +#: admin/admin.php:4158 +msgid "View details" +msgstr "Ver detalhes" + +#: admin/admin.php:4212 +msgid "Caching can show visitors an old copy of your form, or load its scripts in the wrong order." +msgstr "O cache pode mostrar aos visitantes uma cópia antiga do seu formulário ou carregar seus scripts na ordem errada." + +#: admin/admin.php:5005 +msgid "Older entries were left out to keep this excerpt readable. The full log can be downloaded from SureForms → Settings → General." +msgstr "Entradas mais antigas foram deixadas de fora para manter este trecho legível. O log completo pode ser baixado de SureForms → Configurações → Geral." + +#. translators: %s: site host. +#: admin/admin.php:5034 +msgid "SureForms has recorded form submissions on %s that could not be completed." +msgstr "SureForms registrou envios de formulário em %s que não puderam ser concluídos." + +#. translators: %s: site host. +#: admin/admin.php:5038 +msgid "SureForms: notification emails are not being sent on %s" +msgstr "SureForms: e-mails de notificação não estão sendo enviados em %s" + +#. translators: %s: site host. +#: admin/admin.php:5040 +msgid "SureForms saved entries on %s but could not send the notification emails for them." +msgstr "SureForms salvou entradas em %s, mas não conseguiu enviar os e-mails de notificação para elas." + +#. translators: %s: site host. +#: admin/admin.php:5044 +msgid "SureForms: an integration is not receiving entries on %s" +msgstr "SureForms: uma integração não está recebendo entradas em %s" + +#. translators: %s: site host. +#: admin/admin.php:5046 +msgid "SureForms saved entries on %s but could not pass them to a connected service." +msgstr "SureForms salvou entradas em %s, mas não conseguiu passá-las para um serviço conectado." + +#. translators: %s: site host. +#: admin/admin.php:5056 +msgid "SureForms: a problem with the forms on %s" +msgstr "SureForms: um problema com os formulários em %s" + +#. translators: %s: site host. +#: admin/admin.php:5058 +msgid "SureForms has recorded a problem with the forms on %s." +msgstr "SureForms registrou um problema com os formulários em %s." + +#. translators: %d: number of failed submissions. +#: admin/admin.php:5083 +msgid "SureForms has recorded %d form submission that could not be completed." +msgid_plural "SureForms has recorded %d form submissions that could not be completed." +msgstr[0] "SureForms registrou %d envio de formulário que não pôde ser concluído." +msgstr[1] "" + +#. translators: %d: number of failed notifications. +#: admin/admin.php:5095 +msgid "SureForms saved %d entry but could not send the notification email for it." +msgid_plural "SureForms saved %d entries but could not send the notification emails for them." +msgstr[0] "SureForms salvou %d entrada, mas não conseguiu enviar o e-mail de notificação para ela." +msgstr[1] "" + +#. translators: %d: number of failed integration hand-offs. +#: admin/admin.php:5107 +msgid "SureForms saved %d entry but could not pass it to a connected service." +msgid_plural "SureForms saved %d entries but could not pass them to a connected service." +msgstr[0] "SureForms salvou %d entrada, mas não conseguiu passá-la para um serviço conectado." +msgstr[1] "" + +#. translators: %d: number of recorded problems. +#: admin/admin.php:5119 +msgid "SureForms has recorded %d problem with the forms on this site." +msgid_plural "SureForms has recorded %d problems with the forms on this site." +msgstr[0] "SureForms registrou %d problema com os formulários neste site." +msgstr[1] "" + +#. translators: %s: form title. +#: admin/admin.php:5169 +msgid "Form: %s" +msgstr "Formulário: %s" + +#: admin/admin.php:5189 +msgid "none recorded" +msgstr "nenhum registrado" + +#. translators: %s: date and time of the previous report, in the site's timezone. +#: admin/admin.php:5212 +msgid "Previously reported: %s" +msgstr "Relatado anteriormente: %s" + +#: assets/build/settings.js:172 +msgid "Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures." +msgstr "Visualizações e envios por qualquer pessoa que possa editar o site normalmente são deixados de fora, para que testar seus próprios formulários não altere esses números." + #: inc/post-types.php:265 msgctxt "post type general name" msgid "Forms" diff --git a/languages/sureforms.pot b/languages/sureforms.pot index 97fa5f208..fee8658ee 100644 --- a/languages/sureforms.pot +++ b/languages/sureforms.pot @@ -2,14 +2,14 @@ # This file is distributed under the GPLv2 or later. msgid "" msgstr "" -"Project-Id-Version: SureForms 2.12.6\n" +"Project-Id-Version: SureForms 2.12.7\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/sureforms\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-09-01T12:14:35+00:00\n" +"POT-Creation-Date: 2026-09-11T10:50:43+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.11.0\n" "X-Domain: sureforms\n" @@ -17,9 +17,9 @@ msgstr "" #. Plugin Name of the plugin #. Author of the plugin #: sureforms.php -#: admin/admin.php:1152 -#: admin/admin.php:1153 -#: admin/admin.php:3021 +#: admin/admin.php:1198 +#: admin/admin.php:1199 +#: admin/admin.php:3185 #: inc/abilities/abilities-registrar.php:139 #: inc/gutenberg-hooks.php:109 #: inc/page-builders/bricks/elements/form-widget.php:67 @@ -46,63 +46,63 @@ msgstr "" msgid "https://sureforms.com/" msgstr "" -#: admin/admin.php:552 +#: admin/admin.php:598 msgid "You are not allowed to update this prompt." msgstr "" -#: admin/admin.php:595 +#: admin/admin.php:641 msgid "Finish setting up your form" msgstr "" -#: admin/admin.php:627 +#: admin/admin.php:673 msgid "Review or edit your form" msgstr "" -#: admin/admin.php:628 -#: admin/admin.php:3907 +#: admin/admin.php:674 +#: admin/admin.php:4515 msgid "Edit form" msgstr "" -#: admin/admin.php:633 +#: admin/admin.php:679 msgid "Personalize the Thank You message" msgstr "" -#: admin/admin.php:634 +#: admin/admin.php:680 msgid "Edit message" msgstr "" -#: admin/admin.php:639 +#: admin/admin.php:685 msgid "Choose who gets notified of new replies" msgstr "" -#: admin/admin.php:640 +#: admin/admin.php:686 msgid "Set up email" msgstr "" -#: admin/admin.php:648 +#: admin/admin.php:694 msgid "your form" msgstr "" #. translators: %s: form title. -#: admin/admin.php:651 +#: admin/admin.php:697 msgid "Finish setting up %s" msgstr "" #. translators: %s: form title. -#: admin/admin.php:659 +#: admin/admin.php:705 msgid "View %s (opens in a new tab)" msgstr "" -#: admin/admin.php:664 +#: admin/admin.php:710 msgid "Customize your form to get it ready for real submissions:" msgstr "" -#: admin/admin.php:1075 +#: admin/admin.php:1121 msgid "Get SureForms Pro" msgstr "" -#: admin/admin.php:1165 -#: admin/admin.php:1166 +#: admin/admin.php:1211 +#: admin/admin.php:1212 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -117,9 +117,9 @@ msgstr "" msgid "Dashboard" msgstr "" -#: admin/admin.php:1183 -#: admin/admin.php:1184 -#: admin/admin.php:1616 +#: admin/admin.php:1229 +#: admin/admin.php:1230 +#: admin/admin.php:1662 #: inc/compatibility/multilingual/string-collector.php:236 #: inc/compatibility/multilingual/string-collector.php:245 #: inc/compatibility/multilingual/string-collector.php:313 @@ -137,9 +137,9 @@ msgstr "" msgid "Settings" msgstr "" -#: admin/admin.php:1236 -#: admin/admin.php:1237 -#: admin/admin.php:4129 +#: admin/admin.php:1282 +#: admin/admin.php:1283 +#: admin/admin.php:4737 #: assets/build/blocks.js:172 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -147,42 +147,42 @@ msgstr "" msgid "Upgrade" msgstr "" -#: admin/admin.php:1252 +#: admin/admin.php:1298 msgid "Quiz Entries" msgstr "" -#: admin/admin.php:1253 -#: admin/admin.php:1851 +#: admin/admin.php:1299 +#: admin/admin.php:1905 #: assets/build/formEditor.js:172 msgid "Quizzes" msgstr "" -#: admin/admin.php:1255 -#: admin/admin.php:1288 -#: admin/admin.php:1321 +#: admin/admin.php:1301 +#: admin/admin.php:1334 +#: admin/admin.php:1367 #: assets/build/settings.js:172 msgid "New" msgstr "" -#: admin/admin.php:1285 -#: admin/admin.php:1286 -#: admin/admin.php:1856 +#: admin/admin.php:1331 +#: admin/admin.php:1332 +#: admin/admin.php:1910 msgid "Survey Reports" msgstr "" -#: admin/admin.php:1318 -#: admin/admin.php:1319 -#: admin/admin.php:1861 +#: admin/admin.php:1364 +#: admin/admin.php:1365 +#: admin/admin.php:1915 msgid "Partial Entries" msgstr "" -#: admin/admin.php:1351 -#: admin/admin.php:1352 +#: admin/admin.php:1397 +#: admin/admin.php:1398 msgid "SMTP" msgstr "" -#: admin/admin.php:1414 -#: admin/admin.php:1415 +#: admin/admin.php:1460 +#: admin/admin.php:1461 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -196,8 +196,8 @@ msgstr "" msgid "Learn" msgstr "" -#: admin/admin.php:1443 -#: admin/admin.php:1444 +#: admin/admin.php:1489 +#: admin/admin.php:1490 #: inc/post-types.php:274 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 @@ -212,15 +212,15 @@ msgstr "" msgid "Forms" msgstr "" -#: admin/admin.php:1452 -#: admin/admin.php:1453 +#: admin/admin.php:1498 +#: admin/admin.php:1499 #: inc/post-types.php:270 msgid "New Form" msgstr "" -#: admin/admin.php:1461 -#: admin/admin.php:1462 -#: admin/admin.php:3340 +#: admin/admin.php:1507 +#: admin/admin.php:1508 +#: admin/admin.php:3504 #: inc/generate-form-markup.php:211 #: inc/generate-form-markup.php:224 #: inc/global-settings/email-summary.php:225 @@ -237,8 +237,8 @@ msgstr "" msgid "Entries" msgstr "" -#: admin/admin.php:1471 -#: admin/admin.php:1472 +#: admin/admin.php:1517 +#: admin/admin.php:1518 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/forms.js:172 @@ -253,15 +253,15 @@ msgid "Payments" msgstr "" #. Translators: Post Title. -#: admin/admin.php:1704 +#: admin/admin.php:1750 msgid "Edit %1$s" msgstr "" -#: admin/admin.php:1780 +#: admin/admin.php:1834 msgid "Activating..." msgstr "" -#: admin/admin.php:1781 +#: admin/admin.php:1835 #: assets/build/dashboard.js:172 #: assets/build/entries.js:172 #: assets/build/formEditor.js:172 @@ -276,117 +276,141 @@ msgstr "" msgid "Activated" msgstr "" -#: admin/admin.php:1782 +#: admin/admin.php:1836 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Activate" msgstr "" -#: admin/admin.php:1783 +#: admin/admin.php:1837 msgid "Installing..." msgstr "" -#: admin/admin.php:1784 +#: admin/admin.php:1838 msgid "Installed" msgstr "" #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version. -#: admin/admin.php:2281 +#: admin/admin.php:2335 msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version." msgstr "" -#: admin/admin.php:2294 +#: admin/admin.php:2348 msgid "Update Now" msgstr "" -#: admin/admin.php:2341 -#: admin/admin.php:2430 +#: admin/admin.php:2395 +#: admin/admin.php:2484 msgid "Your SureForms database is up to date. New form entries will be saved as usual." msgstr "" -#: admin/admin.php:2355 -#: admin/admin.php:2439 +#: admin/admin.php:2409 +#: admin/admin.php:2493 #: inc/rest-api.php:1447 msgid "SureForms could not finish updating the database. Your hosting may not allow SureForms to create database tables — please contact your hosting provider or SureForms support." msgstr "" -#: admin/admin.php:2358 +#: admin/admin.php:2412 msgid "Contact support" msgstr "" -#: admin/admin.php:2378 +#: admin/admin.php:2432 msgid "Database update needed" msgstr "" -#: admin/admin.php:2384 +#: admin/admin.php:2438 msgid "Fix now" msgstr "" -#: admin/admin.php:2453 +#: admin/admin.php:2507 msgid "SureForms — database update needed" msgstr "" -#: admin/admin.php:2458 +#: admin/admin.php:2512 msgid "Update database" msgstr "" -#: admin/admin.php:2478 +#: admin/admin.php:2532 msgid "You do not have permission to update the database." msgstr "" #. translators: %1$s: Opening anchor tag with URL, %2$s: Closing anchor tag, %3$s: SureForms Pro Plugin Name. -#: admin/admin.php:2572 +#: admin/admin.php:2626 msgid "Please %1$sactivate%2$s your copy of %3$s to get new features, access support, receive update notifications, and more." msgstr "" #. translators: %1$s: SureForms version, %2$s: SureForms Pro Plugin Name, %3$s: SureForms Pro Version, %4$s: Anchor tag open, %5$s: Closing anchor tag. -#: admin/admin.php:2590 +#: admin/admin.php:2644 msgid "SureForms %1$s requires minimum %2$s %3$s to work properly. Please update to the latest version from %4$shere%5$s." msgstr "" -#: admin/admin.php:2635 +#: admin/admin.php:2689 msgid "Amazing! SureForms is powering your forms and submissions - let's keep growing together!" msgstr "" -#: admin/admin.php:2636 +#: admin/admin.php:2690 msgid "If SureForms has been helpful, would you mind taking a moment to leave a 5-star review on WordPress.org?" msgstr "" -#: admin/admin.php:2639 +#: admin/admin.php:2693 msgid "Rate SureForms" msgstr "" -#: admin/admin.php:2647 -#: admin/admin.php:2711 +#: admin/admin.php:2701 +#: admin/admin.php:2765 msgid "Maybe later" msgstr "" -#: admin/admin.php:2653 +#: admin/admin.php:2707 msgid "I already did" msgstr "" -#: admin/admin.php:2702 +#: admin/admin.php:2756 msgid "SureForms is ready to power your forms — explore what's possible!" msgstr "" -#: admin/admin.php:2703 +#: admin/admin.php:2757 msgid "Manage your forms, track submissions, and discover features like AI Form Builder, payment integrations, and more from the SureForms dashboard." msgstr "" -#: admin/admin.php:2706 +#: admin/admin.php:2760 msgid "Go to Dashboard" msgstr "" -#: admin/admin.php:2717 +#: admin/admin.php:2771 msgid "I already know" msgstr "" -#: admin/admin.php:2784 -#: admin/admin.php:2912 -#: admin/admin.php:2950 -#: admin/admin.php:2971 -#: admin/admin.php:3294 -#: admin/admin.php:3601 +#: admin/admin.php:2831 +msgid "Previous notice" +msgstr "" + +#: admin/admin.php:2832 +msgid "Next notice" +msgstr "" + +#. translators: 1: current position, 2: total notices. +#: admin/admin.php:2834 +msgid "%1$d of %2$d" +msgstr "" + +#: admin/admin.php:2869 +#: admin/admin.php:2922 +#: admin/admin.php:3072 +#: admin/admin.php:3110 +#: admin/admin.php:3131 +#: admin/admin.php:3462 +#: admin/admin.php:3842 +msgid "Unauthorized user." +msgstr "" + +#: admin/admin.php:2874 +#: admin/admin.php:2917 +#: admin/admin.php:3076 +#: admin/admin.php:3114 +#: admin/admin.php:3135 +#: admin/admin.php:3458 +#: admin/admin.php:3847 #: inc/admin-ajax.php:164 #: inc/payments/admin/admin-handler.php:638 #: inc/payments/stripe/admin-stripe-handler.php:80 @@ -394,230 +418,371 @@ msgstr "" msgid "Invalid nonce." msgstr "" -#: admin/admin.php:2789 -#: admin/admin.php:2908 -#: admin/admin.php:2946 -#: admin/admin.php:2967 -#: admin/admin.php:3298 -#: admin/admin.php:3596 -msgid "Unauthorized user." +#: admin/admin.php:2891 +msgid "Nothing to report." msgstr "" -#: admin/admin.php:2833 -#: admin/admin.php:3608 +#: admin/admin.php:2981 +#: admin/admin.php:3854 msgid "Invalid parameters." msgstr "" #. translators: 1: opening span, 2: opening strong (inline), 3: closing strong, 4: closing span, 5: opening strong (block), 6: closing strong -#: admin/admin.php:2917 +#: admin/admin.php:3081 msgid "%1$sGet started by %2$sbuilding your first form%3$s.%4$s%5$sExperience the power of our intuitive AI Form Builder%6$s" msgstr "" -#: admin/admin.php:2928 +#: admin/admin.php:3092 msgid "SureForms is waiting for you!" msgstr "" -#: admin/admin.php:2930 +#: admin/admin.php:3094 msgid "Build My First Form" msgstr "" -#: admin/admin.php:2931 -#: admin/admin.php:3418 +#: admin/admin.php:3095 +#: admin/admin.php:3650 msgid "Dismiss" msgstr "" -#: admin/admin.php:3039 +#: admin/admin.php:3203 msgid "SureForms AI Quick Draft" msgstr "" -#: admin/admin.php:3058 +#: admin/admin.php:3222 msgid "Describe the form and let SureForms AI generate it for you." msgstr "" -#: admin/admin.php:3061 +#: admin/admin.php:3225 msgid "Describe your form" msgstr "" -#: admin/admin.php:3068 +#: admin/admin.php:3232 msgid "Example: Create a contact form with name, email, phone, and message fields." msgstr "" -#: admin/admin.php:3072 +#: admin/admin.php:3236 #: inc/page-builders/elementor/form-widget.php:346 #: assets/build/dashboard.js:2 msgid "Create New Form" msgstr "" -#: admin/admin.php:3109 +#: admin/admin.php:3273 msgid "Redirecting..." msgstr "" -#: admin/admin.php:3327 +#: admin/admin.php:3491 msgid "Recent Entries" msgstr "" -#: admin/admin.php:3328 +#: admin/admin.php:3492 msgid "( Last 7 days )" msgstr "" -#: admin/admin.php:3331 +#: admin/admin.php:3495 msgid "View" msgstr "" -#: admin/admin.php:3339 +#: admin/admin.php:3503 #: inc/global-settings/email-summary.php:224 #: assets/build/entries.js:172 #: assets/build/payments.js:172 msgid "Form Name" msgstr "" -#: admin/admin.php:3437 +#: admin/admin.php:3669 msgid "You do not have permission to do this." msgstr "" -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:3507 -msgid "%d form submission in a row could not be completed." -msgid_plural "%d form submissions in a row could not be completed." -msgstr[0] "" -msgstr[1] "" +#: admin/admin.php:4057 +#: assets/build/dashboard.js:172 +msgid "Details" +msgstr "" -#: admin/admin.php:3515 -msgid "Visitors may be unable to reach you, and those entries were not saved." +#: admin/admin.php:4058 +msgid "What we recorded about this problem. Copy it into your support request so we can start from the cause rather than a description of it." msgstr "" -#: admin/admin.php:3516 +#: admin/admin.php:4059 +#: assets/build/dashboard.js:172 +msgid "Copy details" +msgstr "" + +#: admin/admin.php:4060 +#: assets/build/dashboard.js:172 +msgid "Copied" +msgstr "" + +#: admin/admin.php:4061 +#: assets/build/dashboard.js:172 #: assets/build/templatePicker.js:172 msgid "Contact Support" msgstr "" -#: admin/admin.php:3525 -msgid "Form submissions are completing normally." +#: admin/admin.php:4062 +#: assets/build/blocks.js:172 +#: assets/build/dashboard.js:172 +#: modules/gutenberg/build/blocks.js:4 +msgid "Close" msgstr "" -#: admin/admin.php:3539 -msgid "No caching plugin that needs configuring was found." +#: admin/admin.php:4068 +msgid "Copy the details first, so you have them to paste." msgstr "" -#. translators: %s: caching plugin name. -#: admin/admin.php:3551 -msgid "%s may interfere with your forms." +#: admin/admin.php:4072 +msgid "Copied. Contact Support is now available." +msgstr "" + +#: admin/admin.php:4073 +msgid "Your browser would not let us copy. Select the text above and copy it by hand." +msgstr "" + +#: admin/admin.php:4076 +msgid "Recorded diagnostics" +msgstr "" + +#: admin/admin.php:4080 +msgid "Collecting the details…" msgstr "" -#: admin/admin.php:3554 -msgid "Caching and JavaScript optimisation can serve a stale copy of your form or load its scripts out of order." +#: admin/admin.php:4081 +msgid "We could not collect the details. Contact Support and describe what happened, and we will take it from there." msgstr "" -#: admin/admin.php:3555 +#. translators: %s: form title. +#: admin/admin.php:4108 +msgid "We noticed a form submission failure on %s." +msgstr "" + +#: admin/admin.php:4109 +msgid "We noticed a form submission failure." +msgstr "" + +#: admin/admin.php:4110 +msgid "Visitors may not be able to reach you, and their entries were not saved." +msgstr "" + +#. translators: %s: form title. +#: admin/admin.php:4115 +msgid "We noticed a notification failure on %s." +msgstr "" + +#: admin/admin.php:4116 +msgid "We noticed a notification failure." +msgstr "" + +#: admin/admin.php:4117 +msgid "The entry was saved, but we could not send the email about it. New entries may be coming in without you knowing." +msgstr "" + +#. translators: %s: form title. +#: admin/admin.php:4132 +msgid "We noticed an integration failure on %s." +msgstr "" + +#: admin/admin.php:4133 +msgid "We noticed an integration failure." +msgstr "" + +#: admin/admin.php:4134 +msgid "The entry was saved, but we could not send it to a connected service." +msgstr "" + +#: admin/admin.php:4158 +msgid "View details" +msgstr "" + +#: admin/admin.php:4185 +#: admin/admin.php:4213 msgid "Help Me Fix" msgstr "" -#: admin/admin.php:3650 +#. translators: %s: caching plugin name. +#: admin/admin.php:4209 +msgid "%s may interfere with your forms." +msgstr "" + +#: admin/admin.php:4212 +msgid "Caching can show visitors an old copy of your form, or load its scripts in the wrong order." +msgstr "" + +#: admin/admin.php:4258 msgid "SureForms found your form entries stored under a different database table prefix. Reconnecting them takes a moment, and your existing entries will be kept." msgstr "" -#: admin/admin.php:3653 +#: admin/admin.php:4261 msgid "SureForms needs to update your database before it can save new form entries. This only takes a moment and will not change your forms or existing content. Entries submitted before now cannot be recovered from here." msgstr "" -#: admin/admin.php:3896 +#: admin/admin.php:4504 msgid "We’ve already created this form for you. Finish customising it so it’s ready to collect real submissions." msgstr "" #. translators: %s: form name. -#: admin/admin.php:3901 +#: admin/admin.php:4509 msgid "Finish setting up “%s”" msgstr "" -#: admin/admin.php:3914 +#: admin/admin.php:4522 msgid "Edit the Thank You message" msgstr "" -#: admin/admin.php:3920 +#: admin/admin.php:4528 msgid "Set where replies go" msgstr "" -#: admin/admin.php:4070 +#: admin/admin.php:4678 msgid "Use Conditional Logic to show only what matters" msgstr "" -#: admin/admin.php:4071 +#: admin/admin.php:4679 msgid "Split your form into steps to keep it easy" msgstr "" -#: admin/admin.php:4072 +#: admin/admin.php:4680 msgid "Let people upload files directly to your form" msgstr "" -#: admin/admin.php:4073 +#: admin/admin.php:4681 msgid "Turn responses into downloadable PDFs automatically" msgstr "" -#: admin/admin.php:4074 +#: admin/admin.php:4682 msgid "Let users sign with a simple signature field" msgstr "" -#: admin/admin.php:4075 +#: admin/admin.php:4683 msgid "Connect your form to other tools using webhooks" msgstr "" -#: admin/admin.php:4076 +#: admin/admin.php:4684 msgid "Use Conversational Forms for a chat-like experience" msgstr "" -#: admin/admin.php:4077 +#: admin/admin.php:4685 msgid "Let users register or log in through your form" msgstr "" -#: admin/admin.php:4078 +#: admin/admin.php:4686 msgid "Build forms that create WordPress user accounts" msgstr "" -#: admin/admin.php:4079 +#: admin/admin.php:4687 msgid "Add calculations to auto-total scores or prices" msgstr "" +#: admin/admin.php:4990 +msgid "Debug log: no entries recorded." +msgstr "" + +#. translators: 1: entries shown, 2: entries recorded. +#: admin/admin.php:4995 +msgid "Debug log (most recent %1$d of %2$d entries)" +msgstr "" + +#: admin/admin.php:5005 +msgid "Older entries were left out to keep this excerpt readable. The full log can be downloaded from SureForms → Settings → General." +msgstr "" + #. translators: %s: site host. -#: admin/admin.php:4265 +#: admin/admin.php:5032 msgid "SureForms: form submissions are failing on %s" msgstr "" -#: admin/admin.php:4274 -msgid "Debug log: no entries recorded." +#. translators: %s: site host. +#: admin/admin.php:5034 +msgid "SureForms has recorded form submissions on %s that could not be completed." msgstr "" -#. translators: 1: entries shown, 2: entries recorded. -#: admin/admin.php:4278 -msgid "Debug log (most recent %1$d of %2$d entries)" +#. translators: %s: site host. +#: admin/admin.php:5038 +msgid "SureForms: notification emails are not being sent on %s" msgstr "" -#: admin/admin.php:4288 -msgid "Older entries were left out to keep this email within the length a mail client accepts. The full log can be downloaded from SureForms → Settings → General." +#. translators: %s: site host. +#: admin/admin.php:5040 +msgid "SureForms saved entries on %s but could not send the notification emails for them." msgstr "" -#: admin/admin.php:4318 -msgid "Hello SureForms support," +#. translators: %s: site host. +#: admin/admin.php:5044 +msgid "SureForms: an integration is not receiving entries on %s" +msgstr "" + +#. translators: %s: site host. +#: admin/admin.php:5046 +msgid "SureForms saved entries on %s but could not pass them to a connected service." msgstr "" -#. translators: %d: number of consecutive failed submissions. -#: admin/admin.php:4322 -msgid "SureForms has recorded %d form submission in a row that could not be completed." -msgid_plural "SureForms has recorded %d form submissions in a row that could not be completed." +#. translators: %s: site host. +#: admin/admin.php:5056 +msgid "SureForms: a problem with the forms on %s" +msgstr "" + +#. translators: %s: site host. +#: admin/admin.php:5058 +msgid "SureForms has recorded a problem with the forms on %s." +msgstr "" + +#. translators: %d: number of failed submissions. +#: admin/admin.php:5083 +msgid "SureForms has recorded %d form submission that could not be completed." +msgid_plural "SureForms has recorded %d form submissions that could not be completed." +msgstr[0] "" +msgstr[1] "" + +#. translators: %d: number of failed notifications. +#: admin/admin.php:5095 +msgid "SureForms saved %d entry but could not send the notification email for it." +msgid_plural "SureForms saved %d entries but could not send the notification emails for them." msgstr[0] "" msgstr[1] "" -#: admin/admin.php:4332 +#. translators: %d: number of failed integration hand-offs. +#: admin/admin.php:5107 +msgid "SureForms saved %d entry but could not pass it to a connected service." +msgid_plural "SureForms saved %d entries but could not pass them to a connected service." +msgstr[0] "" +msgstr[1] "" + +#. translators: %d: number of recorded problems. +#: admin/admin.php:5119 +msgid "SureForms has recorded %d problem with the forms on this site." +msgid_plural "SureForms has recorded %d problems with the forms on this site." +msgstr[0] "" +msgstr[1] "" + +#: admin/admin.php:5158 +msgid "Hello SureForms support," +msgstr "" + +#. translators: %s: form title. +#: admin/admin.php:5169 +msgid "Form: %s" +msgstr "" + +#: admin/admin.php:5182 msgid "Site details" msgstr "" -#: admin/admin.php:4335 +#: admin/admin.php:5185 msgid "not active" msgstr "" -#: admin/admin.php:4338 +#: admin/admin.php:5188 msgid "none detected" msgstr "" +#: admin/admin.php:5189 +msgid "none recorded" +msgstr "" + +#. translators: %s: date and time of the previous report, in the site's timezone. +#: admin/admin.php:5212 +msgid "Previously reported: %s" +msgstr "" + #: inc/abilities/abilities-registrar.php:107 msgid "SureForms MCP Server" msgstr "" @@ -1188,7 +1353,7 @@ msgid "OttoKit is not configured properly." msgstr "" #: inc/admin-ajax.php:184 -#: inc/form-submit.php:1153 +#: inc/form-submit.php:1261 msgid "Invalid form ID." msgstr "" @@ -1323,10 +1488,10 @@ msgid "You are not allowed to convert HTML forms." msgstr "" #: inc/admin/html-form-detector.php:268 -#: inc/form-submit.php:197 -#: inc/form-submit.php:503 -#: inc/form-submit.php:548 -#: inc/form-submit.php:1149 +#: inc/form-submit.php:247 +#: inc/form-submit.php:553 +#: inc/form-submit.php:598 +#: inc/form-submit.php:1257 #: inc/migrator/bootstrap.php:357 #: inc/payments/front-end.php:79 #: inc/payments/front-end.php:265 @@ -1379,7 +1544,7 @@ msgstr "" #: inc/duplicate-form.php:191 #: inc/export.php:126 #: inc/export.php:184 -#: inc/forms-data.php:88 +#: inc/forms-data.php:108 #: inc/global-settings/global-settings.php:89 #: inc/global-settings/global-settings.php:639 #: inc/rest-api.php:203 @@ -1886,24 +2051,24 @@ msgstr "" msgid "Unable to import form." msgstr "" -#: inc/field-validation.php:413 +#: inc/field-validation.php:452 msgid "Field is not valid." msgstr "" #. translators: %s represents the minimum number of characters required -#: inc/field-validation.php:426 +#: inc/field-validation.php:465 #: inc/translatable.php:94 msgid "Please enter at least %s characters." msgstr "" #. translators: %s: maximum characters allowed before the @ symbol. -#: inc/field-validation.php:448 +#: inc/field-validation.php:487 #: inc/translatable.php:97 msgid "The part before @ may not exceed %s characters." msgstr "" #. translators: %s: maximum characters allowed after the @ symbol. -#: inc/field-validation.php:454 +#: inc/field-validation.php:493 #: inc/translatable.php:100 msgid "The part after @ may not exceed %s characters." msgstr "" @@ -2042,11 +2207,11 @@ msgstr "" msgid "This form is no longer accepting submissions. The submission period has ended." msgstr "" -#: inc/form-submit.php:118 +#: inc/form-submit.php:163 msgid "Not found." msgstr "" -#: inc/form-submit.php:129 +#: inc/form-submit.php:174 #: inc/form-views.php:205 #: inc/payments/admin/admin-handler.php:99 #: inc/payments/admin/admin-handler.php:183 @@ -2059,133 +2224,133 @@ msgstr "" msgid "Security verification failed." msgstr "" -#: inc/form-submit.php:213 +#: inc/form-submit.php:263 msgid "Sorry, you do not have permission to access this resource." msgstr "" -#: inc/form-submit.php:231 +#: inc/form-submit.php:281 msgid "Cloudflare Turnstile secret key is invalid." msgstr "" -#: inc/form-submit.php:238 +#: inc/form-submit.php:288 msgid "Cloudflare Turnstile response is missing." msgstr "" -#: inc/form-submit.php:282 +#: inc/form-submit.php:332 msgid "hCaptcha secret key is invalid." msgstr "" -#: inc/form-submit.php:289 +#: inc/form-submit.php:339 msgid "hCaptcha response is missing." msgstr "" -#: inc/form-submit.php:330 -#: inc/form-submit.php:589 +#: inc/form-submit.php:380 +#: inc/form-submit.php:639 msgid "Form data is not found." msgstr "" -#: inc/form-submit.php:336 +#: inc/form-submit.php:386 msgid "Form ID is missing." msgstr "" -#: inc/form-submit.php:368 +#: inc/form-submit.php:418 msgid "You do not have permission to submit this form." msgstr "" -#: inc/form-submit.php:378 +#: inc/form-submit.php:428 msgid "This form is no longer available." msgstr "" -#: inc/form-submit.php:396 +#: inc/form-submit.php:446 msgid "Please check the form for errors." msgstr "" -#: inc/form-submit.php:523 -#: inc/form-submit.php:564 +#: inc/form-submit.php:573 +#: inc/form-submit.php:614 msgid "Your submission was flagged as spam. Please try again." msgstr "" -#: inc/form-submit.php:582 +#: inc/form-submit.php:632 msgid "Form data was not found." msgstr "" -#: inc/form-submit.php:818 +#: inc/form-submit.php:868 msgid "Unable to submit form. Please try again." msgstr "" -#: inc/form-submit.php:990 +#: inc/form-submit.php:1046 msgid "Email notification passed to the sending server" msgstr "" #. translators: Here, %s is the comma separated emails list. -#: inc/form-submit.php:1063 +#: inc/form-submit.php:1130 msgid "Email notification recipient: %s" msgstr "" -#: inc/form-submit.php:1070 +#: inc/form-submit.php:1137 msgid "No SMTP plugin detected. Please configure an SMTP plugin to enable email sending." msgstr "" -#: inc/form-submit.php:1071 +#: inc/form-submit.php:1138 msgid "Email sending failed for an unknown reason." msgstr "" #. translators: Here, %1$s is the comma separated emails list and %2$s is error report ( if any ). -#: inc/form-submit.php:1080 +#: inc/form-submit.php:1147 msgid "Email server was unable to send the email notification. Recipient: %1$s. Reason: %2$s" msgstr "" -#: inc/form-submit.php:1124 +#: inc/form-submit.php:1201 msgid "No emails were sent." msgstr "" -#: inc/form-submit.php:1158 +#: inc/form-submit.php:1266 msgid "Invalid form." msgstr "" -#: inc/form-submit.php:1163 +#: inc/form-submit.php:1271 msgid "Too many requests. Please try again shortly." msgstr "" -#: inc/form-submit.php:1288 +#: inc/form-submit.php:1396 msgid "Captcha validation failed. No error code provided." msgstr "" -#: inc/form-submit.php:1289 +#: inc/form-submit.php:1397 msgid "Captcha validation failed." msgstr "" -#: inc/form-submit.php:1344 +#: inc/form-submit.php:1452 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "Google reCAPTCHA" msgstr "" -#: inc/form-submit.php:1348 +#: inc/form-submit.php:1456 #: assets/build/formEditor.js:172 #: assets/build/settings.js:172 msgid "hCaptcha" msgstr "" -#: inc/form-submit.php:1352 +#: inc/form-submit.php:1460 #: assets/build/settings.js:172 msgid "Cloudflare Turnstile" msgstr "" -#: inc/form-submit.php:1356 +#: inc/form-submit.php:1464 msgid "Unknown Captcha" msgstr "" -#: inc/form-submit.php:1357 +#: inc/form-submit.php:1465 msgid "Invalid captcha type." msgstr "" #. translators: %s is the captcha title. -#: inc/form-submit.php:1370 +#: inc/form-submit.php:1478 msgid "%s verification failed. Please contact your site administrator." msgstr "" -#: inc/forms-data.php:68 +#: inc/forms-data.php:88 msgid "Sorry, you are not allowed to view the form." msgstr "" @@ -2596,7 +2761,7 @@ msgstr "" msgid "You do not have permission to perform this action." msgstr "" -#: inc/helper.php:2375 +#: inc/helper.php:2368 msgid "Blank Form" msgstr "" @@ -13096,11 +13261,6 @@ msgstr "" msgid "Upgrade to Unlock" msgstr "" -#: assets/build/blocks.js:172 -#: modules/gutenberg/build/blocks.js:4 -msgid "Close" -msgstr "" - #: assets/build/blocks.js:172 #: assets/build/formEditor.js:172 #: modules/gutenberg/build/blocks.js:6 @@ -14457,10 +14617,6 @@ msgstr "" msgid "SureForms %s" msgstr "" -#: assets/build/dashboard.js:172 -msgid "Copied" -msgstr "" - #: assets/build/dashboard.js:172 msgid "First name is required." msgstr "" @@ -16502,7 +16658,7 @@ msgid "This form could not be submitted. Please refresh the page and try again." msgstr "" #: assets/build/formSubmit.js:2 -#: assets/js/unminified/form-submit.js:917 +#: assets/js/unminified/form-submit.js:938 msgid "An error occurred while submitting your form. Please try again." msgstr "" @@ -17217,6 +17373,10 @@ msgstr "" msgid "Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns — counting continues, so the figures are up to date if you switch it back on." msgstr "" +#: assets/build/settings.js:172 +msgid "Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures." +msgstr "" + #: assets/build/settings.js:172 msgid "Help shape the future of SureForms" msgstr "" @@ -17270,11 +17430,11 @@ msgid "Form Views & Conversion" msgstr "" #: assets/build/settings.js:172 -msgid "Anonymous Analytics" +msgid "Logs" msgstr "" #: assets/build/settings.js:172 -msgid "Logs" +msgid "Anonymous Analytics" msgstr "" #: assets/build/settings.js:172 diff --git a/package-lock.json b/package-lock.json index a34dc2ae0..9fa5924cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sureforms", - "version": "2.12.6", + "version": "2.12.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sureforms", - "version": "2.12.6", + "version": "2.12.7", "license": "GPL", "dependencies": { "@bsf/force-ui": "git+https://github.com/brainstormforce/bsf-admin-ui#v1.7.7", diff --git a/package.json b/package.json index d57cecb9e..59193eff2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sureforms", - "version": "2.12.6", + "version": "2.12.7", "description": "A simple yet powerful way to add forms to your website.", "main": "index.js", "scripts": { diff --git a/readme.txt b/readme.txt index e05aac30a..6a97559f9 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: forms, ai forms, contact form, form builder, payment form Requires at least: 6.4 Tested up to: 7.1 Requires PHP: 7.4 -Stable tag: 2.12.6 +Stable tag: 2.12.7 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -426,6 +426,15 @@ Visit the [SureForms features page](https://sureforms.com/features/?utm_source=w You can report security issues through our [Bug Bounty Program](https://brainstormforce.com/bug-bounty-program/). We collaborate with Patchstack to validate, triage, and handle security reports. == Changelog == += 2.12.7 - 12th September 2026 = +* Improvement: Submission failure notices now offer View details, so you can read and copy the full diagnostics before contacting support. +* Improvement: The Form Checks panel now appears only when something genuinely needs attention, with clearer wording, keeping the sidebar focused. +* Fix: After-submission actions now complete reliably when a form redirects on success. +* Fix: Form pages now keep their styles and submit script on sites using page builders that buffer page output, such as Breakdance. +* Fix: Form submissions no longer drop fields when a caching plugin serves an older copy of the page, so every submitted field is saved to the entry. +* Fix: The conversion rate no longer counts submissions made by site editors while previewing a form. +* Fix: The Edit Form icon is no longer oversized in Divi. +* Fix: This update addressed a security bug. Props to nh4tvd from Patchstack for reporting it responsibly to our team. = 2.12.6 - 2nd September 2026 = * New: Added an Enable Logs option that records form submission failures to a downloadable file, making it easier to diagnose issues on a live site. * New: Added Views and Conversion Rate columns to the Forms list, so you can see how each form is performing at a glance. @@ -434,9 +443,6 @@ You can report security issues through our [Bug Bounty Program](https://brainsto * Fix: This update addressed a security bug. Props to Patchstack for reporting it responsibly to our team. = 2.12.5 - 25th August 2026 = * Fix: Form submissions now go through reliably, even on sites where a performance plugin combines or defers JavaScript. -= 2.12.4 - 19th August 2026 = -* Improvement: Email notification images are now saved to the Media Library instead of being embedded as base64, improving email deliverability and reducing message size. -* Fix: Compatibility with WordPress 7.1. The full changelog is available [here](https://sureforms.com/whats-new/?utm_source=wordpress.org&utm_medium=whats_new). == Upgrade Notice == \ No newline at end of file diff --git a/src/admin/PartialEntriesEmptyState.js b/src/admin/PartialEntriesEmptyState.js index 8254b8475..3558e1b04 100644 --- a/src/admin/PartialEntriesEmptyState.js +++ b/src/admin/PartialEntriesEmptyState.js @@ -18,7 +18,7 @@ import './tw-base.scss'; const features = [ __( - 'Capture in-progress form data the moment visitors stop typing — no submit required', + 'Capture in-progress form data the moment visitors stop typing, no submit required', 'sureforms' ), __( diff --git a/src/admin/dashboard/ActionItems.js b/src/admin/dashboard/ActionItems.js index 20ce8c231..f4c1fb1b0 100644 --- a/src/admin/dashboard/ActionItems.js +++ b/src/admin/dashboard/ActionItems.js @@ -1,14 +1,29 @@ import { __ } from '@wordpress/i18n'; -import { useState } from '@wordpress/element'; -import { Button, Label } from '@bsf/force-ui'; -import { CircleCheck, TriangleAlert, ChevronUp, ChevronDown } from 'lucide-react'; +import { + useState, + useRef, + useMemo, + useEffect, + useLayoutEffect, +} from '@wordpress/element'; +import { Button, Dialog, Label } from '@bsf/force-ui'; +import { + CircleCheck, + TriangleAlert, + ChevronUp, + ChevronDown, + Check, + Copy, +} from 'lucide-react'; +import safeUrl from './utils/safeUrl'; /** * Dashboard panel listing what SureForms has checked on this site. * - * Follows SureRank's Page Checks: one row per check, warnings first with a fix - * link and an Ignore control, passing checks below as a green tick. Row markup - * mirrors SureRank's CheckCard so the two plugins look like siblings. + * Follows SureRank's Page Checks: one row per problem, with a fix link and, for + * advisory rows, an Ignore control. Row markup mirrors SureRank's CheckCard so + * the two plugins look like siblings. Passing checks are not listed -- a panel + * confirming nothing is wrong is something people learn to skip. * * Rows are supplied fully formed by the server (see Admin::get_action_items()), * so adding a check needs no change here. @@ -29,8 +44,145 @@ const ICONS = { }; export default () => { + // Read here rather than at module scope. Optional chaining does not protect + // against an undeclared identifier, so a bundle enqueued without its localize + // data would throw at module eval and take the whole dashboard down instead of + // just this panel. + const dialogLabels = useMemo( + () => ( typeof srfm_admin === 'undefined' ? {} : srfm_admin?.details_dialog || {} ), + [] + ); + + // Whether copying is possible at all. On a plain-HTTP admin + // navigator.clipboard does not exist, so the copy step cannot be a + // precondition for anything -- see the unlock reasoning in handleCopy. + const canCopy = useMemo( + () => + !! ( + navigator.clipboard && + ( navigator.clipboard.write || navigator.clipboard.writeText ) + ), + [] + ); + const [ dismissed, setDismissed ] = useState( [] ); const [ open, setOpen ] = useState( true ); + // The item whose details are being read, or null. + const [ details, setDetails ] = useState( null ); + const [ copied, setCopied ] = useState( false ); + // Separate from `copied`, which reverts after a couple of seconds so the button + // stops claiming "Copied". This one does not revert: the support form is only + // useful to someone holding the diagnostics, and that stays true after the + // label has gone back. + const [ copiedOnce, setCopiedOnce ] = useState( false ); + // What the hint line says. Doubles as the live region for the unlock, which + // changes the label, the icon and whether Contact Support works at once. + const [ hint, setHint ] = useState( '' ); + + // force-ui's Dialog.Panel renders FloatingOverlay in place in the React tree + // -- FloatingPortal is used only by Dialog.Portal, which Panel does not use. + // Left there, the overlay is a descendant of the Form Checks card inside the + // dashboard's Container nesting, and position:fixed resolves against the + // nearest ancestor establishing a containing block, which is what kept an + // overlay rendered in here from ever appearing. Portalling to + // #srfm-dialog-root rather than document.body matters: tailwind.config.js + // scopes every utility behind an :is() allowlist that includes that id, so + // body would render the dialog with no styling at all. + const [ dialogRoot, setDialogRoot ] = useState( null ); + + useLayoutEffect( () => { + let root = document.getElementById( 'srfm-dialog-root' ); + + if ( ! root ) { + root = document.createElement( 'div' ); + root.id = 'srfm-dialog-root'; + document.body.appendChild( root ); + } + + setDialogRoot( root ); + }, [] ); + + // Dialog.Panel forwards only className, so aria-labelledby cannot be passed to + // the node it puts role="dialog" on. Wired here instead, against the ids set + // on Title and Description below -- without it the dialog has no accessible + // name at all. + const titleId = 'srfm-details-title'; + const descriptionId = 'srfm-details-description'; + + useEffect( () => { + if ( ! details || ! dialogRoot ) { + return; + } + + // Both of them. There are two role="dialog" nodes in the portal, not one: + // force-ui's outer motion div hardcodes it, and floating-ui's useRole() + // puts it on the inner floating element too. querySelector returns the + // outer scroll wrapper, so naming only that left the panel focus is + // actually trapped inside unnamed. Scoped to dialogRoot because that id is + // shared with other dialogs in this codebase. + dialogRoot + .querySelectorAll( '[role="dialog"]' ) + .forEach( ( node ) => { + node.setAttribute( 'aria-labelledby', titleId ); + node.setAttribute( 'aria-describedby', descriptionId ); + } ); + }, [ details, dialogRoot ] ); + + // Initial focus on Copy details rather than whatever FloatingFocusManager + // reaches first, which is the close cross. The ref has to be attached to the + // Button as well as declared -- force-ui's Button is forwardRef and applies it + // to the rendered tag, and without the attribute this was a permanent no-op + // that the optional chaining hid. + const copyRef = useRef( null ); + + useEffect( () => { + if ( ! details ) { + return; + } + + const timer = window.setTimeout( () => copyRef.current?.focus(), 50 ); + + return () => window.clearTimeout( timer ); + }, [ details ] ); + + // Finding 1: force-ui always passes returnFocus to FloatingFocusManager as + // `refs.reference` -- a ref object that always exists, so its `c?.reference` + // guard is always truthy -- whose `.current` is null because no trigger prop + // is used. FloatingFocusManager's getReturnElement() only takes its correct + // `getPreviouslyFocusedElement()` path when returnFocus is a boolean, so + // passing the object defeats the library's own default and every close path + // drops focus to . Restored by hand instead. + const openerRef = useRef( null ); + + useEffect( () => { + if ( details ) { + return; + } + + const opener = openerRef.current; + + if ( ! opener || typeof opener.focus !== 'function' ) { + return; + } + + openerRef.current = null; + + // After the library has finished its own restore attempt on unmount, + // otherwise it lands on the detached fallback span afterwards. + const timer = window.setTimeout( () => opener.focus(), 0 ); + + return () => window.clearTimeout( timer ); + }, [ details ] ); + + // Low: an uncleared label timer crosses itself on two copies inside 2s, and + // leaves a setState pending on a possibly-unmounted tree when the dialog is + // closed inside that window. + const revertRef = useRef( 0 ); + + // Bumped per open and per close; a response carrying a stale token is dropped. + const requestRef = useRef( 0 ); + + useEffect( () => () => window.clearTimeout( revertRef.current ), [] ); const items = ( srfm_admin?.action_items || [] ).filter( ( item ) => ! dismissed.includes( item.id ) @@ -70,14 +222,215 @@ export default () => { setDismissed( ( prev ) => [ ...prev, item.id ] ); }; - // The mailto now carries the log in its body, so the link just works -- no - // download to trigger, nothing to intercept. - const handleFix = ( item ) => () => + // Self-serve first. Someone who can fix it themselves should see that before + // they are pointed at a support queue, and the emphasis follows the order + // rather than the identity -- whichever action leads reads as the primary one, + // so an item with no guide still has Contact Support in front. + const actionsFor = ( item ) => [ + ...( item.guide_label && item.guide_url + ? [ + { + name: item.guide_action, + label: item.guide_label, + url: safeUrl( item.guide_url ), + external: true, + }, + ] + : [] ), + ...( item.cta_label && item.cta_url + ? [ + { + name: item.cta_action, + label: item.cta_label, + url: safeUrl( item.cta_url ), + // An item carrying details opens them here rather than + // navigating: the point is to read the diagnostics before + // sending them anywhere. cta_url stays as the fallback for a + // browser with no JavaScript, which cannot open a dialog. + dialog: !! item.has_details, + // A mailto must reach the mail client, not a browser tab. + // srfm_action_items is public, so one can still arrive that way. + // Matched case-insensitively: a MAILTO: from the filter would + // otherwise get target="_blank" and open a blank tab. + external: ! /^mailto:/i.test( item.cta_url ), + }, + ] + : [] ), + ]; + + const handleCopy = ( item ) => async () => { + const text = item.details || ''; + + try { + // Both flavours. A rich-text composer drops the newlines out of plain + // text, which is what turns the diagnostics into one paragraph; pasting + // HTML keeps every break, and
 keeps the log's columns lined up. A
+			// plain-text field still gets the text.
+			//
+			// Escaped here because the source is a log holding whatever a server put
+			// in an error message. It is never trusted as markup.
+			const html = `
${ text
+				.replace( /&/g, '&' )
+				.replace( //g, '>' ) }
`; + + if ( window.ClipboardItem && navigator.clipboard?.write ) { + await navigator.clipboard.write( [ + new window.ClipboardItem( { + 'text/plain': new Blob( [ text ], { + type: 'text/plain', + } ), + 'text/html': new Blob( [ html ], { + type: 'text/html', + } ), + } ), + ] ); + } else if ( navigator.clipboard?.writeText ) { + // No ClipboardItem: the formatting is lost, which still beats + // copying nothing. + await navigator.clipboard.writeText( text ); + } else { + throw new Error( 'no clipboard' ); + } + + setCopied( true ); + setCopiedOnce( true ); + setHint( dialogLabels.unlocked || '' ); + // Reverts on its own: a button stuck on "Copied" says nothing about the + // next click. + window.clearTimeout( revertRef.current ); + revertRef.current = window.setTimeout( () => setCopied( false ), 2000 ); + + // Reported inside the try, so the event means a copy happened rather + // than a copy was attempted. The classic notice records it the same way. + post( 'srfm_notice_response', srfm_admin?.notice_response_nonce, { + notice_id: item.id, + button: 'copy_details', + } ); + } catch ( e ) { + // Refused outright, or no clipboard API at all. Do not claim it was + // copied -- but do release Contact Support. It is the only route that + // acknowledges the failure, these items are not dismissible, and only a + // submission failure ever clears itself, so keeping it locked behind a + // clipboard that cannot work leaves an undismissable notice with no + // working action. The text is on screen and selectable either way. + setCopied( false ); + setCopiedOnce( true ); + setHint( dialogLabels.copyFailed || '' ); + } + }; + + const closeDetails = () => { + // Invalidates any fetch still in flight, so a slow response cannot refill a + // dialog the user has already closed. + requestRef.current += 1; + setDetails( null ); + }; + + // Fetched on open rather than localised with the page. The diagnostics are + // written through a public REST route, so shipping them in srfm_admin put + // attacker-authored text into every admin screen's HTML whether or not anyone + // opened this dialog. See Admin::handle_action_item_details(). + // + // The dialog opens immediately with a placeholder and fills in when the + // response lands. A surface whose whole job is reporting a failure must not be + // a button that does nothing until the network answers. + const openDetails = ( item ) => { + // Guards against interleaving: open A, close it, open B, and A's response + // would otherwise land in B's dialog. + const token = ++requestRef.current; + + setDetails( { + ...item, + details: dialogLabels.loading || '', + support_url: '', + pending: true, + } ); + + const fail = () => { + // No report to paste, so the copy-first gate has nothing to gate on. + // Contact Support is the only action that retires these notices, and + // they are not dismissible -- leaving it locked would be an + // undismissable notice with no working action on it. + setCopiedOnce( true ); + setHint( '' ); + + setDetails( ( prev ) => + prev + ? { + ...prev, + details: dialogLabels.unavailable || '', + // Untagged fallback: Contact Support is the only action + // that retires these notices, so a failed fetch must not + // take the way out with it. + support_url: srfm_admin?.support_url || '', + pending: false, + failed: true, + } + : prev + ); + }; + + const ajaxUrl = srfm_admin?.ajax_url; + const nonce = srfm_admin?.action_item_details_nonce; + + if ( ! ajaxUrl || ! nonce ) { + fail(); + return; + } + + const body = new FormData(); + body.append( 'action', 'srfm_action_item_details' ); + body.append( 'nonce', nonce ); + body.append( 'category', item.category || '' ); + + fetch( ajaxUrl, { method: 'POST', credentials: 'same-origin', body } ) + .then( ( response ) => response.json() ) + .then( ( json ) => { + if ( ! json?.success || ! json?.data ) { + throw new Error( 'unavailable' ); + } + + if ( token !== requestRef.current ) { + return; + } + + setDetails( ( prev ) => + prev + ? { + ...prev, + details: json.data.details || '', + // Same fallback as the failure path. A successful + // fetch must not end up with less to act on than a + // failed one: these notices are not dismissible and + // Contact Support is the only thing that retires + // them, so an empty destination here is a dead end. + support_url: + json.data.support_url || + srfm_admin?.support_url || + '', + pending: false, + } + : prev + ); + } ) + .catch( () => { + if ( token !== requestRef.current ) { + return; + } + + fail(); + } ); + }; + + // Opens the dialog rather than navigating: the details are read here before + // anything is sent. Nothing to download, nothing to intercept. + const handleFix = ( item, action ) => () => post( 'srfm_notice_response', srfm_admin?.notice_response_nonce, { notice_id: item.id, // Named by the server, so the button key is not duplicated here and in // the allowlist that has to accept it. - button: item.cta_action, + button: action, } ); return ( @@ -104,12 +457,15 @@ export default () => { ) }
+ { /* Same nesting as Quick Access below it: a grey well inside the white + card, holding white rows. The two sit in one column and were + reading as different components. */ } { open && ( -
+
{ items.map( ( item ) => (
{ ICONS[ item.status ] ?? ICONS.warning } @@ -135,36 +491,335 @@ export default () => { variant="link" size="xs" onClick={ handleIgnore( item ) } - className="font-medium focus:outline-none focus:[box-shadow:none] [&>span]:px-0 text-text-secondary shrink-0" + className="font-medium no-underline hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus focus-visible:ring-offset-1 focus:[box-shadow:none] [&>span]:px-0 text-text-secondary shrink-0" > { __( 'Ignore', 'sureforms' ) } ) }
- { !! item.cta_label && ( -
- + { !! actionsFor( item ).length && ( +
+ { actionsFor( item ).map( ( action, index ) => + // A native button for the one that opens the + // dialog. Routed through force-ui's Button it + // followed the href instead -- the same page in + // a new tab -- and a control that navigates is + // the wrong element for something that opens a + // panel in place. + // + // force-ui's Dialog rather than an overlay + // rendered in place. An overlay here is a + // descendant of the panel's Container nesting, + // and position:fixed resolves against the + // nearest ancestor establishing a containing + // block -- which is why one rendered here never + // appeared. Dialog portals out, and brings the + // focus trap, scroll lock and return-focus with + // it. The classic wp-admin notices keep their + // own framework-free dialog, because there is + // no React on those screens; both read their + // strings from the same PHP array. + action.dialog ? ( + + ) : ( + + ) + ) }
) }
) ) }
) } + { /* Read before send: the same text a support request needs, so it can + be pasted rather than described. + + exitOnClickOutside is passed explicitly -- force-ui defaults it to + false, so without it a backdrop click does nothing, where the + classic dialog closes. */ } + { + // The boolean matters: discarding it means a future trigger or + // a library change calling setOpen(true) would close this. + if ( ! next ) { + closeDetails(); + } + } } + > + { !! dialogRoot && ( + + + { /* Wider than force-ui's default w-120: this holds a + diagnostics block and a fenced log, and 480px wraps + almost every line of it. */ } + + +
+ + { dialogLabels.title || + __( 'Details', 'sureforms' ) } + + { /* force-ui hardcodes an untranslated + aria-label="Close dialog"; it sits before the prop + spread, so this overrides it. */ } + +
+ + { dialogLabels.description || '' } + +
+ + { /* Selectable and scrollable: clipboard access can be + refused, and then selecting by hand is the only way + through. tabIndex because Chromium and WebKit do not + make a scroll container focusable on their own, so + without it a keyboard user cannot reach the very thing + the dialog exists to show. */ } +
+									{ details?.details || '' }
+								
+
+ + { /* Visible text, not a title attribute: a title never fires + on keyboard focus and is commonly dropped by screen + readers on an unavailable control, so the sentence + saying why the button is inert could not be read by + anyone. role="status" so the unlock is announced. */ } + +
+ { /* Nothing to copy before the payload lands, and + nothing worth copying if it never did -- an + error message on the clipboard is not a + report. */ } + { ! details?.failed && ( + + ) } + { /* Not rendered at all without a destination. An empty + href resolves to the current document, so the click + would open a duplicate of this page and still + acknowledge the failure -- standing the notice down + without anything having been reported. Reachable + through srfm_action_items for an item carrying + details but no support_url. + + Not an anchor while it is locked either: `disabled` + on an does nothing at all, so the href only + exists once the copy has been made. */ } + { !! safeUrl( details?.support_url ) && + ( copiedOnce ? ( + + ) : ( + + ) ) } +
+ + + + ) } +
); }; diff --git a/src/admin/dashboard/test/safeUrl.test.js b/src/admin/dashboard/test/safeUrl.test.js new file mode 100644 index 000000000..4c020ebe5 --- /dev/null +++ b/src/admin/dashboard/test/safeUrl.test.js @@ -0,0 +1,103 @@ +/* eslint-env jest */ +/** + * safeUrl() is the sink-side scheme guard for Form Checks item URLs. + * + * get_action_items() already runs every URL through esc_url_raw() with a scheme + * allowlist -- but srfm_admin_filter runs afterwards, on the already-built + * localisation payload, and can rewrite these values. React assigns href as a + * property and react-dom 18 leaves a javascript: URL intact, with its warning + * compiled out of production, so the server pass alone is not the last word + * before the value reaches the DOM. + * + * Pinned because the two focus fixes alongside it were both code that read + * correctly and never ran. + */ +import safeUrl from '../utils/safeUrl'; + +describe( 'safeUrl', () => { + it.each( [ + [ 'https://sureforms.com/form/troubleshooting-form/' ], + [ 'http://example.test/page' ], + [ 'HTTPS://EXAMPLE.TEST/page' ], + [ 'mailto:support@sureforms.com?subject=x' ], + [ 'MAILTO:support@sureforms.com' ], + ] )( 'allows %s', ( url ) => { + expect( safeUrl( url ) ).toBe( url ); + } ); + + it.each( [ + [ 'relative/path' ], + [ '/wp-admin/admin.php?page=sureforms_menu' ], + [ '#anchor' ], + [ '?query=only' ], + ] )( 'allows the schemeless %s', ( url ) => { + expect( safeUrl( url ) ).toBe( url ); + } ); + + it.each( [ + [ 'javascript:alert(1)' ], + [ 'JavaScript:alert(1)' ], + [ 'data:text/html;base64,PHNjcmlwdD4=' ], + [ 'vbscript:msgbox(1)' ], + [ 'file:///etc/passwd' ], + [ 'ftp://example.test/x' ], + ] )( 'rejects %s', ( url ) => { + expect( safeUrl( url ) ).toBeUndefined(); + } ); + + it.each( [ [ '' ], [ null ], [ undefined ], [ 0 ], [ {} ], [ [] ] ] )( + 'rejects the non-string %p', + ( url ) => { + expect( safeUrl( url ) ).toBeUndefined(); + } + ); + + // A browser trims C0 controls and spaces off both ends and strips tab, LF and + // CR from anywhere in the string before it parses the scheme. A check anchored + // on the raw string therefore reads a spelling the DOM never sees: every one + // of these was returned untouched and ran on click. + it.each( [ + [ 'leading space', ' javascript:alert(1)' ], + [ 'leading newline', '\njavascript:alert(1)' ], + [ 'leading NUL', '\u0000javascript:alert(1)' ], + [ 'tab inside the scheme', 'java\tscript:alert(1)' ], + [ 'newline inside the scheme', 'java\nscript:alert(1)' ], + [ 'CR inside the scheme', 'java\rscript:alert(1)' ], + [ 'both at once', ' java\tscript:alert(1)' ], + ] )( 'rejects javascript: hidden by a %s', ( _label, url ) => { + expect( safeUrl( url ) ).toBeUndefined(); + } ); + + // No scheme to check and a different origin on the other end, so the + // schemeless-is-relative branch above must not claim these. + it.each( [ + [ '//evil.test/x' ], + [ '\\\\evil.test/x' ], + [ ' //evil.test/x' ], + [ '/\\evil.test/x' ], + ] )( 'rejects the protocol-relative %s', ( url ) => { + expect( safeUrl( url ) ).toBeUndefined(); + } ); + + it( 'hands back what it checked, not what it was given', () => { + // Validating one spelling and returning another is how a scheme check gets + // walked past: the caller would bind the untrimmed string. + expect( safeUrl( ' https://example.test/x ' ) ).toBe( + 'https://example.test/x' + ); + } ); + + it( 'still allows a single leading slash', () => { + // One slash is a same-origin path. Only two leave the site. + expect( safeUrl( '/wp-admin/admin.php?page=sureforms_menu' ) ).toBe( + '/wp-admin/admin.php?page=sureforms_menu' + ); + } ); + + it( 'returns undefined rather than an empty string, so the caller drops the anchor', () => { + // An anchor with href="" is not keyboard focusable and resolves to the + // current document, so the guards have to see a falsy value they can act + // on rather than a rendered dead control. + expect( safeUrl( 'javascript:void 0' ) ).toBeUndefined(); + } ); +} ); diff --git a/src/admin/dashboard/utils/safeUrl.js b/src/admin/dashboard/utils/safeUrl.js new file mode 100644 index 000000000..9355fc41f --- /dev/null +++ b/src/admin/dashboard/utils/safeUrl.js @@ -0,0 +1,57 @@ +/** + * Bind-safe URL, or undefined. + * + * get_action_items() runs every item URL through esc_url_raw() with a scheme + * allowlist -- but srfm_admin_filter runs afterwards, on the already-built + * localisation payload, and can rewrite these values. React assigns href as a + * property, and react-dom 18 leaves a javascript: URL intact with its warning + * compiled out of production, so the server pass alone is not the last word + * before the value reaches the DOM. + * + * Returns the normalised string rather than the input. What is checked has to be + * what is used: validating one spelling and handing the caller another is how a + * scheme check gets walked past. + * + * Returns undefined rather than '' so the caller's `&&` guards drop the anchor + * entirely instead of rendering one that is not keyboard focusable. + * + * @param {string} url Candidate URL. + * @return {string|undefined} The normalised URL, or undefined when it is not + * safe to bind. + */ +const safeUrl = ( url ) => { + if ( typeof url !== 'string' || '' === url ) { + return undefined; + } + + // The same normalisation a browser applies before it parses the scheme: C0 + // controls and spaces are trimmed from both ends, and tab, LF and CR are + // removed from anywhere in the string. Without it the scheme test reads a + // spelling the DOM never sees -- a leading space, or a tab inside the word + // "javascript", both fail to match `^[a-z]` and were returned untouched. + const normalised = url + // eslint-disable-next-line no-control-regex + .replace( /^[\u0000-\u0020\u007f]+|[\u0000-\u0020\u007f]+$/g, '' ) + .replace( /[\t\n\r]/g, '' ); + + if ( '' === normalised ) { + return undefined; + } + + // Protocol-relative, and the backslash spelling of it that the URL standard + // folds to the same thing under an http(s) base. It carries no scheme to + // check and resolves to a different origin, so "safe because it is relative" + // is exactly wrong here. + if ( /^[/\\]{2}/.test( normalised ) ) { + return undefined; + } + + // Genuinely relative: a path, a query or a fragment, all same-origin. + if ( ! /^[a-z][a-z0-9+.-]*:/i.test( normalised ) ) { + return normalised; + } + + return /^(?:https?|mailto):/i.test( normalised ) ? normalised : undefined; +}; + +export default safeUrl; diff --git a/src/admin/settings/pages/General.js b/src/admin/settings/pages/General.js index d333ea15c..6bbbae1e5 100644 --- a/src/admin/settings/pages/General.js +++ b/src/admin/settings/pages/General.js @@ -35,6 +35,10 @@ const EmailSummariesContent = ( { emailTabOptions, updateGlobalSettings } ) => { @@ -233,9 +237,41 @@ const FormViewsTrackingContent = ( { 'Show views and conversion rate', 'sureforms' ), - description: __( - 'Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns — counting continues, so the figures are up to date if you switch it back on.', - 'sureforms' + description: ( + // One flex item, not two. force-ui's Label carries `flex + // items-center gap-0.5` in its base classes, and the className + // Switch passes it has no display utility to override that -- + // so two sibling spans become flex items side by side, not + // stacked, however they are displayed themselves. The wrapper + // is the single item; its children stack as ordinary blocks. + + { /* Kept verbatim from 2.12.6: all seven shipped locales + already translate this msgid, and re-punctuating it + to add the sentence below would orphan every one of + them. New copy goes in its own __() call. */ } + + { __( + 'Adds the Views and Conversion Rate columns to the Forms list. A view is counted once per page visit when the form appears on screen, and the conversion rate is the share of those views that ended in a submission. Counting starts the first time you turn this on, so submissions received before then are not counted towards the rate. Turning it off afterwards only hides the columns — counting continues, so the figures are up to date if you switch it back on.', + 'sureforms' + ) } + + + { __( + 'Views and submissions by anyone who can edit the site are normally left out, so testing your own forms does not change these figures.', + 'sureforms' + ) } + + + + { __( 'Learn More', 'sureforms' ) } + + + ), } } value={ generalTabOptions.srfm_form_views_tracking } @@ -526,23 +562,28 @@ const GeneralPage = ( { /> } /> + { /* Everything above is something SureForms does for this site. + Analytics is the one setting that sends anything outward, so it + sits last, behind a rule, rather than reading as one more form + setting. */ } +
} /> diff --git a/sureforms.php b/sureforms.php index d1d3b78a5..0ffea7f66 100644 --- a/sureforms.php +++ b/sureforms.php @@ -7,7 +7,7 @@ * Requires PHP: 7.4 * Author: SureForms * Author URI: https://sureforms.com/ - * Version: 2.12.6 + * Version: 2.12.7 * License: GPLv2 or later * Text Domain: sureforms * @@ -25,7 +25,7 @@ define( 'SRFM_BASENAME', plugin_basename( SRFM_FILE ) ); define( 'SRFM_DIR', plugin_dir_path( SRFM_FILE ) ); define( 'SRFM_URL', plugins_url( '/', SRFM_FILE ) ); -define( 'SRFM_VER', '2.12.6' ); +define( 'SRFM_VER', '2.12.7' ); define( 'SRFM_SLUG', 'srfm' ); // ------ ADDITIONAL CONSTANTS ------- // define( 'SRFM_FORMS_POST_TYPE', 'sureforms_form' ); @@ -35,7 +35,7 @@ define( 'SRFM_AI_MIDDLEWARE', 'https://credits.startertemplates.com/sureforms/' ); define( 'SRFM_MIDDLEWARE_BASE_URL', 'https://api.sureforms.com/' ); define( 'SRFM_BILLING_PORTAL', 'https://billing.sureforms.com/' ); -define( 'SRFM_PRO_RECOMMENDED_VER', '2.12.6' ); +define( 'SRFM_PRO_RECOMMENDED_VER', '2.12.7' ); define( 'SRFM_SURETRIGGERS_INTEGRATION_BASE_URL', 'https://app.ottokit.com/' ); diff --git a/tests/play/specs/form-settings.spec.js b/tests/play/specs/form-settings.spec.js index 674ac4d0d..e5100fe86 100644 --- a/tests/play/specs/form-settings.spec.js +++ b/tests/play/specs/form-settings.spec.js @@ -86,6 +86,20 @@ test.describe( 'Form settings', () => { await page.goto( formURL ); await page.waitForLoadState( 'load' ); + // Guards #3122. The after-submission request is issued as the redirect + // begins; before the fix window.location.assign() cancelled it, so the + // after-submission process (webhooks, integrations, CPT creation) never + // ran. Asserting only on the URL cannot see that -- these specs passed + // throughout the regression. + const abortedAfterSubmission = []; + page.on( 'requestfailed', ( request ) => { + if ( request.url().includes( 'sureforms/v1/after-submission' ) ) { + abortedAfterSubmission.push( + request.failure()?.errorText ?? 'request failed' + ); + } + } ); + await page.locator( 'input.srfm-input-input' ).first().fill( 'Redirect test' ); await Promise.all( [ @@ -94,6 +108,8 @@ test.describe( 'Form settings', () => { ] ); expect( page.url() ).toContain( '/wp-admin/' ); + + expect( abortedAfterSubmission ).toEqual( [] ); } ); // ── 3.3 Store entries disabled ──────────────────────────────────────────── @@ -179,6 +195,20 @@ test.describe( 'Form settings', () => { await page.goto( formURL ); await page.waitForLoadState( 'load' ); + // Guards #3122. The after-submission request is issued as the redirect + // begins; before the fix window.location.assign() cancelled it, so the + // after-submission process (webhooks, integrations, CPT creation) never + // ran. Asserting only on the URL cannot see that -- these specs passed + // throughout the regression. + const abortedAfterSubmission = []; + page.on( 'requestfailed', ( request ) => { + if ( request.url().includes( 'sureforms/v1/after-submission' ) ) { + abortedAfterSubmission.push( + request.failure()?.errorText ?? 'request failed' + ); + } + } ); + await page.locator( 'input.srfm-input-input' ).first().fill( 'Page redirect test' ); await Promise.all( [ @@ -187,6 +217,8 @@ test.describe( 'Form settings', () => { ] ); expect( page.url() ).toContain( '/wp-admin/' ); + + expect( abortedAfterSubmission ).toEqual( [] ); } ); // ── 3.5 Store entries — entry appears in admin after submission ─────────── diff --git a/tests/unit/admin/test-admin.php b/tests/unit/admin/test-admin.php index 582b521ca..730143302 100644 --- a/tests/unit/admin/test-admin.php +++ b/tests/unit/admin/test-admin.php @@ -31,6 +31,11 @@ protected function tearDown(): void { protected function setUp(): void { parent::setUp(); + // get_action_items() is memoised for the request, and Admin is a singleton, + // so one test process is one "request" as far as the memo is concerned. + // Without this every test after the first reads the first test's answer. + Admin::reset_action_items_cache(); + // Define WordPress constants if (!defined('DAY_IN_SECONDS')) { define('DAY_IN_SECONDS', 24 * 60 * 60); @@ -1074,11 +1079,12 @@ private function make_user( $role ) { // --------------------------------------------------------------- /** - * A healthy site still reports, but only as passing checks. Nothing may be a - * warning -- logging is on by default, so a false positive reaches every - * install. + * A healthy site produces nothing at all, so the panel does not render. + * + * A widget confirming that nothing is wrong is something people learn to skip, + * and it takes sidebar space from the cards that do have something to say. */ - public function test_get_action_items_reports_only_passing_checks_when_healthy() { + public function test_get_action_items_is_empty_when_healthy() { wp_set_current_user( $this->make_user( 'administrator' ) ); delete_option( Client_Logger::FAILURES_OPTION ); @@ -1090,11 +1096,40 @@ public function test_get_action_items_reports_only_passing_checks_when_healthy() $items = Admin::get_instance()->get_action_items(); remove_filter( 'pre_option_active_plugins', $filter ); - $this->assertNotEmpty( $items ); + $this->assertSame( [], $items ); + } - foreach ( $items as $item ) { - $this->assertSame( 'success', $item['status'], $item['id'] . ' must pass on a healthy site.' ); - } + /** + * Turning logging off takes SureForms' own items down with it. + * + * The toggle is the opt-out for this surface. Not because the counters go + * stale: Client_Logger::record_failure() has no enabled check, and the + * notification and integration categories keep counting accurately with + * logging off. Asserted with a fault recorded and a caching plugin active -- + * both surfaces the panel has -- so this cannot pass just because there was + * nothing to show. + */ + public function test_get_action_items_shows_nothing_when_logging_is_off() { + wp_set_current_user( $this->make_user( 'administrator' ) ); + delete_option( Client_Logger::FAILURES_OPTION ); + Helper::update_srfm_option( 'dismissed_action_items', [] ); + Client_Logger::record_failure( 'submission', 42, 'Contact Form' ); + + update_option( 'srfm_general_settings_options', [ 'srfm_enable_logs' => false ] ); + + $filter = static function () { + return [ 'wp-rocket/wp-rocket.php' ]; + }; + + add_filter( 'pre_option_active_plugins', $filter ); + $items = Admin::get_instance()->get_action_items(); + $warnings = Admin::get_instance()->has_action_item_warnings(); + remove_filter( 'pre_option_active_plugins', $filter ); + + delete_option( 'srfm_general_settings_options' ); + + $this->assertSame( [], $items ); + $this->assertFalse( $warnings ); } /** @@ -1118,6 +1153,1131 @@ public function test_get_action_items() { } } + /** + * The notification failure offers the SMTP guide alongside Contact Support. + * + * Email is the one failure here a site owner can usually fix without us -- it is + * almost always SMTP not being configured -- so making them wait on a support + * reply for it is the wrong default. The other two categories have no guide, and + * must not grow an empty second button. + */ + public function test_get_action_items_offers_a_guide_for_notification_failures() { + wp_set_current_user( $this->make_user( 'administrator' ) ); + delete_option( Client_Logger::FAILURES_OPTION ); + + Client_Logger::record_failure( 'notification', 42, 'Contact Form' ); + Client_Logger::record_failure( 'submission', 42, 'Contact Form' ); + + $items = []; + foreach ( Admin::get_instance()->get_action_items() as $item ) { + $items[ $item['id'] ] = $item; + } + + $this->assertArrayHasKey( 'notification_error', $items ); + $this->assertStringStartsWith( + 'https://sureforms.com/docs/troubleshooting-email-sending-in-sureforms/', + $items['notification_error']['guide_url'] ?? '', + 'The notification failure must link to the email troubleshooting guide.' + ); + $this->assertStringNotContainsString( + '&', + $items['notification_error']['guide_url'] ?? '', + 'React assigns href as a property, so an HTML entity here reaches the server verbatim.' + ); + $this->assertSame( 'help_me_fix', $items['notification_error']['guide_action'] ?? '' ); + $this->assertNotEmpty( $items['notification_error']['guide_label'] ?? '' ); + + // The details action is still there; the guide is an addition, not a swap. + $this->assertSame( 'view_details', $items['notification_error']['cta_action'] ?? '' ); + $this->assertTrue( + $items['notification_error']['has_details'] ?? false, + 'Without this flag neither renderer offers the dialog at all.' + ); + $this->assertSame( + 'notification', + $items['notification_error']['category'] ?? '', + 'The category is what the dialog sends to fetch the report.' + ); + $this->assertArrayNotHasKey( + 'details', + $items['notification_error'], + 'The diagnostics are attacker-authored; they must not ride along with the page.' + ); + + // A category with no guide must not carry empty guide keys, which both + // renderers treat as "render a second button". + $this->assertArrayHasKey( 'form_submission_error', $items ); + $this->assertArrayNotHasKey( 'guide_url', $items['form_submission_error'] ); + $this->assertArrayNotHasKey( 'guide_label', $items['form_submission_error'] ); + } + + /** + * The guide click is a distinct analytics event, and is accepted by the + * allowlist that gates every notice response. + * + * A button the allowlist does not know about is rejected with a 400, so adding + * a CTA without its allowlist entry ships a link that reports nothing. + */ + public function test_handle_notice_response_accepts_the_notification_guide() { + wp_set_current_user( $this->make_user( 'administrator' ) ); + + // check_ajax_referer() reads $_REQUEST, so $_POST alone fails the nonce. + $nonce = wp_create_nonce( 'srfm_notice_response' ); + $_POST['nonce'] = $nonce; + $_REQUEST['nonce'] = $nonce; + $_POST['notice_id'] = 'notification_error'; + $_REQUEST['notice_id'] = 'notification_error'; + $_POST['button'] = 'help_me_fix'; + $_REQUEST['button'] = 'help_me_fix'; + + // wp_send_json_*() terminates via wp_die(); make the handlers throw so the + // runner survives and the emitted body can be asserted on. Asserting on the + // body rather than "did it die" is what separates accept from reject here -- + // both end the request. + $throw_handler = static function () { + return static function () { + throw new \WPDieException( 'srfm_test_die' ); + }; + }; + // wp_send_json() only routes through wp_die() when wp_doing_ajax() is true; + // otherwise it calls a bare die() that no filter can intercept, which takes + // the test runner with it. + add_filter( 'wp_doing_ajax', '__return_true' ); + add_filter( 'wp_die_ajax_handler', $throw_handler ); + add_filter( 'wp_die_handler', $throw_handler ); + + ob_start(); + try { + Admin::get_instance()->handle_notice_response(); + } catch ( \WPDieException $e ) { + // Expected. + } finally { + $body = (string) ob_get_clean(); + remove_filter( 'wp_doing_ajax', '__return_true' ); + remove_filter( 'wp_die_ajax_handler', $throw_handler ); + remove_filter( 'wp_die_handler', $throw_handler ); + unset( + $_POST['nonce'], + $_POST['notice_id'], + $_POST['button'], + $_REQUEST['nonce'], + $_REQUEST['notice_id'], + $_REQUEST['button'] + ); + } + + $this->assertStringContainsString( '"success":true', $body, 'The guide button must be on the allowlist.' ); + } + + /** + * Each failure describes the failure that actually happened. + * + * Subject and opening line were both hardcoded to submissions, so a site whose + * email was broken reported "form submissions are failing" carrying a count + * read from the submission counter -- often zero, and always about something + * else. Wrong at a glance, and routed to the wrong queue. + * + * Asserted against get_support_copy() and get_support_message() rather than a + * composed URL: the dialog reads the message and the webhook reads the subject, + * and there is no mail URL left to build. + */ + public function test_support_copy_describes_the_failure_that_happened() { + delete_option( Client_Logger::FAILURES_OPTION ); + Client_Logger::record_failure( 'submission', 42, 'Contact Form' ); + Client_Logger::record_failure( 'notification', 42, 'Contact Form' ); + Client_Logger::record_failure( 'notification', 42, 'Contact Form' ); + Client_Logger::record_failure( 'integration', 43, 'Job Application' ); + + $copy = new ReflectionMethod( Admin::class, 'get_support_copy' ); + $copy->setAccessible( true ); + + $message = new ReflectionMethod( Admin::class, 'get_support_message' ); + $message->setAccessible( true ); + + $admin = Admin::get_instance(); + + $subjects = []; + foreach ( [ 'submission', 'notification', 'integration' ] as $category ) { + $subjects[ $category ] = $copy->invoke( $admin, $category )['subject']; + } + + // Three distinct subjects. Asserted against each other as well as their + // own text, because the failure mode here was one subject serving all three. + $this->assertStringContainsString( 'form submissions are failing', $subjects['submission'] ); + $this->assertStringContainsString( 'notification emails are not being sent', $subjects['notification'] ); + $this->assertStringContainsString( 'integration is not receiving entries', $subjects['integration'] ); + $this->assertNotSame( $subjects['submission'], $subjects['notification'] ); + $this->assertNotSame( $subjects['notification'], $subjects['integration'] ); + + $notification = $message->invoke( $admin, 'notification', 'Contact Form' ); + $integration = $message->invoke( $admin, 'integration', 'Job Application' ); + + // The body must not claim submissions are failing when they are not. + $this->assertStringNotContainsString( + 'form submission', + $notification, + 'A notification failure must not describe itself as a submission failure.' + ); + $this->assertStringContainsString( 'could not send the notification email', $notification ); + + // The count is this category's, not the submission counter's. Notification + // has 2 recorded against submission's 1, so a leaked streak shows up here. + $this->assertStringContainsString( 'SureForms saved 2 entries', $notification ); + $this->assertStringContainsString( 'Recorded failures: 2', $notification ); + + // The form is named, which is the first thing support asks for. + $this->assertStringContainsString( 'Job Application', $integration ); + } + + /** + * The report's prose translates; the debug log does not. + * + * The site owner reads this on screen before sending it, so every label in it is + * copy and belongs in the catalogue. The values beside those labels are machine + * data -- a version, a URL, a plugin name -- and the JSON log below them is the + * raw record support greps, so neither is touched. + * + * Driven through a gettext filter rather than a real locale, because the suite + * has no translations loaded and an untranslated string is indistinguishable + * from a translated one that happens to match. + */ + public function test_support_message_translates_its_labels_but_not_the_log() { + wp_set_current_user( $this->make_user( 'administrator' ) ); + delete_option( Client_Logger::FAILURES_OPTION ); + Client_Logger::clear(); + Client_Logger::record_failure( 'notification', 42, 'Contact Form' ); + Client_Logger::append( + Client_Logger::sanitize_entry( + [ + 'type' => 'network', + 'status' => 500, + 'form_id' => 42, + 'message' => 'Submission responded 500', + ] + ) + ); + Admin::reset_action_items_cache(); + + // Marks anything that reached the catalogue, so a label that was never + // wrapped simply will not carry the marker. + $translate = static function ( $translated ) { + return '[t]' . $translated; + }; + + add_filter( 'gettext', $translate, 99 ); + + $method = new ReflectionMethod( Admin::class, 'get_support_message' ); + $method->setAccessible( true ); + $message = Helper::get_string_value( $method->invoke( Admin::get_instance(), 'notification', 'Contact Form' ) ); + + $log = Helper::get_string_value( + ( new ReflectionMethod( Admin::class, 'get_support_log_block' ) )->getClosure( Admin::get_instance() )( 8000 ) + ); + + remove_filter( 'gettext', $translate, 99 ); + + // Every label a reader sees, including the six that shipped as bare English + // while the values beside them were already translated. + foreach ( + [ + 'Hello SureForms support,', + 'Site details', + 'Site: ', + 'SureForms: ', + 'SureForms Pro: ', + 'WordPress: ', + 'PHP: ', + 'Caching: ', + 'Recorded failures: ', + ] as $label + ) { + $this->assertStringContainsString( + '[t]' . $label, + $message, + sprintf( '"%s" is copy the site owner reads, so it must go through the catalogue.', trim( $label ) ) + ); + } + + // The values are not copy, so they must arrive verbatim. + $this->assertStringContainsString( '[t]SureForms: ' . SRFM_VER, $message, 'The version itself is machine data.' ); + $this->assertStringContainsString( '[t]Site: ' . home_url(), $message, 'So is the site address.' ); + + // And the log is the raw record support greps. Nothing in it may be rewritten. + $this->assertStringContainsString( '"type":"network"', $log, 'The JSON must survive verbatim.' ); + $this->assertStringNotContainsString( '[t]{', $log, 'No entry line may be translated.' ); + $this->assertStringNotContainsString( '[t]"type"', $log ); + + delete_option( Client_Logger::FAILURES_OPTION ); + Client_Logger::clear(); + } + + /** + * The served details payload keeps its line breaks. + * + * The text is several lines of diagnostics and a fenced log; one long line is + * unreadable and useless to paste. Nothing in the JSON path should touch them, + * but the earlier mailto: version was flattened by esc_url() stripping %0a from + * every scheme but mailto:, so the breaks are worth asserting on wherever the + * text is assembled. + */ + public function test_handle_action_item_details_keeps_the_line_breaks() { + wp_set_current_user( $this->make_user( 'administrator' ) ); + delete_option( Client_Logger::FAILURES_OPTION ); + Client_Logger::clear(); + Client_Logger::record_failure( 'notification', 42, 'Contact Form' ); + Admin::reset_action_items_cache(); + + $payload = $this->request_action_item_details( + [ + 'category' => 'notification', + 'nonce' => wp_create_nonce( 'srfm_action_item_details' ), + ] + ); + + $this->assertTrue( $payload['success'] ?? false ); + + $details = (string) ( $payload['data']['details'] ?? '' ); + + $this->assertStringNotContainsString( "\r", $details, 'Bare LF only.' ); + $this->assertGreaterThan( + 5, + substr_count( $details, "\n" ), + 'The diagnostics block is several lines; one long line means the breaks were lost.' + ); + } + + /** + * The details endpoint is gated, in the order the sibling handlers use. + * + * It hands back the client error log, which is filled through a public REST + * route gated on a submit token any visitor can obtain -- so this is the boundary + * between attacker-authored text and an administrator's screen. + */ + public function test_handle_action_item_details_refuses_everything_but_a_real_request() { + delete_option( Client_Logger::FAILURES_OPTION ); + Client_Logger::clear(); + Client_Logger::record_failure( 'notification', 42, 'Contact Form' ); + Admin::reset_action_items_cache(); + + // No capability. The nonce is valid, so only the capability check stands + // between a subscriber and the log. + wp_set_current_user( $this->make_user( 'subscriber' ) ); + $payload = $this->request_action_item_details( + [ + 'category' => 'notification', + 'nonce' => wp_create_nonce( 'srfm_action_item_details' ), + ] + ); + $this->assertFalse( $payload['success'] ?? true, 'A subscriber must not read the log.' ); + + wp_set_current_user( $this->make_user( 'administrator' ) ); + + // Minted after the switch: a nonce is tied to the user who created it, so + // one made earlier in this test would fail for the wrong reason. + $valid_nonce = wp_create_nonce( 'srfm_action_item_details' ); + + // Absent nonce, which is the shape a guard that only checks a supplied + // value would wave through. + $payload = $this->request_action_item_details( [ 'category' => 'notification' ] ); + $this->assertFalse( $payload['success'] ?? true, 'A missing nonce must not pass.' ); + + // Wrong action's nonce: this endpoint has its own, and the notice-response + // one is already in the page for every admin. + $payload = $this->request_action_item_details( + [ + 'category' => 'notification', + 'nonce' => wp_create_nonce( 'srfm_notice_response' ), + ] + ); + $this->assertFalse( $payload['success'] ?? true, 'Another action\'s nonce must not pass.' ); + + // Absent, empty, unrecognised, and recognised-but-nothing-wrong. All four + // are refused by the same check -- get_open_failures() only ever holds + // categories that are both known and currently failing. + foreach ( [ null, '', 'anything_else', 'submission' ] as $category ) { + $request = [ 'nonce' => $valid_nonce ]; + + if ( null !== $category ) { + $request['category'] = $category; + } + + $payload = $this->request_action_item_details( $request ); + $this->assertFalse( + $payload['success'] ?? true, + 'Nothing open in "' . (string) $category . '" means there is no report to serve.' + ); + } + + // An array where a string belongs, which arrives simply by writing + // category[]= in the body. Pinned because the refusal depends on + // sanitize_key() flattening a non-scalar to '' rather than on any branch + // here, and a future rewrite reaching for $_POST directly would lose it. + $payload = $this->request_action_item_details( + [ + 'category' => [ 'notification' ], + 'nonce' => $valid_nonce, + ] + ); + $this->assertFalse( $payload['success'] ?? true, 'A non-string category must be refused, not fatal.' ); + + // The happy path, so the refusals above are not passing because the + // endpoint refuses everything. + $payload = $this->request_action_item_details( + [ + 'category' => 'notification', + 'nonce' => $valid_nonce, + ] + ); + $this->assertTrue( $payload['success'] ?? false ); + $this->assertNotEmpty( $payload['data']['details'] ?? '' ); + $this->assertStringStartsWith( + 'https://sureforms.com/form/troubleshooting-form/', + $payload['data']['support_url'] ?? '', + 'The dialog gets its Contact Support destination from here too.' + ); + } + + /** + * Call the details endpoint and decode what it sent. + * + * wp_send_json_* ends in a bare die() unless wp_doing_ajax() is true, which no + * filter can intercept -- so without this the runner dies mid-class and every + * later test in the file silently never runs. + * + * @param array $post Request body. + * @return array Decoded response. + */ + private function request_action_item_details( $post ) { + $previous_post = $_POST; + $previous_request = $_REQUEST; + + // Both: check_ajax_referer() reads the nonce out of $_REQUEST, not $_POST, + // so setting only one silently tests the missing-nonce path. + $_POST = $post; + $_REQUEST = $post; + + add_filter( 'wp_doing_ajax', '__return_true' ); + + $handler = static function () { + return static function () { + throw new \WPDieException( 'srfm-json-sent' ); + }; + }; + + add_filter( 'wp_die_ajax_handler', $handler ); + add_filter( 'wp_die_handler', $handler ); + + ob_start(); + + try { + Admin::get_instance()->handle_action_item_details(); + } catch ( \WPDieException $e ) { + // Expected: this is how wp_send_json_* returns. + unset( $e ); + } + + $json = (string) ob_get_clean(); + + remove_filter( 'wp_die_ajax_handler', $handler ); + remove_filter( 'wp_die_handler', $handler ); + remove_filter( 'wp_doing_ajax', '__return_true' ); + + $_POST = $previous_post; + $_REQUEST = $previous_request; + + $decoded = json_decode( $json, true ); + + return is_array( $decoded ) ? $decoded : []; + } + + /** + * A long log is cut from the oldest end, so the newest entries survive. + * + * The entries worth sending are the ones describing the failure being + * reported, which are the newest. Client_Logger::get_tail() applies the bound + * by dropping whole lines from the oldest end; anything that trims the + * assembled text instead cuts from the other end and hands support the history + * rather than the fault. + */ + public function test_get_support_log_block_keeps_the_newest_entries() { + delete_option( Client_Logger::FAILURES_OPTION ); + Client_Logger::clear(); + + for ( $i = 0; $i < 40; $i++ ) { + Client_Logger::append( + [ + 'type' => 'network', + 'status' => 500, + 'form_id' => 42, + 'form_title' => 'Contact Form', + 'message' => 'Submission responded 500 (text/html): a long server failure message repeated to fill the log ' . $i, + 'duration_ms' => 900, + ] + ); + } + + $method = new ReflectionMethod( Admin::class, 'get_support_log_block' ); + $method->setAccessible( true ); + + // A budget small enough that the trim has to engage. + $block = $method->invoke( Admin::get_instance(), 1200 ); + + $this->assertStringContainsString( + 'fill the log 39', + $block, + 'The newest entry must survive the trim.' + ); + // No trailing space: the fixture is '…fill the log ' . $i inside a JSON + // line, so the next character is always a quote and 'fill the log 0 ' + // could never appear -- the assertion passed whichever end was trimmed. + $this->assertStringNotContainsString( + 'fill the log 0"', + $block, + 'The oldest entries are what the bound drops.' + ); + + // The dialog gets a wider excerpt than any URL could have carried, because + // a clipboard and a
 have no length limit worth designing around.
+		$wide = $method->invoke( Admin::get_instance(), 8000 );
+
+		$this->assertGreaterThan(
+			strlen( $block ),
+			strlen( $wide ),
+			'A larger budget must actually include more of the log.'
+		);
+		$this->assertStringNotContainsString(
+			'mail client',
+			$wide,
+			'There is no mail client in this flow, so the note must not claim one.'
+		);
+
+		Client_Logger::clear();
+	}
+
+	/**
+	 * The guide leads and Contact Support follows, in both surfaces.
+	 *
+	 * Someone who can fix it themselves should see that before being pointed at a
+	 * support queue. Emphasis follows position rather than identity, so an item with
+	 * no guide still leads with Contact Support as the primary button -- asserted
+	 * here, because a swap that only reorders would leave the secondary styling on
+	 * the leading action.
+	 */
+	public function test_render_action_item_notices_puts_the_guide_before_the_details_action() {
+		wp_set_current_user( $this->make_user( 'administrator' ) );
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Client_Logger::record_failure( 'notification', 42, 'Contact Form' );
+		Client_Logger::record_failure( 'submission', 42, 'Contact Form' );
+
+		global $pagenow;
+		$previous_pagenow = $pagenow;
+		$pagenow          = 'plugins.php';
+
+		ob_start();
+		Admin::get_instance()->render_action_item_notices();
+		$html = (string) ob_get_clean();
+
+		$pagenow = $previous_pagenow;
+
+		$guide = strpos( $html, 'help_me_fix' );
+		$this->assertNotFalse( $guide, 'The notification guide must render.' );
+
+		// The details action that follows it, not the one in the submission notice
+		// above, so this measures order within the same notice.
+		$details_after_guide = strpos( $html, 'view_details', $guide );
+		$this->assertNotFalse( $details_after_guide, 'View details must follow the guide.' );
+		$this->assertGreaterThan( $guide, $details_after_guide );
+
+		// Whichever action leads carries the primary button.
+		$this->assertMatchesRegularExpression(
+			'/class="button button-primary"[^>]*data-srfm-button="help_me_fix"/',
+			$html,
+			'The leading action must be the primary button.'
+		);
+		$this->assertMatchesRegularExpression(
+			'/class="button"[^>]*data-srfm-button="view_details"/',
+			$html,
+			'The following action must be secondary.'
+		);
+
+		// An item with no guide keeps Contact Support primary.
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Client_Logger::record_failure( 'submission', 42, 'Contact Form' );
+		// Without this the render above has already populated the memo, and the
+		// assertion below is satisfied by the stale list rather than by the
+		// fixture it just set up.
+		Admin::reset_action_items_cache();
+
+		$pagenow = 'plugins.php';
+		ob_start();
+		Admin::get_instance()->render_action_item_notices();
+		$alone = (string) ob_get_clean();
+		$pagenow = $previous_pagenow;
+
+		$this->assertMatchesRegularExpression(
+			'/class="button button-primary"[^>]*data-srfm-button="view_details"/',
+			$alone,
+			'With no guide, View details leads and stays primary.'
+		);
+
+		// Proof this rendered the fixture rather than the memo from the render
+		// above: that list held two items, one of them the notification guide.
+		$this->assertSame(
+			1,
+			substr_count( $alone, 'srfm-action-item-notice' ),
+			'Only the submission failure is recorded, so only it may render.'
+		);
+		$this->assertStringNotContainsString(
+			'help_me_fix',
+			$alone,
+			'A stale list would still carry the notification guide.'
+		);
+	}
+
+	/**
+	 * The request memo is real, and resettable.
+	 *
+	 * Two halves. get_action_items() runs twice on every admin page -- once for the
+	 * localisation payload and once in the classic renderer -- and each open
+	 * category reads a log excerpt, so the second build has to come from the memo.
+	 * And Admin is a singleton, so the memo outlives a request inside one process:
+	 * without a reset, any test that records a failure and then asks again is
+	 * reading the answer from before the change.
+	 */
+	public function test_reset_action_items_cache() {
+		wp_set_current_user( $this->make_user( 'administrator' ) );
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Admin::reset_action_items_cache();
+
+		$this->assertSame( [], Admin::get_instance()->get_action_items(), 'Healthy site, nothing to report.' );
+
+		Client_Logger::record_failure( 'submission', 42, 'Contact Form' );
+
+		// Still the memoised answer: the option changed, the memo did not.
+		$this->assertSame(
+			[],
+			Admin::get_instance()->get_action_items(),
+			'The second call in a request must not rebuild.'
+		);
+
+		Admin::reset_action_items_cache();
+
+		$ids = array_column( Admin::get_instance()->get_action_items(), 'id' );
+
+		$this->assertContains(
+			'form_submission_error',
+			$ids,
+			'After a reset the fault recorded in between must be visible.'
+		);
+
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Admin::reset_action_items_cache();
+	}
+
+	/**
+	 * The carousel and dialog CSS reaches the head, and only when it is needed.
+	 *
+	 * The rules have to be in the head, not the footer. admin_notices fires from
+	 * admin-header.php after admin_print_styles has flushed, so enqueuing from the
+	 * renderer arrived only through core's late-styles pass -- and until that
+	 * parsed, every stacked notice rendered expanded before collapsing to one and
+	 * the defensive display:none on the hidden diagnostics was inert, which is the
+	 * window that rule exists for. Asserted on the hook as well as the output,
+	 * because the output looks identical either way once the page has finished
+	 * loading, which is how this got shipped.
+	 */
+	public function test_enqueue_action_item_styles() {
+		$this->assertNotFalse(
+			has_action( 'admin_enqueue_scripts', [ Admin::get_instance(), 'enqueue_action_item_styles' ] ),
+			'Registered on admin_enqueue_scripts, or the rules cannot reach the head.'
+		);
+		$this->assertFalse(
+			has_action( 'admin_notices', [ Admin::get_instance(), 'enqueue_action_item_styles' ] ),
+			'Not on admin_notices: by then the head has already been printed.'
+		);
+
+		wp_set_current_user( $this->make_user( 'administrator' ) );
+		wp_dequeue_style( 'srfm-action-items' );
+		wp_deregister_style( 'srfm-action-items' );
+
+		// Nothing wrong: nothing to style.
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Helper::update_srfm_option( 'dismissed_action_items', [ 'caching_plugin' ] );
+		Admin::reset_action_items_cache();
+
+		Admin::get_instance()->enqueue_action_item_styles();
+
+		$this->assertFalse(
+			wp_style_is( 'srfm-action-items', 'enqueued' ),
+			'A healthy site ships none of this.'
+		);
+
+		// One fault still ships nothing: notice-response.js bails below two cards,
+		// so these rules would have no consumer.
+		Client_Logger::record_failure( 'submission', 42, 'Contact Form' );
+		Admin::reset_action_items_cache();
+
+		Admin::get_instance()->enqueue_action_item_styles();
+
+		$this->assertFalse(
+			wp_style_is( 'srfm-action-items', 'enqueued' ),
+			'A single notice builds no carousel, so the carousel CSS is inert.'
+		);
+
+		// Two faults: the carousel builds and needs its rules.
+		Client_Logger::record_failure( 'notification', 42, 'Contact Form' );
+		Admin::reset_action_items_cache();
+
+		Admin::get_instance()->enqueue_action_item_styles();
+
+		$this->assertTrue( wp_style_is( 'srfm-action-items', 'enqueued' ) );
+
+		$css = implode( "\n", (array) wp_styles()->get_data( 'srfm-action-items', 'after' ) );
+
+		// The rule whose absence during the head-to-footer window was the bug.
+		$this->assertStringContainsString( 'srfm-action-item-notice[hidden]', $css );
+		// Logical properties, so an RTL sheet can override rather than fight it.
+		$this->assertStringContainsString( 'inset-inline-end', $css );
+		$this->assertStringContainsString( 'padding-inline-end', $css );
+		// Brand, not the admin colour scheme.
+		$this->assertStringContainsString( '#D54407', $css );
+
+		wp_dequeue_style( 'srfm-action-items' );
+		wp_deregister_style( 'srfm-action-items' );
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Helper::update_srfm_option( 'dismissed_action_items', [] );
+		Admin::reset_action_items_cache();
+	}
+
+	/**
+	 * Every (notice, button) pair either surface can emit is on the allowlist.
+	 *
+	 * handle_notice_response() rejects an unknown pair with a 400, so a CTA added
+	 * without its allowlist entry ships a control that silently reports nothing.
+	 * Enumerated from the items themselves rather than hardcoded, so a new action
+	 * fails here instead of in production.
+	 */
+	public function test_handle_notice_response_accepts_every_pair_the_items_emit() {
+		wp_set_current_user( $this->make_user( 'administrator' ) );
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Helper::update_srfm_option( 'dismissed_action_items', [] );
+
+		foreach ( [ 'submission', 'notification', 'integration' ] as $category ) {
+			Client_Logger::record_failure( $category, 42, 'Contact Form' );
+		}
+
+		$caching = static function () {
+			return [ 'wp-rocket/wp-rocket.php' ];
+		};
+
+		add_filter( 'pre_option_active_plugins', $caching );
+		Admin::reset_action_items_cache();
+		$items = Admin::get_instance()->get_action_items();
+		remove_filter( 'pre_option_active_plugins', $caching );
+
+		$pairs = [];
+		foreach ( $items as $item ) {
+			foreach ( [ 'cta_action', 'guide_action' ] as $key ) {
+				if ( ! empty( $item[ $key ] ) ) {
+					$pairs[] = [ $item['id'], $item[ $key ] ];
+				}
+			}
+
+			if ( ! empty( $item['dismissible'] ) ) {
+				$pairs[] = [ $item['id'], 'dismissed' ];
+			}
+		}
+
+		$this->assertGreaterThanOrEqual(
+			6,
+			count( $pairs ),
+			'Four items with their actions is at least six pairs; fewer means the fixture did not build.'
+		);
+
+		$throw_handler = static function () {
+			return static function () {
+				throw new \WPDieException( 'srfm_test_die' );
+			};
+		};
+
+		add_filter( 'wp_doing_ajax', '__return_true' );
+		add_filter( 'wp_die_ajax_handler', $throw_handler );
+		add_filter( 'wp_die_handler', $throw_handler );
+
+		$rejected = [];
+
+		foreach ( $pairs as $pair ) {
+			list( $notice_id, $button ) = $pair;
+
+			// check_ajax_referer() reads $_REQUEST, so $_POST alone fails the nonce.
+			$nonce                 = wp_create_nonce( 'srfm_notice_response' );
+			$_POST['nonce']        = $nonce;
+			$_REQUEST['nonce']     = $nonce;
+			$_POST['notice_id']    = $notice_id;
+			$_REQUEST['notice_id'] = $notice_id;
+			$_POST['button']       = $button;
+			$_REQUEST['button']    = $button;
+
+			ob_start();
+			try {
+				Admin::get_instance()->handle_notice_response();
+			} catch ( \WPDieException $e ) {
+				// Expected: wp_send_json_*() ends the request either way.
+			} finally {
+				$body = (string) ob_get_clean();
+			}
+
+			if ( false === strpos( $body, '"success":true' ) ) {
+				$rejected[] = $notice_id . '/' . $button;
+			}
+		}
+
+		remove_filter( 'wp_doing_ajax', '__return_true' );
+		remove_filter( 'wp_die_ajax_handler', $throw_handler );
+		remove_filter( 'wp_die_handler', $throw_handler );
+		unset(
+			$_POST['nonce'],
+			$_REQUEST['nonce'],
+			$_POST['notice_id'],
+			$_REQUEST['notice_id'],
+			$_POST['button'],
+			$_REQUEST['button']
+		);
+
+		$this->assertSame(
+			[],
+			$rejected,
+			'These (notice, button) pairs render but are not on the allowlist: ' . implode( ', ', $rejected )
+		);
+
+		delete_option( Client_Logger::FAILURES_OPTION );
+	}
+
+	/**
+	 * Contact Support carries UTM attribution and can be redirected by a filter.
+	 *
+	 * utm_content is the one part that differs per button, and the reason for
+	 * tagging at all: the report can say which check drives the tickets rather than
+	 * only how many arrive. The filter replaces srfm_support_email_address, which
+	 * pointed at an inbox and has no destination left to change.
+	 */
+	public function test_get_support_contact_url_is_tagged_and_filterable() {
+		// An address of its own: make_user() does not set one, and an admin with no
+		// email is exactly the case the empty fallback exists for.
+		$admin = $this->make_user( 'administrator' );
+		wp_update_user(
+			[
+				'ID'         => $admin,
+				'user_email' => 'owner@example.org',
+			]
+		);
+		wp_set_current_user( $admin );
+
+		$method = new ReflectionMethod( Admin::class, 'get_support_contact_url' );
+		$method->setAccessible( true );
+
+		$url = $method->invoke( Admin::get_instance(), 'notification' );
+
+		$this->assertStringStartsWith( 'https://sureforms.com/form/troubleshooting-form/', $url );
+		$this->assertStringContainsString( 'utm_content=notification', $url );
+		$this->assertStringContainsString( 'utm_campaign=contact_support', $url );
+
+		parse_str( (string) wp_parse_url( $url, PHP_URL_QUERY ), $query );
+
+		// Prefilled, so the person reporting a fault does not retype what SureForms
+		// already knows.
+		$this->assertSame( 'Email notification failure', $query['subject'] ?? '' );
+		$this->assertSame(
+			Helper::get_string_value( wp_parse_url( home_url(), PHP_URL_HOST ) ),
+			$query['site_url'] ?? ''
+		);
+		$this->assertSame( 'owner@example.org', $query['mail'] ?? '', 'The admin address prefills the form.' );
+
+		// An admin with no usable address still gets a working link, with the field
+		// left empty rather than carrying a broken value into the form.
+		$no_email = $this->make_user( 'administrator' );
+		wp_set_current_user( $no_email );
+
+		parse_str(
+			(string) wp_parse_url( $method->invoke( Admin::get_instance(), 'notification' ), PHP_URL_QUERY ),
+			$without
+		);
+
+		$this->assertSame( '', $without['mail'] ?? 'missing' );
+		$this->assertSame( 'Email notification failure', $without['subject'] ?? '' );
+
+		wp_set_current_user( $admin );
+
+		// One subject per category, matched against the form's own options -- so
+		// these are machine values and must not be translated.
+		$subject = static function ( $category ) use ( $method ) {
+			parse_str(
+				(string) wp_parse_url( $method->invoke( Admin::get_instance(), $category ), PHP_URL_QUERY ),
+				$parsed
+			);
+			return $parsed['subject'] ?? '';
+		};
+
+		$this->assertSame( 'Form submission failure', $subject( 'submission' ) );
+		$this->assertSame( 'Integration failure', $subject( 'integration' ) );
+		// srfm_action_items is public, so an item can carry any category or none.
+		$this->assertSame( 'Other', $subject( 'something-else' ) );
+		$this->assertSame( 'Other', $subject( '' ) );
+
+		// Different check, different tag -- otherwise the parameter says nothing.
+		$this->assertStringContainsString(
+			'utm_content=integration',
+			$method->invoke( Admin::get_instance(), 'integration' )
+		);
+
+		$filter = static function () {
+			return 'https://reseller.example.com/help/';
+		};
+
+		add_filter( 'srfm_support_contact_url', $filter );
+		$filtered = $method->invoke( Admin::get_instance(), 'notification' );
+		remove_filter( 'srfm_support_contact_url', $filter );
+
+		$this->assertSame( 'https://reseller.example.com/help/', $filtered );
+
+		// An inbox is a legitimate destination for a white-label support contact,
+		// and the sibling item URLs already allow it.
+		$inbox = static function () {
+			return 'mailto:help@reseller.example.com';
+		};
+
+		add_filter( 'srfm_support_contact_url', $inbox );
+		$mailto = $method->invoke( Admin::get_instance(), 'notification' );
+		remove_filter( 'srfm_support_contact_url', $inbox );
+
+		$this->assertSame( 'mailto:help@reseller.example.com', $mailto );
+
+		// Escaped after the filter, so neither renderer has to trust what came
+		// back -- but never down to ''. Contact Support is the only action that
+		// retires these notices and they are dismissible => false, so an empty
+		// destination is an undismissable notice with nothing on it that works.
+		// The unfiltered URL is built here rather than supplied, so it always
+		// escapes.
+		foreach ( [ 'javascript:alert(1)', 'data:text/html,x', '', '   ' ] as $rejected ) {
+			$bad = static function () use ( $rejected ) {
+				return $rejected;
+			};
+
+			add_filter( 'srfm_support_contact_url', $bad );
+			$blocked = $method->invoke( Admin::get_instance(), 'notification' );
+			remove_filter( 'srfm_support_contact_url', $bad );
+
+			$this->assertStringStartsWith(
+				'https://sureforms.com/form/troubleshooting-form/',
+				$blocked,
+				'A filter value that cannot survive escaping must fall back, not blank the only working action.'
+			);
+		}
+	}
+
+	/**
+	 * Each notice interaction is recorded with a running total, and forced.
+	 *
+	 * Analytics_Events::track() returns early when the name is already in
+	 * usage_events_pushed, so a call with $force omitted records each name once per
+	 * site ever -- the report could say whether a button had ever been clicked but
+	 * not how often, which is the only thing these events are for.
+	 */
+	public function test_track_notice_event_counts_cumulatively() {
+		Helper::update_srfm_option( 'action_item_events', [] );
+
+		$method = new ReflectionMethod( Admin::class, 'track_notice_event' );
+		$method->setAccessible( true );
+
+		$method->invoke( Admin::get_instance(), 'notification_failure_notice_cta' );
+		$method->invoke( Admin::get_instance(), 'notification_failure_notice_cta' );
+		$method->invoke( Admin::get_instance(), 'integration_failure_notice_cta' );
+
+		$counts = Helper::get_array_value( Helper::get_srfm_option( 'action_item_events', [] ) );
+
+		$this->assertSame( 2, $counts['notification_failure_notice_cta'] ?? 0 );
+		$this->assertSame( 1, $counts['integration_failure_notice_cta'] ?? 0 );
+
+		// And that the second click actually reached the analytics queue. Counting
+		// locally is not enough: without $force = true the second track() call
+		// short-circuits on the pending-membership check and the queued value stays
+		// at 1, so the report would say one click no matter how many happened.
+		$pending = Helper::get_array_value( Helper::get_srfm_option( 'usage_events_pending', [] ) );
+		$queued  = null;
+
+		foreach ( $pending as $entry ) {
+			if ( 'notification_failure_notice_cta' === ( $entry['event_name'] ?? '' ) ) {
+				$queued = $entry['event_value'] ?? null;
+			}
+		}
+
+		$this->assertSame( '2', $queued, 'The queued value must be the running total, not the first one.' );
+
+		Helper::update_srfm_option( 'action_item_events', [] );
+		Helper::update_srfm_option( 'usage_events_pending', [] );
+	}
+
+	/**
+	 * A URL contributed through the filter is normalised server-side.
+	 *
+	 * The two renderers disagreed about whether srfm_action_items is trusted. The
+	 * classic notice runs esc_url() and drops a disallowed scheme; React assigns
+	 * href directly, and react-dom 18's sanitizeURL() only warns about
+	 * javascript:, with the warning compiled out of the production build. Doing it
+	 * once here closes both and leaves nothing to remember at the call sites.
+	 */
+	public function test_get_action_items_scrubs_urls_contributed_through_the_filter() {
+		wp_set_current_user( $this->make_user( 'administrator' ) );
+		delete_option( Client_Logger::FAILURES_OPTION );
+
+		$filter = static function () {
+			return [
+				[
+					'id'          => 'third_party_advisory',
+					'status'      => 'warning',
+					'title'       => 'Something needs attention.',
+					'message'     => 'Details here.',
+					'cta_label'   => 'Fix it',
+					'cta_url'     => 'javascript:alert(document.cookie)',
+					'guide_label' => 'Read more',
+					'guide_url'   => 'https://example.com/guide/',
+				],
+			];
+		};
+
+		add_filter( 'srfm_action_items', $filter );
+		$items = Admin::get_instance()->get_action_items();
+		remove_filter( 'srfm_action_items', $filter );
+
+		$this->assertCount( 1, $items );
+		$this->assertSame(
+			'',
+			$items[0]['cta_url'],
+			'A scheme outside the allowlist must not survive to either renderer.'
+		);
+		$this->assertSame(
+			'https://example.com/guide/',
+			$items[0]['guide_url'],
+			'An allowed scheme is left alone.'
+		);
+	}
+
+	/**
+	 * The filter still runs with logging disabled.
+	 *
+	 * The Enable Logs toggle removes SureForms' own items. It sat above
+	 * srfm_action_items, so a third party using the documented extension point had
+	 * its unrelated advisory silenced by a SureForms logging checkbox.
+	 */
+	public function test_get_action_items_still_runs_the_filter_with_logging_off() {
+		wp_set_current_user( $this->make_user( 'administrator' ) );
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Client_Logger::record_failure( 'submission', 42, 'Contact Form' );
+
+		update_option( 'srfm_general_settings_options', [ 'srfm_enable_logs' => false ] );
+
+		$filter = static function ( $items ) {
+			$items[] = [
+				'id'      => 'third_party_advisory',
+				'status'  => 'warning',
+				'title'   => 'Something needs attention.',
+				'message' => 'Details here.',
+			];
+
+			return $items;
+		};
+
+		add_filter( 'srfm_action_items', $filter );
+		$items = Admin::get_instance()->get_action_items();
+		remove_filter( 'srfm_action_items', $filter );
+
+		delete_option( 'srfm_general_settings_options' );
+
+		$ids = array_column( $items, 'id' );
+
+		$this->assertContains( 'third_party_advisory', $ids, 'The filter must still run.' );
+		$this->assertNotContains(
+			'form_submission_error',
+			$ids,
+			'SureForms\' own items are what the toggle removes.'
+		);
+
+		delete_option( Client_Logger::FAILURES_OPTION );
+	}
+
+	/**
+	 * An item with only guide_* keys renders without touching cta_url.
+	 *
+	 * The React panel had already started gating on cta_label, so a filter item
+	 * carrying only a guide rendered correctly there. The classic renderer read
+	 * $item['cta_url'] and $item['cta_label'] unguarded, which is two PHP 8
+	 * undefined-key warnings and a .
+	 */
+	public function test_render_action_item_notices_handles_an_item_with_no_cta() {
+		wp_set_current_user( $this->make_user( 'administrator' ) );
+		delete_option( Client_Logger::FAILURES_OPTION );
+
+		$filter = static function () {
+			return [
+				[
+					'id'           => 'third_party_advisory',
+					'status'       => 'warning',
+					'title'        => 'Something needs attention.',
+					'message'      => 'Details here.',
+					'guide_label'  => 'Read more',
+					'guide_url'    => 'https://example.com/guide/',
+					'guide_action' => 'help_me_fix',
+				],
+			];
+		};
+
+		global $pagenow;
+		$previous_pagenow = $pagenow;
+		$pagenow          = 'plugins.php';
+
+		add_filter( 'srfm_action_items', $filter );
+		ob_start();
+		Admin::get_instance()->render_action_item_notices();
+		$html = (string) ob_get_clean();
+		remove_filter( 'srfm_action_items', $filter );
+
+		$pagenow = $previous_pagenow;
+
+		$this->assertStringContainsString( 'https://example.com/guide/', $html, 'The guide still renders.' );
+		$this->assertStringNotContainsString( 'href=""', $html, 'No empty-href anchor is emitted.' );
+
+		// One anchor for the guide, and no second one for a CTA that does not exist.
+		$this->assertSame( 1, substr_count( $html, 'data-srfm-button=' ) );
+	}
+
+	/**
+	 * An unknown category gets neutral wording rather than a specific claim.
+	 *
+	 * srfm_action_items is public, so an item can arrive with no category at all.
+	 * Defaulting to the submission copy would state something that may not be true.
+	 */
+	public function test_support_copy_stays_neutral_without_a_category() {
+		delete_option( Client_Logger::FAILURES_OPTION );
+
+		$copy = new ReflectionMethod( Admin::class, 'get_support_copy' );
+		$copy->setAccessible( true );
+
+		$message = new ReflectionMethod( Admin::class, 'get_support_message' );
+		$message->setAccessible( true );
+
+		$neutral = $copy->invoke( Admin::get_instance(), '' );
+
+		$this->assertStringContainsString( 'a problem with the forms on', $neutral['subject'] );
+		$this->assertStringNotContainsString( 'form submissions are failing', $neutral['subject'] );
+
+		$body = $message->invoke( Admin::get_instance(), '', '' );
+
+		$this->assertStringNotContainsString( 'form submission that could not', $body );
+		// Nothing recorded means no number, rather than a count nobody recorded.
+		$this->assertStringNotContainsString( 'Recorded failures: 1', $body );
+		$this->assertStringContainsString( 'none recorded', $body );
+	}
+
 	/**
 	 * An active caching plugin produces a dismissible advisory item pointing at the
 	 * setup guide.
@@ -1146,7 +2306,19 @@ public function test_get_action_items_flags_an_active_caching_plugin() {
 		$this->assertNotNull( $caching, 'An active caching plugin must be reported.' );
 		$this->assertStringContainsString( 'WP Rocket', $caching['title'] );
 		$this->assertTrue( $caching['dismissible'] );
-		$this->assertStringContainsString( 'caching-plugins', $caching['cta_url'] );
+		// The guide for the plugin actually running, not the general page. WP Rocket
+		// has one of its own, so linking to the general page here would be the
+		// regression this assertion exists to catch.
+		$this->assertStringStartsWith(
+			'https://sureforms.com/docs/how-to-set-up-sureforms-with-wp-rocket/',
+			$caching['cta_url']
+		);
+
+		// One raw form for both renderers. get_sureforms_website_url() esc_url()s
+		// its return, and React assigns href as a property rather than parsing it
+		// as HTML, so an & here would be sent to the server verbatim.
+		$this->assertStringNotContainsString( '&', $caching['cta_url'] );
+		$this->assertStringContainsString( 'utm_medium=form_checks_notice', $caching['cta_url'] );
 	}
 
 	/**
@@ -1199,6 +2371,77 @@ public function test_has_action_item_warnings() {
 
 	}
 
+	/**
+	 * Every category that puts a warning on screen also silences the review ask.
+	 *
+	 * The gate used to re-state its conditions rather than read them, and the
+	 * restatement was narrower than the display: has_persistent_failures() reads the
+	 * `submission` counter alone, while the notices warn on any open failure in any
+	 * of the three categories. So "Rate SureForms 5 stars" rendered directly beneath
+	 * "We noticed a notification failure on Contact Form".
+	 *
+	 * Submission passed before this fix, but only because FAULT_THRESHOLD is 1. It is
+	 * covered here anyway so raising that threshold cannot quietly reopen the hole.
+	 *
+	 * Asserted against get_action_items() in the same breath, because the defect was
+	 * the gate and the display disagreeing -- checking the gate alone is what let it
+	 * through.
+	 */
+	public function test_every_warning_category_suppresses_the_engagement_notices() {
+		wp_set_current_user( $this->make_user( 'administrator' ) );
+
+		// Caching advice out of the way, so the fault is the only thing in play.
+		Helper::update_srfm_option( 'dismissed_action_items', [ 'caching_plugin' ] );
+
+		$quiet = static function () {
+			return [ 'akismet/akismet.php' ];
+		};
+
+		add_filter( 'pre_option_active_plugins', $quiet );
+
+		foreach ( [ 'notification', 'integration', 'submission' ] as $category ) {
+			delete_option( Client_Logger::FAILURES_OPTION );
+			Client_Logger::record_failure( $category, 42, 'Contact Form' );
+			Admin::reset_action_items_cache();
+
+			$on_screen = 0;
+
+			foreach ( Admin::get_instance()->get_action_items() as $item ) {
+				$status = Helper::get_string_value( is_array( $item ) ? $item['status'] ?? '' : '' );
+
+				if ( 'success' !== $status && '' !== $status ) {
+					$on_screen++;
+				}
+			}
+
+			$this->assertGreaterThan(
+				0,
+				$on_screen,
+				sprintf( 'Fixture check: a %s failure must actually render a warning.', $category )
+			);
+
+			$this->assertTrue(
+				Admin::get_instance()->has_action_item_warnings(),
+				sprintf( 'A %s failure is on screen, so the review ask must stand down.', $category )
+			);
+		}
+
+		// A healthy site still gets asked, so the gate is not simply stuck on.
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Admin::reset_action_items_cache();
+
+		$this->assertFalse(
+			Admin::get_instance()->has_action_item_warnings(),
+			'With nothing wrong the engagement notices must still be eligible.'
+		);
+
+		remove_filter( 'pre_option_active_plugins', $quiet );
+
+		Helper::update_srfm_option( 'dismissed_action_items', [] );
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Admin::reset_action_items_cache();
+	}
+
 	/**
 	 * Dismissing an advisory must clear the warning state, or the engagement
 	 * notices stay suppressed forever on a site with a caching plugin.
@@ -1331,7 +2574,19 @@ public function test_render_action_item_notices() {
 			$output = ob_get_clean();
 
 			$this->assertStringContainsString( 'notice-error', $output, $screen . ' must show the notice.' );
-			$this->assertStringContainsString( 'Contact Support', $output );
+			// Contact Support moved into the details modal; the notice itself offers
+			// the diagnostics first.
+			$this->assertStringContainsString( 'View details', $output );
+			$this->assertStringContainsString(
+				'data-srfm-category="submission"',
+				$output,
+				'The trigger carries the category the dialog fetches with.'
+			);
+			$this->assertStringNotContainsString(
+				'srfm-notice-details',
+				$output,
+				'The diagnostics are fetched on open, never printed beside the notice.'
+			);
 		}
 
 	}
diff --git a/tests/unit/inc/database/tables/test-entries.php b/tests/unit/inc/database/tables/test-entries.php
index 551138b9d..4f2d958f7 100644
--- a/tests/unit/inc/database/tables/test-entries.php
+++ b/tests/unit/inc/database/tables/test-entries.php
@@ -267,7 +267,7 @@ public function test_get_form_data_nonexistent() {
 	}
 
 	/**
-	 * Test get_form_ids_by_entries with empty array returns empty.
+	 * Test get_form_ids_by_entries with a non-existent entry id returns empty.
 	 */
 	public function test_get_form_ids_by_entries_nonexistent() {
 		$result = Entries::get_form_ids_by_entries( [ 999999 ] );
@@ -275,6 +275,57 @@ public function test_get_form_ids_by_entries_nonexistent() {
 		$this->assertEmpty( $result );
 	}
 
+	/**
+	 * Empty the entries table's per-instance query cache.
+	 */
+	private function reset_entries_cache(): void {
+		$reset = new ReflectionMethod( Entries::get_instance(), 'cache_reset' );
+		$reset->setAccessible( true );
+		$reset->invoke( Entries::get_instance() );
+	}
+
+	/**
+	 * An empty list never reaches the database.
+	 *
+	 * The guard has to reject an empty array as well as a non-array. Asserted on
+	 * the query count rather than the return value: an empty result comes back
+	 * either way, so only "no query was run" distinguishes the guard from a query
+	 * that happened to match nothing.
+	 */
+	public function test_get_form_ids_by_entries_empty_array() {
+		global $wpdb;
+
+		// Both guards, once removed, build the same constant-only query, so one
+		// test's result would answer the other's from the per-instance cache.
+		$this->reset_entries_cache();
+
+		$before = $wpdb->num_queries;
+		$result = Entries::get_form_ids_by_entries( [] );
+
+		$this->assertIsArray( $result );
+		$this->assertEmpty( $result );
+		$this->assertSame( $before, $wpdb->num_queries, 'An empty list must not reach the database.' );
+	}
+
+	/**
+	 * A non-array argument is rejected too, and also without a query.
+	 */
+	public function test_get_form_ids_by_entries_non_array() {
+		global $wpdb;
+
+		// Both guards, once removed, build the same constant-only query, so one
+		// test's result would answer the other's from the per-instance cache.
+		$this->reset_entries_cache();
+
+		$before = $wpdb->num_queries;
+		// @phpstan-ignore-next-line -- Deliberately passing the wrong type to exercise the guard.
+		$result = Entries::get_form_ids_by_entries( 'not-an-array' );
+
+		$this->assertIsArray( $result );
+		$this->assertEmpty( $result );
+		$this->assertSame( $before, $wpdb->num_queries, 'A non-array argument must not reach the database.' );
+	}
+
 	/**
 	 * Test get_entry_data returns empty array for non-existent entry.
 	 */
diff --git a/tests/unit/inc/database/test-base.php b/tests/unit/inc/database/test-base.php
index 4cc5ab807..22d252a19 100644
--- a/tests/unit/inc/database/test-base.php
+++ b/tests/unit/inc/database/test-base.php
@@ -394,6 +394,197 @@ public function test_prepare_where_clauses_in_operator() {
 		$this->assertStringContainsString( '3', $result );
 	}
 
+	public function test_prepare_where_clauses_not_in_operator() {
+		$result = $this->prepare(
+			[
+				[
+					[
+						'key'     => 'user_id',
+						'compare' => 'NOT IN',
+						'value'   => [ 4, 5 ],
+					],
+				],
+			]
+		);
+
+		// Without 'NOT IN' on the operator allowlist the whole condition is dropped
+		// and the query silently matches every row, which is how an exclusion built
+		// on this would fail open.
+		$this->assertStringContainsString( 'NOT IN', $result );
+		$this->assertStringContainsString( 'user_id', $result );
+		$this->assertStringContainsString( '4', $result );
+		$this->assertStringContainsString( '5', $result );
+	}
+
+	/**
+	 * An empty list must not be interpolated into "col IN ()".
+	 *
+	 * That is a syntax error, and it fails the whole query rather than the one
+	 * condition, taking out the listing and its COUNT together. An empty IN matches
+	 * nothing, so it collapses to a constant that says so.
+	 */
+	public function test_prepare_where_clauses_empty_in_matches_nothing() {
+		$in = $this->prepare(
+			[
+				[
+					[
+						'key'     => 'ID',
+						'compare' => 'IN',
+						'value'   => [],
+					],
+				],
+			]
+		);
+
+		$this->assertStringNotContainsString( 'IN ()', $in );
+		$this->assertStringContainsString( '1 = 0', $in, 'An empty IN matches nothing.' );
+	}
+
+	/**
+	 * An empty NOT IN is dropped, never written as a constant.
+	 *
+	 * It excludes nothing, and the constant that says so is a literal true. Under
+	 * AND that is a no-op, but the same clause list also builds OR groups, where a
+	 * literal true makes the whole group match every row and neutralises the
+	 * sibling conditions. Dropping the condition means the same thing under AND and
+	 * narrows rather than widens under OR.
+	 */
+	public function test_prepare_where_clauses_empty_not_in_is_dropped() {
+		$not_in = $this->prepare(
+			[
+				[
+					[
+						'key'     => 'ID',
+						'compare' => 'NOT IN',
+						'value'   => [],
+					],
+				],
+			]
+		);
+
+		$this->assertStringNotContainsString( 'IN ()', $not_in );
+		$this->assertStringNotContainsString( '1 = 1', $not_in, 'An empty NOT IN must not emit a literal true.' );
+		$this->assertStringNotContainsString( 'NOT IN', $not_in, 'The condition is dropped, not built.' );
+	}
+
+	/**
+	 * A scalar where an array belongs is a caller bug, and it must surface.
+	 *
+	 * `'NOT IN'` with `5` -- a plausible typo for `[ 5 ]` -- used to be folded in
+	 * with the empty-array case and drop the condition, excluding nobody with no
+	 * error and a green suite, while the same typo on `'IN'` failed closed. On a
+	 * primitive whose only job is scoping data that asymmetry is the hazard.
+	 */
+	public function test_prepare_where_clauses_non_array_in_value_is_doing_it_wrong() {
+		$notices = [];
+
+		$observe = static function ( $function_name, $message ) use ( &$notices ) {
+			$notices[] = $function_name . ': ' . $message;
+		};
+
+		add_action( 'doing_it_wrong_run', $observe, 10, 2 );
+		// _doing_it_wrong() escalates to trigger_error() under WP_DEBUG, which
+		// would abort the test rather than let it assert.
+		add_filter( 'doing_it_wrong_trigger_error', '__return_false' );
+
+		$result = $this->prepare(
+			[
+				[
+					[
+						'key'     => 'user_id',
+						'compare' => 'NOT IN',
+						// @phpstan-ignore-next-line -- Deliberately the wrong type.
+						'value'   => 5,
+					],
+				],
+			]
+		);
+
+		remove_filter( 'doing_it_wrong_trigger_error', '__return_false' );
+		remove_action( 'doing_it_wrong_run', $observe, 10 );
+
+		$this->assertNotEmpty( $notices, 'A scalar value must be reported, not swallowed.' );
+		$this->assertStringContainsString( 'prepare_where_clauses', $notices[0] );
+		$this->assertStringContainsString( 'NOT IN requires an array value', $notices[0] );
+		// The received type, so the caller does not have to guess what it sent.
+		$this->assertStringContainsString( 'integer', $notices[0] );
+
+		// And it must not have built a condition out of the bad input.
+		$this->assertStringNotContainsString( 'NOT IN', $result );
+		$this->assertStringNotContainsString( '1 = 1', $result );
+	}
+
+	/**
+	 * An operator is normalised before the allowlist test.
+	 *
+	 * Payments' builder upper-cases and trims; this one compared strictly. So a
+	 * caller writing `'not in'` was honoured by one and silently dropped by the
+	 * other -- and a dropped NOT IN is a silently disabled exclusion.
+	 */
+	public function test_prepare_where_clauses_normalises_operator_case() {
+		$result = $this->prepare(
+			[
+				[
+					[
+						'key'     => 'user_id',
+						'compare' => ' not in ',
+						'value'   => [ 4, 5 ],
+					],
+				],
+			]
+		);
+
+		$this->assertStringContainsString( 'NOT IN', $result, 'A lower-case operator must still be honoured.' );
+		$this->assertStringContainsString( '4', $result );
+		$this->assertStringContainsString( '5', $result );
+
+		// Still an allowlist: an unknown operator is dropped however it is cased.
+		$this->assertSame(
+			'',
+			$this->prepare(
+				[
+					[
+						[
+							'key'     => 'user_id',
+							'compare' => 'drop table',
+							'value'   => [ 1 ],
+						],
+					],
+				]
+			)
+		);
+	}
+
+	/**
+	 * An empty NOT IN beside an OR sibling must not widen the group.
+	 *
+	 * This is the shape that matters: a group whose siblings are the only thing
+	 * keeping a query narrow. The surviving clause must still be the sibling alone.
+	 */
+	public function test_prepare_where_clauses_empty_not_in_does_not_widen_an_or_group() {
+		$result = $this->prepare(
+			[
+				[
+					[
+						'key'     => 'form_id',
+						'compare' => '=',
+						'value'   => 7,
+					],
+					[
+						'key'     => 'user_id',
+						'compare' => 'NOT IN',
+						'value'   => [],
+					],
+					'RELATION' => 'OR',
+				],
+			]
+		);
+
+		$this->assertStringContainsString( 'form_id', $result, 'The sibling condition survives.' );
+		$this->assertStringNotContainsString( '1 = 1', $result );
+		$this->assertStringNotContainsString( ' OR ', $result, 'Nothing is left to OR the sibling against.' );
+	}
+
 	// ---------------------------------------------------------------
 	// prepare_where_clauses — date range
 	// ---------------------------------------------------------------
@@ -607,4 +798,78 @@ public function test_table_exists_reports_a_dropped_table_as_missing() {
 		$this->assertFalse( $missing );
 		$this->assertTrue( $this->entries_table->table_exists() );
 	}
+
+	// ---------------------------------------------------------------
+	// get_results
+	// ---------------------------------------------------------------
+
+	/**
+	 * An empty result set is a cached answer, not a cache miss.
+	 *
+	 * The cache was read for truthiness, so `[]` looked like "nothing stored" and
+	 * the query ran again for every caller. That was rare while every lookup
+	 * matched something; the editor exclusion makes an empty windowed lookup the
+	 * common case, so the dead-cache path starts firing on most rows.
+	 *
+	 * Asserted on the query count, because the return value is the same either way
+	 * -- which is exactly why this was invisible.
+	 */
+	public function test_get_results_caches_an_empty_result_set() {
+		global $wpdb;
+
+		$where = [
+			[
+				[
+					'key'     => 'form_id',
+					'compare' => '=',
+					// An id nothing can match, so the result is genuinely empty.
+					'value'   => 987654321,
+				],
+			],
+		];
+
+		$reset = new ReflectionMethod( $this->entries_table, 'cache_reset' );
+		$reset->setAccessible( true );
+		$reset->invoke( $this->entries_table );
+
+		$first = $this->entries_table->get_results( $where );
+		$this->assertSame( [], $first, 'Precondition: this lookup matches nothing.' );
+
+		$after = $wpdb->num_queries;
+		$again = $this->entries_table->get_results( $where );
+
+		$this->assertSame( [], $again );
+		$this->assertSame(
+			$after,
+			$wpdb->num_queries,
+			'The second identical lookup must come from the cache, not the database.'
+		);
+	}
+
+	// ---------------------------------------------------------------
+	// cache_reset
+	// ---------------------------------------------------------------
+
+	/**
+	 * cache_reset() empties the per-instance query cache.
+	 */
+	public function test_cache_reset() {
+		$set   = new ReflectionMethod( $this->entries_table, 'cache_set' );
+		$get   = new ReflectionMethod( $this->entries_table, 'cache_get' );
+		$reset = new ReflectionMethod( $this->entries_table, 'cache_reset' );
+
+		foreach ( [ $set, $get, $reset ] as $method ) {
+			$method->setAccessible( true );
+		}
+
+		$set->invoke( $this->entries_table, 'srfm_cache_reset_probe', 'stored' );
+		$this->assertSame( 'stored', $get->invoke( $this->entries_table, 'srfm_cache_reset_probe' ) );
+
+		$reset->invoke( $this->entries_table );
+
+		$this->assertNull(
+			$get->invoke( $this->entries_table, 'srfm_cache_reset_probe' ),
+			'The cached value must be gone after a reset.'
+		);
+	}
 }
diff --git a/tests/unit/inc/test-client-logger.php b/tests/unit/inc/test-client-logger.php
index 975a09454..b90cebc7c 100644
--- a/tests/unit/inc/test-client-logger.php
+++ b/tests/unit/inc/test-client-logger.php
@@ -256,6 +256,326 @@ public function test_sanitize_entry_clamps_each_field_key_length() {
 		$this->assertFalse( Client_Logger::is_full() );
 	}
 
+	/**
+	 * Two different budgets in one request return two different excerpts.
+	 *
+	 * The memo is keyed by blog id and budget. Keying it by reusing $max_chars
+	 * made the key a string, and the byte-budget comparison inside the line loop
+	 * coerces "1:1200" to 1 -- so every excerpt collapsed to a single line, on
+	 * every consumer, silently. Nothing caught it because no test had asked for
+	 * two budgets in the same process.
+	 */
+	public function test_get_tail_budget_is_not_the_memo_key() {
+		Client_Logger::clear();
+
+		for ( $i = 0; $i < 40; $i++ ) {
+			Client_Logger::append(
+				Client_Logger::sanitize_entry(
+					[
+						'type'        => 'network',
+						'status'      => 500,
+						'form_id'     => 42,
+						'form_title'  => 'Contact Form',
+						'message'     => 'Submission responded 500 (text/html): a long server failure message repeated to fill the log ' . $i,
+						'duration_ms' => 900,
+					]
+				)
+			);
+		}
+
+		$small = Client_Logger::get_tail( 1200 );
+		$large = Client_Logger::get_tail( 8000 );
+
+		// The budget is a byte count, so a small one keeps several whole lines --
+		// not one, which is what a string key produced.
+		$this->assertGreaterThan( 1, $small['shown'], 'A 1200-byte budget holds more than one entry.' );
+		$this->assertGreaterThan(
+			$small['shown'],
+			$large['shown'],
+			'A larger budget must return more entries, not the memoised smaller one.'
+		);
+		$this->assertGreaterThan( strlen( $small['text'] ), strlen( $large['text'] ) );
+
+		// And the memo still works: the same budget twice is one read.
+		$this->assertSame( $small, Client_Logger::get_tail( 1200 ) );
+
+		Client_Logger::clear();
+	}
+
+	/**
+	 * Webhook credentials are masked in every shape they actually arrive in.
+	 *
+	 * The round-1 finding this answers was about a Slack token surviving in a URL
+	 * path. The first version of these rules missed it in the largest sink: a WP
+	 * REST error body is slash-escaped, and two of the four body sinks log the raw
+	 * response text, so every URL rule saw `https:\/\/` and matched nothing. It
+	 * also only fired when the credential keyword was the last token of the name,
+	 * so AWS_SECRET_ACCESS_KEY, stripe_secret_key and X-Hub-Signature all passed
+	 * through untouched.
+	 *
+	 * @dataProvider provide_secrets
+	 * @param string $input  Log text as it would arrive.
+	 * @param string $secret The substring that must not survive.
+	 */
+	public function test_scrub_text_masks_credentials( $input, $secret ) {
+		$this->assertStringNotContainsString(
+			$secret,
+			Client_Logger::scrub_text( $input ),
+			'This is written to a downloadable log and pasted into a support email.'
+		);
+	}
+
+	/**
+	 * Inputs whose secret must not survive scrub_text().
+	 *
+	 * @return array
+	 */
+	public function provide_secrets() {
+		return [
+			'slack in a path'         => [ 'POST https://hooks.slack.com/services/T0/B0/xoxb-secrettoken failed', 'xoxb-secrettoken' ],
+			'slack slash-escaped'     => [ '{"message":"post to https:\\/\\/hooks.slack.com\\/services\\/T1\\/B2\\/xoxb-escapedtoken failed"}', 'xoxb-escapedtoken' ],
+			'discord webhook'         => [ 'Discord https://discord.com/api/webhooks/123/AbCdEfGhIjKlMnOp rejected', 'AbCdEfGhIjKlMnOp' ],
+			'aws prefixed name'       => [ 'AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMIK7MDENG', 'wJalrXUtnFEMIK7MDENG' ],
+			'stripe suffixed name'    => [ 'stripe_secret_key: sk_live_51H8xyzABCDEF', 'sk_live_51H8xyzABCDEF' ],
+			'private key'             => [ 'private_key=MIIEvQIBADANBgkq', 'MIIEvQIBADANBgkq' ],
+			'basic auth'              => [ 'Authorization: Basic dXNlcjpwYXNzd29yZA==', 'dXNlcjpwYXNzd29yZA' ],
+			'bearer token'            => [ 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.payload.sig', 'eyJhbGciOiJIUzI1NiJ9' ],
+			'signature header'        => [ 'X-Hub-Signature: sha256=9f86d081884c7d659a2f1234567890ab', '9f86d081884c7d659a2f' ],
+			'url userinfo'            => [ 'https://admin:hunter2pass@api.example.com/v1/x', 'hunter2pass' ],
+			'json token value'        => [ '{"token": "abc123def456", "ok": false}', 'abc123def456' ],
+			'query string'            => [ 'GET https://example.com/reset?key=supersecretvalue failed', 'supersecretvalue' ],
+		];
+	}
+
+	/**
+	 * The diagnosis survives, which is the half with no coverage before now.
+	 *
+	 * An earlier version of these rules truncated every URL path, including
+	 * same-origin ones -- but `source` is a stack frame, not a page address, so
+	 * that deleted the filename, the line and column, and which plugin threw. It
+	 * also redacted ordinary prose, because the credential rule accepted a bare
+	 * space as a separator: "Invalid token provided" and "password protected" are
+	 * among the most common things support reads out of this log.
+	 *
+	 * @dataProvider provide_diagnostics
+	 * @param string $input  Log text as it would arrive.
+	 * @param string $needle The substring support needs to still be there.
+	 */
+	public function test_scrub_text_keeps_the_diagnosis( $input, $needle ) {
+		$this->assertStringContainsString(
+			$needle,
+			Client_Logger::scrub_text( $input ),
+			'Redaction must not cost the reason the log is read.'
+		);
+	}
+
+	/**
+	 * Inputs whose diagnostic content must survive scrub_text().
+	 *
+	 * @return array
+	 */
+	public function provide_diagnostics() {
+		return [
+			'own stack frame'   => [ 'at handleSubmit (' . home_url( '/wp-content/plugins/sureforms/assets/js/form-submit.min.js' ) . ':12:3456)', 'form-submit.min.js' ],
+			'own line number'   => [ 'at handleSubmit (' . home_url( '/wp-content/plugins/sureforms/assets/js/form-submit.min.js' ) . ':12:3456)', ':12:3456' ],
+			'prose token'       => [ 'Invalid token provided', 'token provided' ],
+			'prose password'    => [ 'This form is password protected', 'password protected' ],
+			'captcha message'   => [ 'captcha token verification failed', 'token verification failed' ],
+			'prose secret'      => [ 'The secret provided was rejected', 'secret provided' ],
+			'http status'       => [ 'Submission responded 500 (text/html)', '500' ],
+			'foreign host kept' => [ 'POST https://hooks.slack.com/services/T0/B0/tok failed', 'hooks.slack.com' ],
+		];
+	}
+
+	/**
+	 * Logging off records nothing, not merely displays nothing.
+	 *
+	 * The display side was already gated. The counter was not: the two record_failure()
+	 * calls in form-submit.php sit beside an append() that the enabled check does stop,
+	 * so a site with logging switched off kept accumulating failure state invisibly --
+	 * and switching logging back on surfaced every fault from the quiet period, behind a
+	 * View details report whose debug log is empty because nothing was ever written.
+	 *
+	 * Asserted across the toggle rather than in one state, because "no notice right now"
+	 * was already true and is what hid this.
+	 */
+	public function test_nothing_is_recorded_while_logging_is_disabled() {
+		$general = get_option( 'srfm_general_settings_options', [] );
+		$general = is_array( $general ) ? $general : [];
+
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Client_Logger::clear();
+
+		update_option( 'srfm_general_settings_options', array_merge( $general, [ 'srfm_enable_logs' => false ] ) );
+		$this->assertFalse( Client_Logger::is_enabled(), 'Fixture must actually switch logging off.' );
+
+		// Every path that reports a fault: the server-side categories called directly
+		// from form-submit.php, and the client entries that route through append().
+		Client_Logger::record_failure( 'notification', 42, 'Contact Form' );
+		Client_Logger::record_failure( 'integration', 42, 'Contact Form' );
+		Client_Logger::append(
+			Client_Logger::sanitize_entry(
+				[
+					'type'    => 'network',
+					'status'  => 500,
+					'form_id' => 42,
+					'message' => 'Submission responded 500',
+				]
+			)
+		);
+
+		$this->assertSame( 0, Client_Logger::get_file_size(), 'Nothing may be written to the log.' );
+		$this->assertSame( [], Client_Logger::get_failures(), 'Nothing may be counted either.' );
+		$this->assertSame( [], Client_Logger::get_open_failures(), 'So there is nothing to raise a notice about.' );
+
+		// Switching logging on must not surface a backlog from the quiet period.
+		update_option( 'srfm_general_settings_options', array_merge( $general, [ 'srfm_enable_logs' => true ] ) );
+
+		$this->assertTrue( Client_Logger::is_enabled() );
+		$this->assertSame(
+			[],
+			Client_Logger::get_open_failures(),
+			'Turning logging on must not reveal faults from while it was off -- there is no log behind them.'
+		);
+
+		// And recording works again, so the guard is not simply always denying.
+		Client_Logger::record_failure( 'notification', 42, 'Contact Form' );
+		$this->assertArrayHasKey( 'notification', Client_Logger::get_open_failures() );
+
+		update_option( 'srfm_general_settings_options', $general );
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Client_Logger::clear();
+	}
+
+	/**
+	 * An after-submission failure the browser only guessed at raises no notice.
+	 *
+	 * The step runs after the entry is saved. When the client reports it without a
+	 * status it is reporting an abandoned fetch -- the page unloading behind a
+	 * redirect confirmation, which is what keepalive exists to survive -- and that
+	 * says nothing about whether the server ran srfm_after_submission_process. It is
+	 * guarded by is_after_submission_process_triggered and usually has.
+	 *
+	 * This shipped as type 'error', which is_fault() counts unconditionally, so every
+	 * Safari "TypeError: Load failed" raised a non-dismissible notice reading
+	 * "Visitors may not be able to reach you, and their entries were not saved" about
+	 * entries that were saved and visitors who saw the success message.
+	 */
+	public function test_a_browser_side_after_submission_failure_is_not_a_fault() {
+		$entry = Client_Logger::sanitize_entry(
+			[
+				'type'    => 'after_submission',
+				'form_id' => 4355,
+				'message' => 'After-submission step failed: TypeError: Load failed',
+			]
+		);
+
+		$this->assertNotEmpty( $entry, 'The type must survive sanitisation, or it is never logged at all.' );
+		$this->assertFalse(
+			Client_Logger::is_fault( $entry ),
+			'A fetch the browser abandoned is not evidence the server did not do the work.'
+		);
+	}
+
+	/**
+	 * A server-confirmed after-submission failure is a fault, and an integration one.
+	 *
+	 * srfm_after_submission_process is where integrations and webhooks hook in, so a
+	 * 5xx there means a third party did not receive the entry -- which is what the
+	 * integration notice says. The submission notice says entries were not saved, and
+	 * by this point they have been.
+	 */
+	public function test_a_server_confirmed_after_submission_failure_is_an_integration_fault() {
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Client_Logger::clear();
+
+		$entry = Client_Logger::sanitize_entry(
+			[
+				'type'    => 'after_submission',
+				'status'  => 500,
+				'form_id' => 4355,
+				'message' => 'After-submission step responded 500',
+			]
+		);
+
+		$this->assertTrue( Client_Logger::is_fault( $entry ), 'The server said it failed.' );
+
+		Client_Logger::append( $entry );
+
+		$open = Client_Logger::get_open_failures();
+
+		$this->assertArrayHasKey( 'integration', $open, 'A failed after-submission step is an integration failure.' );
+		$this->assertArrayNotHasKey(
+			'submission',
+			$open,
+			'It must not claim the entry was never saved -- it was saved before this step ran.'
+		);
+
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Client_Logger::clear();
+	}
+
+	/**
+	 * A captcha stop is the visitor's to clear, and raises nothing.
+	 *
+	 * Pinned because it is the precedent the after-submission rule above follows, and
+	 * because "Please verify that you are not a robot" is among the most common lines
+	 * in a real log -- counting it would tell healthy sites to contact support.
+	 */
+	public function test_a_blocked_entry_is_not_a_fault() {
+		$entry = Client_Logger::sanitize_entry(
+			[
+				'type'    => 'blocked',
+				'form_id' => 4355,
+				'message' => 'Blocked before submit: Please verify that you are not a robot.',
+			]
+		);
+
+		$this->assertNotEmpty( $entry );
+		$this->assertFalse( Client_Logger::is_fault( $entry ) );
+	}
+
+	/**
+	 * A site on a non-default port keeps its own stack frames.
+	 *
+	 * The URL pattern captures the whole authority, so a frame from a site served on
+	 * :8443 arrives as `example.test:8443`, while $site_host is PHP_URL_HOST and never
+	 * carries a port. Every own frame therefore failed the same-origin check and was
+	 * truncated to /[path] -- deleting the filename, the line and the column, which is
+	 * the exact loss this exemption exists to prevent. Local installs, staging behind a
+	 * proxy and anything not on 80/443 were all affected.
+	 *
+	 * The existing provider cannot catch this: it builds its frames from home_url(),
+	 * which has no port on the test site, so both sides of the comparison match by
+	 * accident.
+	 */
+	public function test_scrub_text_keeps_own_frames_on_a_non_default_port() {
+		$home = static function () {
+			return 'https://example.test:8443';
+		};
+
+		add_filter( 'home_url', $home, 99 );
+
+		$own = Client_Logger::scrub_text(
+			'at handleSubmit (https://example.test:8443/wp-content/plugins/sureforms/assets/js/form-submit.min.js:12:3456)'
+		);
+
+		// A foreign host, same port, so the port strip cannot have turned the
+		// exemption into "anything carrying a port is ours".
+		$foreign = Client_Logger::scrub_text(
+			'POST https://hooks.slack.com:8443/services/T0/B0/tok failed'
+		);
+
+		remove_filter( 'home_url', $home, 99 );
+
+		$this->assertStringContainsString( 'form-submit.min.js', $own, 'The filename is the diagnosis.' );
+		$this->assertStringContainsString( ':12:3456', $own, 'So are the line and column.' );
+		$this->assertStringNotContainsString( '[path]', $own, 'Our own frame must not be truncated.' );
+
+		$this->assertStringContainsString( 'hooks.slack.com', $foreign, 'The origin still identifies the third party.' );
+		$this->assertStringNotContainsString( 'tok', $foreign, 'A foreign path may still hold a credential.' );
+	}
+
 	/**
 	 * A phone number is written 555-123-4567, not 5551234567, so a
 	 * contiguous-digits rule never sees a real one. The earlier test only used an
diff --git a/tests/unit/inc/test-field-validation.php b/tests/unit/inc/test-field-validation.php
index 3ff0aea00..d0267f595 100644
--- a/tests/unit/inc/test-field-validation.php
+++ b/tests/unit/inc/test-field-validation.php
@@ -535,6 +535,74 @@ public function test_strip_unknown_field_keys_keeps_non_alphanumeric_block_id()
 		wp_delete_post( $form_id, true );
 	}
 
+	/**
+	 * Both allowlists come from one walk, not one each.
+	 *
+	 * walk_field_identifiers() returns ids and slugs together precisely so the form is
+	 * parsed once, but each public getter used to hold its own `static $cache`, so
+	 * parse_blocks() plus the recursive collect ran twice on every submission.
+	 *
+	 * Observed rather than counted: the content is removed between the two calls, so a
+	 * second walk has nothing to find. With one shared memo the slugs are already
+	 * cached and survive; with a cache per getter the second call re-walks an empty
+	 * form and returns nothing.
+	 */
+	public function test_both_allowlists_come_from_a_single_walk() {
+		$form_id = wp_insert_post(
+			[
+				'post_type'    => 'sureforms_form',
+				'post_status'  => 'publish',
+				'post_title'   => 'One Walk',
+				'post_content' => '',
+			]
+		);
+
+		$ids = Field_Validation::get_known_field_block_ids( $form_id );
+		$this->assertArrayHasKey( 'aaa111', $ids, 'Fixture must produce a block id to begin with.' );
+
+		// Anything a second walk would read is now gone.
+		wp_update_post(
+			[
+				'ID'           => $form_id,
+				'post_content' => '',
+			]
+		);
+
+		$this->assertArrayHasKey(
+			'finish-time',
+			Field_Validation::get_known_field_slugs( $form_id ),
+			'The slugs must come from the walk the block-id call already did, not from a second one.'
+		);
+
+		wp_delete_post( $form_id, true );
+	}
+
+	/**
+	 * get_known_field_slugs() collects the slug of every SureForms field in the form,
+	 * recursing into innerBlocks, so a submitted field can be matched by its stable
+	 * slug when its block_id has drifted.
+	 */
+	public function test_get_known_field_slugs_collects_field_slugs() {
+		$form_id = wp_insert_post(
+			[
+				'post_type'    => 'sureforms_form',
+				'post_status'  => 'publish',
+				'post_title'   => 'Slug Set Form',
+				'post_content' => ''
+					. '',
+			]
+		);
+
+		$slugs = Field_Validation::get_known_field_slugs( $form_id );
+
+		$this->assertArrayHasKey( 'finish-time', $slugs );
+		$this->assertArrayHasKey( 'result-url', $slugs );
+		$this->assertArrayNotHasKey( 'not-a-field', $slugs );
+		$this->assertSame( [], Field_Validation::get_known_field_slugs( 0 ), 'invalid form id yields an empty set' );
+
+		wp_delete_post( $form_id, true );
+	}
+
 	/**
 	 * Invalid form ids return an empty set (callers fail open).
 	 */
@@ -579,6 +647,57 @@ public function test_strip_unknown_field_keys_drops_invented_keys() {
 		wp_delete_post( $form_id, true );
 	}
 
+	/**
+	 * REGRESSION (#1517643): a field whose block_id drifted between the rendered HTML
+	 * the visitor submitted and the current post_content — the systematic case on a
+	 * full-page-cached site, or after an editor rebuild — must survive on its slug.
+	 *
+	 * Matching on block_id alone silently deleted real submission data (keys absent,
+	 * success message shown). The slug is the stable field identifier, so a slug match
+	 * keeps the field.
+	 */
+	public function test_strip_unknown_field_keys_keeps_a_drifted_block_id_via_slug() {
+		$form_id = wp_insert_post(
+			[
+				'post_type'    => 'sureforms_form',
+				'post_status'  => 'publish',
+				'post_title'   => 'Drift Form',
+				'post_content' => '',
+			]
+		);
+
+		// Different block_id (drift), same stable slug 'finish-time'.
+		$drifted = 'srfm-input-cachedid-lbl-RmluaXNo-finish-time';
+
+		$kept = Field_Validation::strip_unknown_field_keys( [ $drifted => 'value', 'form-id' => $form_id ], $form_id );
+
+		$this->assertArrayHasKey( $drifted, $kept, 'a field whose block_id drifted must survive on its slug' );
+
+		wp_delete_post( $form_id, true );
+	}
+
+	/**
+	 * The slug fallback must not weaken the anti-injection guard: a key with neither a
+	 * known block_id nor a known slug is still foreign and dropped.
+	 */
+	public function test_strip_unknown_field_keys_still_drops_foreign_block_id_and_slug() {
+		$form_id = wp_insert_post(
+			[
+				'post_type'    => 'sureforms_form',
+				'post_status'  => 'publish',
+				'post_title'   => 'Drift Form 2',
+				'post_content' => '',
+			]
+		);
+
+		$foreign  = 'srfm-input-deadbeef-lbl-R2hvc3Q-ghost';
+		$stripped = Field_Validation::strip_unknown_field_keys( [ $foreign => 'x', 'form-id' => $form_id ], $form_id );
+
+		$this->assertArrayNotHasKey( $foreign, $stripped, 'a key with neither a known block_id nor a known slug is dropped' );
+
+		wp_delete_post( $form_id, true );
+	}
+
 	/**
 	 * REGRESSION (#2993, review H1): repeater child keys must be validated too.
 	 *
diff --git a/tests/unit/inc/test-form-submit.php b/tests/unit/inc/test-form-submit.php
index 4022941d3..5afdcb95b 100644
--- a/tests/unit/inc/test-form-submit.php
+++ b/tests/unit/inc/test-form-submit.php
@@ -589,6 +589,292 @@ public function test_send_email() {
 		$this->assertTrue( method_exists( Form_Submit::class, 'send_email' ) );
 	}
 
+	/**
+	 * A notification getting through clears the notification fault.
+	 *
+	 * Nothing else retired that category. Client_Logger::clear_category() had one
+	 * caller, reset_fault_streak(), hardcoded to 'submission', and the notice is
+	 * deliberately not dismissible -- so a site that had fixed its SMTP kept an
+	 * undismissable banner on every admin page until somebody opened a support
+	 * ticket. wp_mail() is short-circuited rather than actually sent, because the
+	 * assertion is about what a success does, not about delivery.
+	 */
+	public function test_send_email_clears_the_notification_fault_on_success() {
+		delete_option( Client_Logger::FAILURES_OPTION );
+
+		$form_id = wp_insert_post(
+			[
+				'post_type'   => 'sureforms_form',
+				'post_title'  => 'Notification Recovery',
+				'post_status' => 'publish',
+			]
+		);
+
+		// Recorded against this form: clearing is scoped to the form the fault
+		// belongs to, because the counter is per category and the notice names a
+		// form.
+		Client_Logger::record_failure( 'notification', $form_id, 'Notification Recovery' );
+
+		$this->assertArrayHasKey(
+			'notification',
+			Client_Logger::get_open_failures(),
+			'Precondition: the fault is standing before the send.'
+		);
+
+		update_post_meta(
+			$form_id,
+			'_srfm_email_notification',
+			[
+				[
+					'id'     => 1,
+					'status' => true,
+				],
+			]
+		);
+
+		// Fixed, valid message, so the test does not depend on the template
+		// parser; and a short-circuited wp_mail(), so nothing is actually sent.
+		$parsed = static function () {
+			return [
+				'to'      => 'owner@example.com',
+				'subject' => 'New entry',
+				'message' => 'An entry arrived.',
+				'headers' => [],
+			];
+		};
+		$sent   = static function () {
+			return true;
+		};
+
+		add_filter( 'srfm_email_notification', $parsed, 99 );
+		add_filter( 'pre_wp_mail', $sent, 99 );
+
+		Form_Submit::send_email( $form_id, [] );
+
+		remove_filter( 'pre_wp_mail', $sent, 99 );
+		remove_filter( 'srfm_email_notification', $parsed, 99 );
+
+		$this->assertArrayNotHasKey(
+			'notification',
+			Client_Logger::get_open_failures(),
+			'A notification that sent must retire the notification fault.'
+		);
+
+		wp_delete_post( $form_id, true );
+		delete_option( Client_Logger::FAILURES_OPTION );
+	}
+
+	/**
+	 * A different form's notification succeeding must not clear the fault.
+	 *
+	 * send_email() runs on the public submit path and the counter is per category
+	 * rather than per form, so without the scoping an anonymous submission of a
+	 * working form retires a standing fault on a broken one -- repeatable once per
+	 * admin page load, by anyone. The notice names a form, so this is visible.
+	 */
+	public function test_send_email_does_not_clear_another_forms_notification_fault() {
+		delete_option( Client_Logger::FAILURES_OPTION );
+
+		$broken  = wp_insert_post(
+			[
+				'post_type'   => 'sureforms_form',
+				'post_title'  => 'Broken Form',
+				'post_status' => 'publish',
+			]
+		);
+		$working = wp_insert_post(
+			[
+				'post_type'   => 'sureforms_form',
+				'post_title'  => 'Working Form',
+				'post_status' => 'publish',
+			]
+		);
+
+		Client_Logger::record_failure( 'notification', $broken, 'Broken Form' );
+
+		update_post_meta(
+			$working,
+			'_srfm_email_notification',
+			[
+				[
+					'id'     => 1,
+					'status' => true,
+				],
+			]
+		);
+
+		$parsed = static function () {
+			return [
+				'to'      => 'owner@example.com',
+				'subject' => 'New entry',
+				'message' => 'An entry arrived.',
+				'headers' => [],
+			];
+		};
+		$sent   = static function () {
+			return true;
+		};
+
+		add_filter( 'srfm_email_notification', $parsed, 99 );
+		add_filter( 'pre_wp_mail', $sent, 99 );
+
+		Form_Submit::send_email( $working, [] );
+
+		remove_filter( 'pre_wp_mail', $sent, 99 );
+		remove_filter( 'srfm_email_notification', $parsed, 99 );
+
+		$this->assertArrayHasKey(
+			'notification',
+			Client_Logger::get_open_failures(),
+			"A working form's success must not retire another form's fault."
+		);
+
+		wp_delete_post( $broken, true );
+		wp_delete_post( $working, true );
+		delete_option( Client_Logger::FAILURES_OPTION );
+	}
+
+	/**
+	 * One recipient succeeding while another fails is still a failure.
+	 *
+	 * This is the case the flag is hoisted out of the loop for, and the one
+	 * nothing covered: with the clear inside the loop, the succeeding recipient
+	 * would retire a fault the failing one had just recorded. Two notifications on
+	 * one form, the first delivering and the second not.
+	 */
+	public function test_send_email_keeps_the_notification_fault_on_a_mixed_loop() {
+		delete_option( Client_Logger::FAILURES_OPTION );
+
+		$form_id = wp_insert_post(
+			[
+				'post_type'   => 'sureforms_form',
+				'post_title'  => 'Mixed Notifications',
+				'post_status' => 'publish',
+			]
+		);
+
+		Client_Logger::record_failure( 'notification', $form_id, 'Mixed Notifications' );
+
+		update_post_meta(
+			$form_id,
+			'_srfm_email_notification',
+			[
+				[
+					'id'     => 1,
+					'status' => true,
+				],
+				[
+					'id'     => 2,
+					'status' => true,
+				],
+			]
+		);
+
+		// First recipient valid, second empty -- and an empty destination fails in
+		// every environment, where a failing transport does not, because
+		// send_email() falls back to PHP's mail().
+		$calls  = 0;
+		$parsed = static function () use ( &$calls ) {
+			$calls++;
+
+			return [
+				'to'      => 1 === $calls ? 'owner@example.com' : '',
+				'subject' => 'New entry',
+				'message' => 'An entry arrived.',
+				'headers' => [],
+			];
+		};
+
+		// Only the first send succeeds; the second falls through to mail( '' ).
+		$sent = static function () use ( &$calls ) {
+			return 1 === $calls;
+		};
+
+		add_filter( 'srfm_email_notification', $parsed, 99 );
+		add_filter( 'pre_wp_mail', $sent, 99 );
+
+		Form_Submit::send_email( $form_id, [] );
+
+		remove_filter( 'pre_wp_mail', $sent, 99 );
+		remove_filter( 'srfm_email_notification', $parsed, 99 );
+
+		$this->assertSame( 2, $calls, 'Both notifications must have been attempted.' );
+		$this->assertArrayHasKey(
+			'notification',
+			Client_Logger::get_open_failures(),
+			'One recipient failing leaves the fault standing, however many succeeded.'
+		);
+
+		wp_delete_post( $form_id, true );
+		delete_option( Client_Logger::FAILURES_OPTION );
+	}
+
+	/**
+	 * A notification still failing leaves the fault standing.
+	 *
+	 * The mirror of the test above, and the reason the flag is read after the loop
+	 * rather than inside it: one recipient succeeding while another fails is still
+	 * a failure, and clearing on the success would erase the report.
+	 *
+	 * Failure is forced with an empty recipient rather than a failing transport.
+	 * send_email() falls back to PHP's mail() when wp_mail() returns false, and
+	 * mail() is not filterable -- on a machine with a working sendmail it succeeds
+	 * and the send is not a failure at all. An empty destination fails in every
+	 * environment.
+	 */
+	public function test_send_email_keeps_the_notification_fault_on_failure() {
+		delete_option( Client_Logger::FAILURES_OPTION );
+		Client_Logger::record_failure( 'notification', 0, 'Contact Form' );
+
+		$form_id = wp_insert_post(
+			[
+				'post_type'   => 'sureforms_form',
+				'post_title'  => 'Notification Still Broken',
+				'post_status' => 'publish',
+			]
+		);
+
+		update_post_meta(
+			$form_id,
+			'_srfm_email_notification',
+			[
+				[
+					'id'     => 1,
+					'status' => true,
+				],
+			]
+		);
+
+		$parsed = static function () {
+			return [
+				'to'      => '',
+				'subject' => 'New entry',
+				'message' => 'An entry arrived.',
+				'headers' => [],
+			];
+		};
+		$failed = static function () {
+			return false;
+		};
+
+		add_filter( 'srfm_email_notification', $parsed, 99 );
+		add_filter( 'pre_wp_mail', $failed, 99 );
+
+		Form_Submit::send_email( $form_id, [] );
+
+		remove_filter( 'pre_wp_mail', $failed, 99 );
+		remove_filter( 'srfm_email_notification', $parsed, 99 );
+
+		$this->assertArrayHasKey(
+			'notification',
+			Client_Logger::get_open_failures(),
+			'A notification that did not send must leave the fault standing.'
+		);
+
+		wp_delete_post( $form_id, true );
+		delete_option( Client_Logger::FAILURES_OPTION );
+	}
+
 	/**
 	 * Test field_unique_validation is callable.
 	 */
diff --git a/tests/unit/inc/test-forms-data.php b/tests/unit/inc/test-forms-data.php
index 8cf013b80..0d4ab3411 100644
--- a/tests/unit/inc/test-forms-data.php
+++ b/tests/unit/inc/test-forms-data.php
@@ -8,6 +8,7 @@
 use Yoast\PHPUnitPolyfills\TestCases\TestCase;
 use SRFM\Inc\Forms_Data;
 use SRFM\Inc\Helper;
+use SRFM\Inc\Database\Tables\Entries;
 
 class Test_Forms_Data extends TestCase {
 
@@ -15,6 +16,24 @@ class Test_Forms_Data extends TestCase {
 
 	protected function setUp(): void {
 		$this->forms_data = new Forms_Data();
+		$this->reset_editing_cache();
+	}
+
+	protected function tearDown(): void {
+		// The list is memoised for the request, and a test process is one request.
+		// Left behind it holds ids of users a later test has already deleted.
+		$this->reset_editing_cache();
+
+		parent::tearDown();
+	}
+
+	/**
+	 * Clear Forms_Data's per-request editor cache.
+	 */
+	private function reset_editing_cache(): void {
+		$cache = new ReflectionProperty( Forms_Data::class, 'editing_user_ids' );
+		$cache->setAccessible( true );
+		$cache->setValue( null, null );
 	}
 
 	public function test_get_form_permissions_check_admin() {
@@ -62,6 +81,19 @@ public function test_register_custom_endpoint() {
 	// get_forms_list()
 	// ---------------------------------------------------------------
 
+	/**
+	 * Create a user with the given role. Not set as the current user.
+	 */
+	private function make_user( string $role ): int {
+		return (int) wp_insert_user(
+			[
+				'user_login' => 'srfm_' . $role . '_' . wp_generate_password( 6, false ),
+				'user_pass'  => 'password',
+				'role'       => $role,
+			]
+		);
+	}
+
 	/**
 	 * Helper: create an admin user, set as current, and return the user ID.
 	 */
@@ -244,37 +276,183 @@ public function test_calculate_form_metrics() {
 		$form_id = $this->make_tracked_form( 10 );
 
 		// Tracking off → no numbers at all, and no entry query.
-		$off = $this->call_private( 'calculate_form_metrics', [ $form_id, '', null ] );
+		$off = $this->call_private( 'calculate_form_metrics', [ $form_id ] );
 		$this->assertSame( 0, $off['views'], 'Views must not be reported while the feature is off.' );
 		$this->assertNull( $off['conversion_rate'], 'No rate while the feature is off.' );
 
 		// Enable → window opens, views are reported.
 		update_option( 'srfm_general_settings_options', [ 'srfm_form_views_tracking' => true ] );
-		$on = $this->call_private( 'calculate_form_metrics', [ $form_id, '', null ] );
+		$on = $this->call_private( 'calculate_form_metrics', [ $form_id ] );
 		$this->assertSame( 10, $on['views'], 'Views should be reported once enabled.' );
 		$this->assertSame( 0.0, $on['conversion_rate'], 'No entries yet is a real 0%, not a dash.' );
 
 		// A form with no views cannot have a rate — 0 views is not 0%.
 		$unseen = $this->make_tracked_form( 0 );
-		$none   = $this->call_private( 'calculate_form_metrics', [ $unseen, '', null ] );
+		$none   = $this->call_private( 'calculate_form_metrics', [ $unseen ] );
 		$this->assertSame( 0, $none['views'] );
 		$this->assertNull( $none['conversion_rate'], 'Zero views must give a dash, not 0%.' );
 
-		// More entries than views is impossible, so the count is incomplete and any
-		// percentage would be invented. The caller's all-time count is used directly
-		// when the form is younger than the window, which is the cheap path.
-		$young = $this->make_tracked_form( 2, gmdate( 'Y-m-d H:i:s' ) );
-		$over  = $this->call_private( 'calculate_form_metrics', [ $young, gmdate( 'Y-m-d H:i:s' ), 50 ] );
+		// More entries than views means the view count is incomplete, so any
+		// percentage would be invented.
+		$over_form = $this->make_tracked_form( 2 );
+		for ( $i = 0; $i < 3; $i++ ) {
+			Entries::add(
+				[
+					'form_id'   => $over_form,
+					'form_data' => [],
+				]
+			);
+		}
+		$over = $this->call_private( 'calculate_form_metrics', [ $over_form ] );
 		$this->assertSame( 2, $over['views'] );
 		$this->assertNull( $over['conversion_rate'], 'Entries exceeding views must render as a dash, never >100%.' );
 
-		// Normal case on the cheap path: 1 entry, 2 views → 50%.
-		$half = $this->call_private( 'calculate_form_metrics', [ $young, gmdate( 'Y-m-d H:i:s' ), 1 ] );
+		// Normal case: 1 entry, 2 views → 50%.
+		$half_form = $this->make_tracked_form( 2 );
+		Entries::add(
+			[
+				'form_id'   => $half_form,
+				'form_data' => [],
+			]
+		);
+		$half = $this->call_private( 'calculate_form_metrics', [ $half_form ] );
 		$this->assertSame( 50.0, $half['conversion_rate'] );
 
 		wp_delete_post( $form_id, true );
 		wp_delete_post( $unseen, true );
-		wp_delete_post( $young, true );
+		wp_delete_post( $over_form, true );
+		wp_delete_post( $half_form, true );
+		delete_option( 'srfm_general_settings_options' );
+		delete_option( \SRFM\Inc\Form_Views::TRACKING_STARTED_OPTION );
+	}
+
+	/**
+	 * Entries submitted by someone who can edit the site are left out of the rate.
+	 *
+	 * Views already exclude those people (Form_Views::should_track()), so counting
+	 * their submissions adds to the numerator and nothing to the denominator. An
+	 * admin testing a new form five times would report a rate several times the
+	 * real one, or trip the entries-exceed-views guard and render a dash on a form
+	 * that is working perfectly well.
+	 */
+	public function test_calculate_form_metrics_excludes_entries_from_users_who_can_edit() {
+		delete_option( \SRFM\Inc\Form_Views::TRACKING_STARTED_OPTION );
+		update_option( 'srfm_general_settings_options', [ 'srfm_form_views_tracking' => true ] );
+
+		$editor     = $this->make_user( 'editor' );
+		$subscriber = $this->make_user( 'subscriber' );
+
+		// The list is cached per request, and these users were created after
+		// earlier tests in this class already warmed it.
+		$this->reset_editing_cache();
+
+		$form_id = $this->make_tracked_form( 10 );
+
+		// Four entries, three of which must not count: the admin and editor can edit
+		// the site, so their views were never recorded either.
+		foreach ( [ 1, $editor, $editor, 0 ] as $user_id ) {
+			Entries::add(
+				[
+					'form_id'   => $form_id,
+					'user_id'   => $user_id,
+					'form_data' => [],
+				]
+			);
+		}
+
+		$metrics = $this->call_private( 'calculate_form_metrics', [ $form_id ] );
+
+		$this->assertSame( 10, $metrics['views'] );
+		$this->assertSame(
+			10.0,
+			$metrics['conversion_rate'],
+			'Only the logged-out entry counts: 1 of 10 views is 10%, not 40%.'
+		);
+
+		// A logged-in visitor who cannot edit is a real conversion, and their view
+		// was counted, so their entry must be counted too.
+		Entries::add(
+			[
+				'form_id'   => $form_id,
+				'user_id'   => $subscriber,
+				'form_data' => [],
+			]
+		);
+
+		$with_subscriber = $this->call_private( 'calculate_form_metrics', [ $form_id ] );
+		$this->assertSame(
+			20.0,
+			$with_subscriber['conversion_rate'],
+			'A subscriber is a genuine visitor on both halves of the rate.'
+		);
+
+		wp_delete_post( $form_id, true );
+		wp_delete_user( $editor );
+		wp_delete_user( $subscriber );
+		delete_option( 'srfm_general_settings_options' );
+		delete_option( \SRFM\Inc\Form_Views::TRACKING_STARTED_OPTION );
+	}
+
+	/**
+	 * Past the submitter ceiling the exclusion is skipped, and says so.
+	 *
+	 * Testing every in-window submitter for edit access is bounded work per
+	 * submitter, so a site where most submissions are made while logged in needs a
+	 * stop. The exclusion is dropped whole rather than truncated: a partial list
+	 * reports a rate that is wrong in a way nobody can see, while no list at least
+	 * reproduces the behaviour that shipped before it existed.
+	 */
+	public function test_calculate_form_metrics_skips_the_exclusion_past_the_submitter_ceiling() {
+		delete_option( \SRFM\Inc\Form_Views::TRACKING_STARTED_OPTION );
+		update_option( 'srfm_general_settings_options', [ 'srfm_form_views_tracking' => true ] );
+
+		$editor_one = $this->make_user( 'editor' );
+		$editor_two = $this->make_user( 'editor' );
+
+		$this->reset_editing_cache();
+
+		$form_id = $this->make_tracked_form( 10 );
+
+		foreach ( [ $editor_one, $editor_two ] as $user_id ) {
+			Entries::add(
+				[
+					'form_id'   => $form_id,
+					'user_id'   => $user_id,
+					'form_data' => [],
+				]
+			);
+		}
+
+		$announced = 0;
+		$reported  = null;
+		$listener  = static function ( $count, $limit ) use ( &$announced, &$reported ) {
+			$announced++;
+			$reported = [ $count, $limit ];
+		};
+
+		$ceiling = static function () {
+			return 1;
+		};
+
+		add_filter( 'srfm_forms_metric_submitter_limit', $ceiling );
+		add_action( 'srfm_forms_metric_submitter_limit_exceeded', $listener, 10, 2 );
+
+		$metrics = $this->call_private( 'calculate_form_metrics', [ $form_id ] );
+
+		remove_action( 'srfm_forms_metric_submitter_limit_exceeded', $listener, 10 );
+		remove_filter( 'srfm_forms_metric_submitter_limit', $ceiling );
+
+		$this->assertSame( 1, $announced, 'Skipping the exclusion must be announced, not silent.' );
+		$this->assertSame( [ 2, 1 ], $reported, 'The action reports the count found and the ceiling in force.' );
+		$this->assertSame(
+			20.0,
+			$metrics['conversion_rate'],
+			'Past the ceiling both editor entries count, which is the pre-exclusion behaviour.'
+		);
+
+		wp_delete_post( $form_id, true );
+		wp_delete_user( $editor_one );
+		wp_delete_user( $editor_two );
 		delete_option( 'srfm_general_settings_options' );
 		delete_option( \SRFM\Inc\Form_Views::TRACKING_STARTED_OPTION );
 	}
@@ -288,7 +466,7 @@ public function test_prepare_form_for_listing() {
 
 		$form_id = $this->make_tracked_form( 7 );
 		$row     = $this->call_private( 'prepare_form_for_listing', [ get_post( $form_id ) ] );
-		$metrics = $this->call_private( 'calculate_form_metrics', [ $form_id, get_post( $form_id )->post_date_gmt, $row['entries_count'] ] );
+		$metrics = $this->call_private( 'calculate_form_metrics', [ $form_id ] );
 
 		$this->assertSame( $metrics['views'], $row['views'], 'The row must show the calculated views.' );
 		$this->assertSame( $metrics['conversion_rate'], $row['conversion_rate'], 'The row must show the calculated rate.' );
diff --git a/tests/unit/inc/test-frontend-assets.php b/tests/unit/inc/test-frontend-assets.php
index fde536fa3..f657f721c 100644
--- a/tests/unit/inc/test-frontend-assets.php
+++ b/tests/unit/inc/test-frontend-assets.php
@@ -20,6 +20,31 @@ class Test_Frontend_Assets extends TestCase {
 	 */
 	protected $frontend_assets;
 
+	/**
+	 * Posts to remove after each test.
+	 *
+	 * This suite uses Yoast's TestCase rather than WP_UnitTestCase, so there is
+	 * no per-test rollback -- a failed assertion would otherwise leak a
+	 * published post into the rest of the run.
+	 *
+	 * @var array
+	 */
+	protected $created_posts = [];
+
+	/**
+	 * Query state to restore, so one test cannot leak a view into the next.
+	 *
+	 * @var array
+	 */
+	protected $previous_query = [];
+
+	/**
+	 * Whether this test faked a wp_head() having already fired.
+	 *
+	 * @var bool
+	 */
+	protected $faked_wp_head = false;
+
 	/**
 	 * Set up test fixtures.
 	 */
@@ -163,4 +188,218 @@ public function test_enqueue_scripts_and_styles() {
 		$this->assertTrue( wp_style_is( SRFM_SLUG . '-frontend-default', 'enqueued' ), 'SureForms stylesheets should be enqueued by default.' );
 		$this->assertTrue( wp_style_is( SRFM_SLUG . '-form', 'enqueued' ), 'SureForms stylesheets should be enqueued by default.' );
 	}
+
+	/**
+	 * On a single form, assets a discarded render already claimed are forgotten.
+	 *
+	 * A page builder that renders the whole page through its own
+	 * `template_include` filter runs `wp_head()`/`wp_footer()` inside a buffer
+	 * that page_template() then discards, leaving every handle in
+	 * `WP_Styles::$done` / `WP_Scripts::$done`. Without the reset the Instant
+	 * Form template's own wp_head()/wp_footer() print nothing -- no stylesheets,
+	 * and no footer-registered `srfm-form-submit`, so the form cannot submit.
+	 *
+	 * The style and script handles here are asserted separately: the styles are
+	 * the reported symptom, the footer script is the one that stops the form
+	 * working, and a reset that covered only one registry would leave the other
+	 * broken.
+	 */
+	public function test_page_template_clears_assets_claimed_by_a_discarded_render() {
+		$form_id = $this->make_form();
+		$this->make_singular( $form_id );
+
+		wp_register_style( 'srfm-test-style', 'https://example.org/s.css', [], '1' );
+		wp_register_script( 'srfm-test-footer-script', 'https://example.org/s.js', [], '1', true );
+
+		// The state a discarded builder render leaves behind.
+		$this->mark_wp_head_as_fired();
+		wp_styles()->done  = [ 'srfm-test-style' ];
+		wp_scripts()->done = [ 'srfm-test-footer-script' ];
+
+		$this->frontend_assets->page_template( 'irrelevant-builder-relay.php' );
+
+		$this->assertFalse(
+			wp_style_is( 'srfm-test-style', 'done' ),
+			'A stylesheet claimed by the discarded render must be printable again.'
+		);
+		$this->assertFalse(
+			wp_script_is( 'srfm-test-footer-script', 'done' ),
+			'A footer script claimed by the discarded render must be printable again, or the form cannot submit.'
+		);
+	}
+
+	/**
+	 * With no earlier render, page_template() leaves the registries untouched.
+	 *
+	 * This is the ordinary path on the overwhelming majority of installs, which
+	 * have no page builder taking over `template_include` at all. Nothing has
+	 * been printed yet, so there is nothing to forget and the reset must be
+	 * inert -- asserted on the specific handle rather than on the array being
+	 * empty, since other tests in this suite leave handles behind.
+	 */
+	public function test_page_template_keeps_printed_assets_without_an_earlier_render() {
+		$form_id = $this->make_form();
+		$this->make_singular( $form_id );
+
+		wp_register_style( 'srfm-test-style', 'https://example.org/s.css', [], '1' );
+		wp_styles()->done = [ 'srfm-test-style' ];
+
+		// Deliberately do NOT mark wp_head as fired.
+		$this->frontend_assets->page_template( 'irrelevant.php' );
+
+		$this->assertTrue(
+			wp_style_is( 'srfm-test-style', 'done' ),
+			'Without a discarded render there is nothing to reset, so done must be left alone.'
+		);
+	}
+
+	/**
+	 * On any other page, page_template() touches neither the template nor assets.
+	 *
+	 * A page built in the site's page builder must keep both its own template and
+	 * its printed assets. Getting this wrong would strip the layout from every
+	 * page on the site, which is far worse than the bug being fixed, so the
+	 * negative is asserted as carefully as the positive.
+	 */
+	public function test_page_template_leaves_other_pages_alone() {
+		$page_id = wp_insert_post(
+			[
+				'post_title'  => 'An Ordinary Page',
+				'post_type'   => 'page',
+				'post_status' => 'publish',
+			]
+		);
+		$this->assertIsInt( $page_id, 'Test setup: the page fixture must insert.' );
+		$this->created_posts[] = $page_id;
+
+		$this->make_singular( $page_id );
+		$this->assertFalse( is_singular( SRFM_FORMS_POST_TYPE ), 'Test setup: this must not be a form page.' );
+
+		wp_register_style( 'srfm-test-style', 'https://example.org/s.css', [], '1' );
+		$this->mark_wp_head_as_fired();
+		wp_styles()->done = [ 'srfm-test-style' ];
+
+		$builder_template = 'builder-relay.php';
+
+		$this->assertSame(
+			$builder_template,
+			$this->frontend_assets->page_template( $builder_template ),
+			'Another plugin\'s template must be returned untouched off a form page.'
+		);
+		$this->assertTrue(
+			wp_style_is( 'srfm-test-style', 'done' ),
+			'Assets already printed on a page SureForms does not own must stay printed.'
+		);
+	}
+
+	/**
+	 * On a single form, the Instant Form template replaces whatever was passed in.
+	 *
+	 * Pins the behaviour the reset depends on: the incoming template really is
+	 * discarded, which is why the registry state it produced has to be discarded
+	 * with it.
+	 */
+	public function test_page_template_returns_the_instant_form_template() {
+		$form_id = $this->make_form();
+		$this->make_singular( $form_id );
+
+		$resolved = $this->frontend_assets->page_template( 'builder-relay.php' );
+
+		$this->assertNotSame( 'builder-relay.php', $resolved, 'The incoming template must not survive on a form page.' );
+		$this->assertStringEndsWith( 'single-form.php', $resolved, 'A single form must resolve to the Instant Form template.' );
+	}
+
+	/**
+	 * Create a published form fixture.
+	 *
+	 * @return int
+	 */
+	protected function make_form() {
+		$form_id = wp_insert_post(
+			[
+				'post_title'  => 'Instant Form Assets',
+				'post_type'   => SRFM_FORMS_POST_TYPE,
+				'post_status' => 'publish',
+			]
+		);
+
+		$this->assertIsInt( $form_id, 'Test setup: the form fixture must insert.' );
+		$this->created_posts[] = $form_id;
+
+		return $form_id;
+	}
+
+	/**
+	 * Put the main query on a singular view of the given post.
+	 *
+	 * go_to() belongs to WP_UnitTestCase and this suite uses Yoast's TestCase, so
+	 * the query globals are driven directly -- the same approach as
+	 * Test_Generate_Form_Markup.
+	 *
+	 * @param int $post_id Post to be the queried object.
+	 * @return void
+	 */
+	protected function make_singular( $post_id ) {
+		global $wp_query;
+
+		$this->previous_query = [
+			'is_singular'       => $wp_query->is_singular,
+			'queried_object'    => $wp_query->get_queried_object(),
+			'queried_object_id' => $wp_query->get_queried_object_id(),
+		];
+
+		$wp_query->is_singular       = true;
+		$wp_query->queried_object    = get_post( $post_id );
+		$wp_query->queried_object_id = $post_id;
+	}
+
+	/**
+	 * Make did_action( 'wp_head' ) report a completed head pass.
+	 *
+	 * The action counter is driven directly rather than firing `wp_head` for
+	 * real: doing that would run every registered head callback and echo a
+	 * document head into the test output. This is the one piece of state
+	 * `reset_printed_assets()` reads, so it is the only piece worth faking.
+	 *
+	 * @return void
+	 */
+	protected function mark_wp_head_as_fired() {
+		if ( did_action( 'wp_head' ) ) {
+			return;
+		}
+
+		$GLOBALS['wp_actions']['wp_head'] = 1;
+		$this->faked_wp_head              = true;
+	}
+
+	/**
+	 * Undo everything a test registered.
+	 */
+	protected function tearDown(): void {
+		wp_styles()->done  = [];
+		wp_scripts()->done = [];
+
+		wp_deregister_style( 'srfm-test-style' );
+		wp_deregister_script( 'srfm-test-footer-script' );
+
+		if ( $this->faked_wp_head ) {
+			unset( $GLOBALS['wp_actions']['wp_head'] );
+			$this->faked_wp_head = false;
+		}
+
+		if ( ! empty( $this->previous_query ) ) {
+			global $wp_query;
+			$wp_query->is_singular       = $this->previous_query['is_singular'];
+			$wp_query->queried_object    = $this->previous_query['queried_object'];
+			$wp_query->queried_object_id = $this->previous_query['queried_object_id'];
+			$this->previous_query        = [];
+		}
+
+		foreach ( $this->created_posts as $post_id ) {
+			wp_delete_post( $post_id, true );
+		}
+		$this->created_posts = [];
+
+		parent::tearDown();
+	}
 }
diff --git a/tests/unit/inc/test-helper.php b/tests/unit/inc/test-helper.php
index 9d63e4597..bd166bb67 100644
--- a/tests/unit/inc/test-helper.php
+++ b/tests/unit/inc/test-helper.php
@@ -3231,6 +3231,75 @@ public function test_get_active_caching_plugin() {
 		}
 	}
 
+	/**
+	 * Each plugin with a guide of its own must link to that guide.
+	 *
+	 * The point of the notice is advice the site owner can act on, and a page that
+	 * names the plugin they actually run is the difference between following it and
+	 * translating it. Asserted per plugin rather than as a count, so renaming a slug
+	 * fails here instead of quietly serving the general page.
+	 */
+	public function test_get_caching_plugin_doc_url() {
+		$expected = [
+			'litespeed-cache/litespeed-cache.php' => 'https://sureforms.com/docs/how-to-set-up-sureforms-with-litespeed-cache/',
+			'wp-rocket/wp-rocket.php'             => 'https://sureforms.com/docs/how-to-set-up-sureforms-with-wp-rocket/',
+			'w3-total-cache/w3-total-cache.php'   => 'https://sureforms.com/docs/how-to-set-up-sureforms-with-w3-total-cache/',
+			'wp-fastest-cache/wpFastestCache.php' => 'https://sureforms.com/docs/how-to-set-up-sureforms-with-wp-fastest-cache/',
+			'sg-cachepress/sg-cachepress.php'     => 'https://sureforms.com/docs/how-to-set-up-sureforms-with-siteground-optimizer/',
+			'autoptimize/autoptimize.php'         => 'https://sureforms.com/docs/how-to-set-up-sureforms-with-autoptimize/',
+		];
+
+		foreach ( $expected as $path => $url ) {
+			$filter = static function () use ( $path ) {
+				return [ $path ];
+			};
+
+			add_filter( 'pre_option_active_plugins', $filter );
+			$detected = Helper::get_caching_plugin_doc_url();
+			remove_filter( 'pre_option_active_plugins', $filter );
+
+			// Asserted on the prefix, not the whole string: the URL carries UTM
+			// parameters whose values depend on install attribution, and the claim
+			// here is about which guide it points at.
+			$this->assertStringStartsWith( $url, $detected, $path . ' must link to its own guide.' );
+		}
+	}
+
+	/**
+	 * A recognised plugin with no guide of its own, and a site with no caching
+	 * plugin at all, both fall back to the general guide.
+	 *
+	 * Returning nothing would leave the notice with a Help Me Fix link pointing
+	 * nowhere, which is worse than general advice.
+	 */
+	public function test_get_caching_plugin_doc_url_falls_back_to_the_general_guide() {
+		$general = 'https://sureforms.com/docs/how-to-set-up-sureforms-with-caching-plugins/';
+
+		// Recognised, but has no guide of its own.
+		$filter = static function () {
+			return [ 'breeze/breeze.php' ];
+		};
+
+		add_filter( 'pre_option_active_plugins', $filter );
+		$detected = Helper::get_caching_plugin_doc_url();
+		$name     = Helper::get_active_caching_plugin();
+		remove_filter( 'pre_option_active_plugins', $filter );
+
+		$this->assertStringStartsWith( $general, $detected, 'A plugin with no guide gets the general one.' );
+		$this->assertSame( 'Breeze', $name, 'It is still detected by name.' );
+
+		// No caching plugin at all.
+		$none = static function () {
+			return [ 'akismet/akismet.php' ];
+		};
+
+		add_filter( 'pre_option_active_plugins', $none );
+		$detected = Helper::get_caching_plugin_doc_url();
+		remove_filter( 'pre_option_active_plugins', $none );
+
+		$this->assertStringStartsWith( $general, $detected, 'No caching plugin still yields a usable link.' );
+	}
+
 	/**
 	 * A site with no caching plugin must produce nothing. Caching plugins are
 	 * common but far from universal, and a false positive puts a permanent