Changeset 3762168
- Timestamp:
- 10/23/2026 06:01:45 PM (8 days ago)
- Location:
- landexhub-consent
- Files:
-
- 38 edited
- 1 copied
-
tags/0.9.3 (copied) (copied from landexhub-consent/trunk )
-
tags/0.9.3/assets/js/landexhub-consent.js (modified) (1 diff)
-
tags/0.9.3/includes/class-landexhub-consent-admin.php (modified) (18 diffs)
-
tags/0.9.3/includes/class-landexhub-consent-frontend.php (modified) (5 diffs)
-
tags/0.9.3/includes/class-landexhub-consent-google-check.php (modified) (1 diff)
-
tags/0.9.3/includes/class-landexhub-consent-health.php (modified) (1 diff)
-
tags/0.9.3/includes/class-landexhub-consent-inventory.php (modified) (2 diffs)
-
tags/0.9.3/includes/class-landexhub-consent-scan.php (modified) (2 diffs)
-
tags/0.9.3/landexhub-consent.php (modified) (2 diffs)
-
tags/0.9.3/languages/landexhub-consent-cs_CZ.mo (modified) ( previous)
-
tags/0.9.3/languages/landexhub-consent-cs_CZ.po (modified) (2 diffs)
-
tags/0.9.3/languages/landexhub-consent-de_DE.mo (modified) ( previous)
-
tags/0.9.3/languages/landexhub-consent-de_DE.po (modified) (2 diffs)
-
tags/0.9.3/languages/landexhub-consent-pl_PL.mo (modified) ( previous)
-
tags/0.9.3/languages/landexhub-consent-pl_PL.po (modified) (2 diffs)
-
tags/0.9.3/languages/landexhub-consent-sk_SK.mo (modified) ( previous)
-
tags/0.9.3/languages/landexhub-consent-sk_SK.po (modified) (2 diffs)
-
tags/0.9.3/languages/landexhub-consent.pot (modified) (113 diffs)
-
tags/0.9.3/readme.txt (modified) (4 diffs)
-
tags/0.9.3/src/consent.ts (modified) (1 diff)
-
trunk/assets/js/landexhub-consent.js (modified) (1 diff)
-
trunk/includes/class-landexhub-consent-admin.php (modified) (18 diffs)
-
trunk/includes/class-landexhub-consent-frontend.php (modified) (5 diffs)
-
trunk/includes/class-landexhub-consent-google-check.php (modified) (1 diff)
-
trunk/includes/class-landexhub-consent-health.php (modified) (1 diff)
-
trunk/includes/class-landexhub-consent-inventory.php (modified) (2 diffs)
-
trunk/includes/class-landexhub-consent-scan.php (modified) (2 diffs)
-
trunk/landexhub-consent.php (modified) (2 diffs)
-
trunk/languages/landexhub-consent-cs_CZ.mo (modified) ( previous)
-
trunk/languages/landexhub-consent-cs_CZ.po (modified) (2 diffs)
-
trunk/languages/landexhub-consent-de_DE.mo (modified) ( previous)
-
trunk/languages/landexhub-consent-de_DE.po (modified) (2 diffs)
-
trunk/languages/landexhub-consent-pl_PL.mo (modified) ( previous)
-
trunk/languages/landexhub-consent-pl_PL.po (modified) (2 diffs)
-
trunk/languages/landexhub-consent-sk_SK.mo (modified) ( previous)
-
trunk/languages/landexhub-consent-sk_SK.po (modified) (2 diffs)
-
trunk/languages/landexhub-consent.pot (modified) (113 diffs)
-
trunk/readme.txt (modified) (4 diffs)
-
trunk/src/consent.ts (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
landexhub-consent/tags/0.9.3/assets/js/landexhub-consent.js
r3758640 r3762168 368 368 // that outlived the visitor's choice (it expired, or the cookie was removed). 369 369 pushWpConsent(state, "none" === source); 370 // The signals go out at once, so GTM knows a returning visitor's choice before its first tag. 370 371 gtag("consent", "update", signals(state)); 371 372 const ev = { event: cfg.dataLayer.onUpdate }; 372 373 ev.landexhub_consent = catBooleans(state); 373 374 ev.landexhub_consent_source = source; 374 w.dataLayer.push(ev); 375 // The event is meant for GTM triggers, which never see an event that comes before GTM's 376 // gtm.js. A page-load event usually does, a choice made in the bar only rarely. 377 afterGtmStart(function () { w.dataLayer.push(ev); }); 378 } 379 // Runs fn once the GTM container has started: right away when its gtm.js event is already 380 // in the dataLayer, otherwise just after the GTM snippet pushes it, whether the snippet 381 // comes before or after this script. Without GTM on the page fn runs once the page has 382 // loaded, so other listeners still get the event. 383 function afterGtmStart(fn) { 384 const dl = w.dataLayer; 385 const started = function (e) { 386 return !!e && typeof e === "object" && e.event === "gtm.js"; 387 }; 388 if (dl.some(started) || "complete" === d.readyState) { 389 fn(); 390 return; 391 } 392 let done = false; 393 const run = function () { 394 if (done) 395 return; 396 done = true; 397 if (dl.push === wrapped) 398 dl.push = original; 399 fn(); 400 }; 401 const original = dl.push; 402 const wrapped = function (...items) { 403 const n = original.apply(dl, items); 404 if (!done && items.some(started)) 405 run(); 406 return n; 407 }; 408 dl.push = wrapped; 409 w.addEventListener("load", run); 375 410 } 376 411 function persist(state) { -
landexhub-consent/tags/0.9.3/includes/class-landexhub-consent-admin.php
r3758640 r3762168 1565 1565 . '</h2><ul class="landexhub-consent-checklist">'; 1566 1566 foreach ( array_slice( $findings, 0, 6 ) as $f ) { 1567 $held = ! empty( $f['managed'] ) || ! empty( $f['gated'] ) || ! empty( $f['google'] ) ;1567 $held = ! empty( $f['managed'] ) || ! empty( $f['gated'] ) || ! empty( $f['google'] ) || ! empty( $f['necessary'] ); 1568 1568 $ok = $held && empty( $f['never_runs'] ); 1569 1569 $label = '' !== $f['vendor'] ? $f['vendor'] : $f['label']; … … 2485 2485 */ 2486 2486 private function finding_governed( $f ) { 2487 return 'consent-mode' === $f['reason'] || ! empty( $f['gated'] ) ;2487 return 'consent-mode' === $f['reason'] || ! empty( $f['gated'] ) || ! empty( $f['necessary'] ); 2488 2488 } 2489 2489 … … 2525 2525 if ( 'consent-mode' === $f['reason'] ) { 2526 2526 return $this->state_pill( true, __( 'Consent Mode v2 — tags inside a GTM container need their own consent settings', 'landexhub-consent' ) ); 2527 } 2528 if ( ! empty( $f['necessary'] ) && empty( $f['gated'] ) ) { 2529 return $this->state_pill( true, __( 'runs for every visitor, there is nothing to hold back', 'landexhub-consent' ), __( 'Necessary', 'landexhub-consent' ) ); 2527 2530 } 2528 2531 $problem = $this->gate_problem( $f ); … … 2602 2605 * source, so it stays readable in grayscale and in `forced-colors` mode. 2603 2606 * 2604 * @param bool $ok Whether consent governs the source. 2605 * @param string $note How it is governed (or why not). 2607 * @param bool $ok Whether consent governs the source. 2608 * @param string $note How it is governed (or why not). 2609 * @param string $label Pill text instead of the default one. 2606 2610 * @return string HTML. 2607 2611 */ 2608 private function state_pill( $ok, $note ) {2612 private function state_pill( $ok, $note, $label = '' ) { 2609 2613 $class = $ok ? 'landexhub-consent-pill is-ok' : 'landexhub-consent-pill is-warn'; 2610 $label = $ok ? __( 'Consent governs it', 'landexhub-consent' ) : __( 'Always loads', 'landexhub-consent' ); 2614 if ( '' === $label ) { 2615 $label = $ok ? __( 'Consent governs it', 'landexhub-consent' ) : __( 'Always loads', 'landexhub-consent' ); 2616 } 2611 2617 2612 2618 return '<span class="' . esc_attr( $class ) . '">' . esc_html( $label ) . '</span>' … … 2821 2827 * 2822 2828 * @param string|null $page Target page (default Consent integrations). 2829 * @param array $args Further query arguments of the target page, e.g. the service of a detail. 2823 2830 * @return string 2824 2831 */ 2825 private function rescan_url( $page = null ) {2832 private function rescan_url( $page = null, array $args = array() ) { 2826 2833 $page = null === $page ? self::PAGE_INTEGRATIONS : $page; 2827 return wp_nonce_url( 2828 admin_url( 'admin.php?page=' . $page . '&cnsx_rescan_sources=1' ), 2829 'landexhub_consent_rescan_sources' 2830 ); 2834 $url = admin_url( 'admin.php?page=' . $page ); 2835 if ( $args ) { 2836 $url = add_query_arg( array_map( 'rawurlencode', $args ), $url ); 2837 } 2838 return wp_nonce_url( add_query_arg( 'cnsx_rescan_sources', '1', $url ), 'landexhub_consent_rescan_sources' ); 2831 2839 } 2832 2840 … … 3518 3526 // Whether consent governs the service. 3519 3527 echo '<td>'; 3520 if ( $item['governed'] ) { 3528 if ( $this->item_necessary( $item ) ) { 3529 echo '<span class="landexhub-consent-pill is-ok">' . esc_html__( 'Necessary', 'landexhub-consent' ) . '</span>'; 3530 } elseif ( $item['governed'] ) { 3521 3531 echo '<span class="landexhub-consent-pill is-ok">' . esc_html__( 'Consent governs it', 'landexhub-consent' ) . '</span>'; 3522 3532 } else { … … 3557 3567 * part is never submitted together with the visible one. 3558 3568 * 3559 * @return void 3560 */ 3561 public function render_scripts_help() { 3569 * @param string $verify_url Where "Verify the edit" checks the site again and returns to: 3570 * the page the dialog is on (default Consent integrations). 3571 * @return void 3572 */ 3573 public function render_scripts_help( $verify_url = '' ) { 3562 3574 echo '<dialog class="landexhub-consent-dialog" id="landexhub-consent-gate-dialog">'; 3563 3575 echo '<div class="landexhub-consent-dialog__head">'; … … 3579 3591 echo '</div>'; 3580 3592 3581 $this->gate_form_script( );3593 $this->gate_form_script( '' !== $verify_url ? $verify_url : $this->rescan_url() ); 3582 3594 $this->gate_form_iframe(); 3583 3595 … … 3589 3601 * and the option to save the source to the services list. 3590 3602 * 3591 * @return void 3592 */ 3593 private function gate_form_script() { 3603 * @param string $verify_url URL of the "Verify the edit" button. 3604 * @return void 3605 */ 3606 private function gate_form_script( $verify_url ) { 3594 3607 echo '<form data-cnsx-part="script" hidden method="post" action="' . esc_url( admin_url( 'admin-post.php' ) ) . '">'; 3595 3608 wp_nonce_field( 'landexhub_consent_service' ); … … 3621 3634 echo '</div>'; 3622 3635 3623 echo '<p><a class="button" href="' . esc_url( $ this->rescan_url()) . '">' . esc_html__( 'Verify the edit', 'landexhub-consent' ) . '</a></p>';3636 echo '<p><a class="button" href="' . esc_url( $verify_url ) . '">' . esc_html__( 'Verify the edit', 'landexhub-consent' ) . '</a></p>'; 3624 3637 3625 3638 echo '<div class="landexhub-consent-notice-warn">' … … 3772 3785 3773 3786 $this->add_measurement_dialog(); 3774 $this->render_scripts_help( );3787 $this->render_scripts_help( $this->rescan_url( self::PAGE_SERVICES ) ); 3775 3788 $this->addon_note(); 3776 3789 }, … … 3878 3891 require_once LANDEXHUB_CONSENT_PLUGIN_DIR . 'includes/class-landexhub-consent-services.php'; 3879 3892 require_once LANDEXHUB_CONSENT_PLUGIN_DIR . 'includes/class-landexhub-consent-frontend.php'; 3880 3893 require_once LANDEXHUB_CONSENT_PLUGIN_DIR . 'includes/class-landexhub-consent-scan.php'; 3894 3895 // "Verify the edit" comes back here with a new check of the front page. 3896 $scan = LandexHub_Consent_Scan::run( $this->consume_rescan() ); 3881 3897 $items = LandexHub_Consent_Inventory::items(); 3882 3898 $back = admin_url( 'admin.php?page=' . self::PAGE_SERVICES ); … … 3895 3911 } 3896 3912 $item = $items[ $id ]; 3897 $scan = LandexHub_Consent_Scan::run( false );3898 3913 3899 3914 $this->shell( … … 3918 3933 } 3919 3934 3920 if ( ! empty( $item['governed'] ) || $is_configured ) { 3935 if ( $this->item_necessary( $item ) ) { 3936 echo '<li><span class="landexhub-consent-check-ok">✓</span> ' . esc_html__( 'Necessary — it runs for every visitor, there is nothing to hold back', 'landexhub-consent' ) . '</li>'; 3937 } elseif ( ! empty( $item['governed'] ) || $is_configured ) { 3921 3938 echo '<li><span class="landexhub-consent-check-ok">✓</span> ' . esc_html__( 'Consent governs it', 'landexhub-consent' ) . '</li>'; 3922 3939 } else { … … 3982 3999 } 3983 4000 3984 $this->render_scripts_help( );4001 $this->render_scripts_help( $this->rescan_url( self::PAGE_SERVICES, array( 'service' => $id ) ) ); 3985 4002 }, 3986 4003 'integrations' … … 4083 4100 4084 4101 /** 4102 * A service the catalog files as necessary (payments, spam protection): it runs for 4103 * every visitor, so it is neither held back nor a problem. 4104 * 4105 * @param array $item Inventory item. 4106 * @return bool 4107 */ 4108 private function item_necessary( $item ) { 4109 return 'necessary' === (string) $item['category'] && ! empty( $item['in_catalog'] ); 4110 } 4111 4112 /** 4085 4113 * Status label of a service row. 4086 4114 * … … 4092 4120 return array( 'is-muted', __( 'Unassigned', 'landexhub-consent' ) ); 4093 4121 } 4122 if ( $this->item_necessary( $item ) ) { 4123 return array( 'is-ok', __( 'Necessary', 'landexhub-consent' ) ); 4124 } 4094 4125 if ( empty( $item['governed'] ) ) { 4095 4126 return array( 'is-warn', ! empty( $item['partial'] ) ? __( 'Partly governed', 'landexhub-consent' ) : __( 'Not governed yet', 'landexhub-consent' ) ); … … 4110 4141 if ( ! empty( $item['configured'] ) ) { 4111 4142 echo '<span>' . esc_html__( 'Consent Mode v2 governs the consent.', 'landexhub-consent' ) . '</span>'; 4143 return; 4144 } 4145 if ( $this->item_necessary( $item ) ) { 4146 echo '<span>' . esc_html__( 'Necessary — it runs for every visitor, there is nothing to hold back.', 'landexhub-consent' ) . '</span>'; 4112 4147 return; 4113 4148 } -
landexhub-consent/tags/0.9.3/includes/class-landexhub-consent-frontend.php
r3758640 r3762168 30 30 // Priority 5: optional GTM / gtag.js container right after the bootstrap. 31 31 add_action( 'wp_head', array( $this, 'print_google_tags' ), 5 ); 32 // The GTM <noscript> part goes immediately after the opening <body> tag, as Google asks. 33 add_action( 'wp_body_open', array( $this, 'print_gtm_noscript' ), 0 ); 32 34 // Priority 1: enqueue the core (UI, script activation, consent updates) early. 33 35 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue' ), 1 ); … … 157 159 public static function exclude_handles( $handles ) { 158 160 $handles = is_array( $handles ) ? $handles : array(); 159 foreach ( array( self::HANDLE, 'landexhub-consent-detect' , 'landexhub-consent-gtag') as $handle ) {161 foreach ( array( self::HANDLE, 'landexhub-consent-detect' ) as $handle ) { 160 162 if ( ! in_array( $handle, $handles, true ) ) { 161 163 $handles[] = $handle; … … 469 471 } 470 472 473 // Google's snippets are printed as Google publishes them. The only addition is an id, 474 // by which the site check tells the plugin's own tags from tags others add. 471 475 if ( '' !== $gtm ) { 472 476 $js = "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});" … … 474 478 . "j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);" 475 479 . "})(window,document,'script','dataLayer','" . esc_js( $gtm ) . "');"; 480 echo "<!-- Google Tag Manager -->\n"; 476 481 wp_print_inline_script_tag( $js, array( 'id' => 'landexhub-consent-gtm' ) ); 482 echo "<!-- End Google Tag Manager -->\n"; 477 483 } 478 484 … … 485 491 } 486 492 487 wp_enqueue_script( 488 'landexhub-consent-gtag', 489 'https://www.googletagmanager.com/gtag/js?id=' . rawurlencode( $gtag ), 490 array(), 491 null, // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion -- Third-party script versioned by Google, not by this plugin; no version query string is added to its URL. 492 false 493 ); 493 // The async loader first, then the config, as in Google's snippet. Enqueueing would 494 // drop async: WordPress loads a script with an inline "after" part blocking. 494 495 $js = 'window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}' 495 496 . "gtag('js',new Date());gtag('config','" . esc_js( $gtag ) . "');"; 496 wp_add_inline_script( 'landexhub-consent-gtag', $js ); 497 } 497 echo "<!-- Google tag (gtag.js) -->\n"; 498 wp_print_script_tag( 499 array( 500 'async' => true, 501 'src' => 'https://www.googletagmanager.com/gtag/js?id=' . rawurlencode( $gtag ), 502 'id' => 'landexhub-consent-gtag-js', 503 ) 504 ); 505 wp_print_inline_script_tag( $js, array( 'id' => 'landexhub-consent-gtag-js-after' ) ); 506 } 507 } 508 509 /** 510 * The <noscript> part of Google's GTM snippet, immediately after the opening <body> tag 511 * (themes call wp_body_open() there). Without JavaScript there is no consent bar and no 512 * Consent Mode default, so the frame loads without a consent state, as in Google's own 513 * installation. 514 * 515 * @return void 516 */ 517 public function print_gtm_noscript() { 518 $settings = LandexHub_Consent_Settings::get(); 519 $gtm = (string) $settings['gtm_id']; 520 if ( '' === $gtm ) { 521 return; 522 } 523 // The same condition as for the container in <head>: no frame without it. 524 if ( $this->emits_consent_default() && '' === $this->bootstrap_js() ) { 525 return; 526 } 527 echo "<!-- Google Tag Manager (noscript) -->\n" 528 . '<noscript><iframe id="landexhub-consent-gtm-noscript" src="' . esc_url( 'https://www.googletagmanager.com/ns.html?id=' . rawurlencode( $gtm ) ) . '"' 529 . ' height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>' . "\n" 530 . "<!-- End Google Tag Manager (noscript) -->\n"; 498 531 } 499 532 -
landexhub-consent/tags/0.9.3/includes/class-landexhub-consent-google-check.php
r3758640 r3762168 102 102 // Remove all of our own tags so they do not look like a second snippet: 103 103 // landexhub-consent-gtm inline GTM loader 104 // landexhub-consent-gtag-js enqueued gtag.js (WordPress adds "-js" to the handle) 104 // landexhub-consent-gtag-js gtag.js loader (and -after, its config) 105 // landexhub-consent-gtm-noscript the GTM <noscript> frame 105 106 // Lazy-load plugins may rewrite src to data-src, so the id is the only reliable 106 107 // anchor. 107 108 $without_ours = preg_replace( 108 '/< script[^>]*\bid=["\']landexhub-consent-[^"\']*["\'][^>]*>[\s\S]*?<\/script>/i',109 '/<(script|iframe)[^>]*\bid=["\']landexhub-consent-[^"\']*["\'][^>]*>[\s\S]*?<\/\1>/i', 109 110 '', 110 111 $html -
landexhub-consent/tags/0.9.3/includes/class-landexhub-consent-health.php
r3758640 r3762168 151 151 foreach ( isset( $scan['findings'] ) ? (array) $scan['findings'] : array() as $f ) { 152 152 $name = '' !== (string) $f['vendor'] ? (string) $f['vendor'] : (string) $f['label']; 153 if ( empty( $f['google'] ) && empty( $f['gated'] ) ) {153 if ( empty( $f['google'] ) && empty( $f['gated'] ) && empty( $f['necessary'] ) ) { 154 154 $loose[] = $name; 155 155 } elseif ( ! empty( $f['never_runs'] ) ) { -
landexhub-consent/tags/0.9.3/includes/class-landexhub-consent-inventory.php
r3758640 r3762168 255 255 256 256 /** 257 * Match a stored service to a registry record via pattern substrings.257 * Match a stored service to a registry record via its name or pattern substrings. 258 258 * 259 259 * @param array $service Stored service. … … 263 263 private static function match_service( $service, $registry ) { 264 264 $patterns = isset( $service['patterns'] ) ? (array) $service['patterns'] : array(); 265 266 // An entry saved from an inline snippet carries the service name instead of a host 267 // (the snippet has none), so the catalog name and aliases count too. Otherwise the 268 // entry would show up as a second service next to its catalog record. 269 $name = strtolower( trim( isset( $service['name'] ) ? (string) $service['name'] : '' ) ); 270 if ( '' !== $name ) { 271 foreach ( $registry as $id => $record ) { 272 $names = array_merge( 273 isset( $record['name'] ) ? array( (string) $record['name'] ) : array(), 274 isset( $record['aliases'] ) ? (array) $record['aliases'] : array() 275 ); 276 foreach ( $names as $candidate ) { 277 if ( strtolower( trim( (string) $candidate ) ) === $name ) { 278 return (string) $id; 279 } 280 } 281 } 282 } 283 265 284 foreach ( $registry as $id => $record ) { 266 285 $det = isset( $record['detection'] ) ? (array) $record['detection'] : array(); -
landexhub-consent/tags/0.9.3/includes/class-landexhub-consent-scan.php
r3758640 r3762168 440 440 $vendor = LandexHub_Consent_Vendors::lookup( $needle ); 441 441 $google = (bool) ( $vendor && ! empty( $vendor['consentModeAware'] ) ); 442 // Payments, spam protection and the like: the catalog files them as necessary, they 443 // run for every visitor and there is nothing to hold back. 444 $necessary = ! $google && $vendor && 'necessary' === (string) $vendor['category']; 442 445 443 446 return array( … … 462 465 // Why marked occurrences are not gated (GATE_* codes). 463 466 'problems' => array(), 464 'reason' => $google ? 'consent-mode' : '',467 'reason' => $google ? 'consent-mode' : ( $necessary ? 'necessary' : '' ), 465 468 'evidence' => '', 466 469 'google' => $google, 470 'necessary' => $necessary, 467 471 ); 468 472 } -
landexhub-consent/tags/0.9.3/landexhub-consent.php
r3758640 r3762168 8 8 * Plugin Name: LandexHub Consent – Cookie Banner, GDPR & Google Consent Mode v2 9 9 * Description: Cookie banner for GDPR with Google Consent Mode v2, script gating, site diagnostics and consent logging. No cloud service required. 10 * Version: 0.9. 210 * Version: 0.9.3 11 11 * Requires at least: 6.3 12 12 * Requires PHP: 7.4 … … 21 21 defined( 'ABSPATH' ) || exit; 22 22 23 define( 'LANDEXHUB_CONSENT_VERSION', '0.9. 2' );23 define( 'LANDEXHUB_CONSENT_VERSION', '0.9.3' ); 24 24 define( 'LANDEXHUB_CONSENT_PLUGIN_FILE', __FILE__ ); 25 25 define( 'LANDEXHUB_CONSENT_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); -
landexhub-consent/tags/0.9.3/languages/landexhub-consent-cs_CZ.po
r3758640 r3762168 937 937 msgstr "Nezbytné — popis" 938 938 939 msgid "Necessary — it runs for every visitor, there is nothing to hold back" 940 msgstr "Nezbytné — běží pro každého návštěvníka, není co zadržovat" 941 942 msgid "Necessary — it runs for every visitor, there is nothing to hold back." 943 msgstr "Nezbytné — běží pro každého návštěvníka, není co zadržovat." 944 939 945 msgid "Necessary — name" 940 946 msgstr "Nezbytné — název" … … 1197 1203 msgid "Rounding of the bar and the settings window, in pixels." 1198 1204 msgstr "Zaoblení lišty a okna s nastavením, v pixelech." 1205 1206 msgid "runs for every visitor, there is nothing to hold back" 1207 msgstr "běží pro každého návštěvníka, není co zadržovat" 1199 1208 1200 1209 msgid "Save" -
landexhub-consent/tags/0.9.3/languages/landexhub-consent-de_DE.po
r3758640 r3762168 929 929 msgstr "Notwendig — Beschreibung" 930 930 931 msgid "Necessary — it runs for every visitor, there is nothing to hold back" 932 msgstr "Notwendig – läuft für alle Besucher, es gibt nichts zurückzuhalten" 933 934 msgid "Necessary — it runs for every visitor, there is nothing to hold back." 935 msgstr "Notwendig – läuft für alle Besucher, es gibt nichts zurückzuhalten." 936 931 937 msgid "Necessary — name" 932 938 msgstr "Notwendig — Name" … … 1189 1195 msgid "Rounding of the bar and the settings window, in pixels." 1190 1196 msgstr "Rundung der Leiste und des Einstellungsfensters, in Pixeln." 1197 1198 msgid "runs for every visitor, there is nothing to hold back" 1199 msgstr "läuft für alle Besucher, es gibt nichts zurückzuhalten" 1191 1200 1192 1201 msgid "Save" -
landexhub-consent/tags/0.9.3/languages/landexhub-consent-pl_PL.po
r3758640 r3762168 937 937 msgstr "Niezbędne — opis" 938 938 939 msgid "Necessary — it runs for every visitor, there is nothing to hold back" 940 msgstr "Niezbędne — działa dla każdego odwiedzającego, nie ma czego wstrzymywać" 941 942 msgid "Necessary — it runs for every visitor, there is nothing to hold back." 943 msgstr "Niezbędne — działa dla każdego odwiedzającego, nie ma czego wstrzymywać." 944 939 945 msgid "Necessary — name" 940 946 msgstr "Niezbędne — nazwa" … … 1197 1203 msgid "Rounding of the bar and the settings window, in pixels." 1198 1204 msgstr "Zaokrąglenie paska i okna ustawień, w pikselach." 1205 1206 msgid "runs for every visitor, there is nothing to hold back" 1207 msgstr "działa dla każdego odwiedzającego, nie ma czego wstrzymywać" 1199 1208 1200 1209 msgid "Save" -
landexhub-consent/tags/0.9.3/languages/landexhub-consent-sk_SK.po
r3758640 r3762168 937 937 msgstr "Nevyhnutné — popis" 938 938 939 msgid "Necessary — it runs for every visitor, there is nothing to hold back" 940 msgstr "Nevyhnutné — beží pre každého návštevníka, nie je čo zadržiavať" 941 942 msgid "Necessary — it runs for every visitor, there is nothing to hold back." 943 msgstr "Nevyhnutné — beží pre každého návštevníka, nie je čo zadržiavať." 944 939 945 msgid "Necessary — name" 940 946 msgstr "Nevyhnutné — názov" … … 1197 1203 msgid "Rounding of the bar and the settings window, in pixels." 1198 1204 msgstr "Zaoblenie lišty a okna s nastavením, v pixeloch." 1205 1206 msgid "runs for every visitor, there is nothing to hold back" 1207 msgstr "beží pre každého návštevníka, nie je čo zadržiavať" 1199 1208 1200 1209 msgid "Save" -
landexhub-consent/tags/0.9.3/languages/landexhub-consent.pot
r3758640 r3762168 13 13 14 14 #. translators: accessible suffix telling screen readers the link opens a new tab. 15 #: includes/class-landexhub-consent-admin.php:783 includes/class-landexhub-consent-admin.php:3 79015 #: includes/class-landexhub-consent-admin.php:783 includes/class-landexhub-consent-admin.php:3803 16 16 msgid "(opens in a new tab)" 17 17 msgstr "" 18 18 19 19 #. translators: %d: number of services. 20 #: includes/class-landexhub-consent-admin.php:38 5320 #: includes/class-landexhub-consent-admin.php:3866 21 21 msgid "%d all good" 22 22 msgstr "" 23 23 24 24 #. translators: %d: number of checks. 25 #: includes/class-landexhub-consent-admin.php:4 26525 #: includes/class-landexhub-consent-admin.php:4300 26 26 msgid "%d check is not verified yet." 27 27 msgid_plural "%d checks are not verified yet." … … 37 37 38 38 #. translators: %d: number of issues. 39 #: includes/class-landexhub-consent-admin.php:42 5939 #: includes/class-landexhub-consent-admin.php:4294 40 40 msgid "%d issue requires attention" 41 41 msgid_plural "%d issues require attention" … … 58 58 59 59 #. translators: %d: number of services. 60 #: includes/class-landexhub-consent-admin.php:38 5760 #: includes/class-landexhub-consent-admin.php:3870 61 61 msgid "%d needs attention" 62 62 msgstr "" … … 73 73 74 74 #. translators: %d: number of services. 75 #: includes/class-landexhub-consent-admin.php:38 5075 #: includes/class-landexhub-consent-admin.php:3863 76 76 msgid "%d services found" 77 77 msgstr "" … … 92 92 93 93 #. translators: %d: number of sources. 94 #: includes/class-landexhub-consent-admin.php:38 6194 #: includes/class-landexhub-consent-admin.php:3874 95 95 msgid "%d unassigned" 96 96 msgstr "" … … 104 104 105 105 #. translators: %s: plugin name. 106 #: includes/class-landexhub-consent-admin.php:27 17106 #: includes/class-landexhub-consent-admin.php:2723 107 107 msgid "%s — it inserts its own Google tags and LandexHub Consent does not block them" 108 108 msgstr "" 109 109 110 110 #. translators: %s: comma-separated list of Google tag IDs. 111 #: includes/class-landexhub-consent-admin.php:27 25111 #: includes/class-landexhub-consent-admin.php:2731 112 112 msgid "%s — loaded by your theme or another plugin, not by LandexHub Consent" 113 113 msgstr "" … … 119 119 120 120 #. translators: %s: plugin name. 121 #: includes/class-landexhub-consent-admin.php:26 48121 #: includes/class-landexhub-consent-admin.php:2654 122 122 msgid "%s allows measurement before the visitor decides." 123 123 msgstr "" … … 129 129 130 130 #. translators: %s: plugin name. 131 #: includes/class-landexhub-consent-admin.php:26 75131 #: includes/class-landexhub-consent-admin.php:2681 132 132 msgid "%s sends its own Consent Mode default." 133 133 msgstr "" … … 166 166 msgstr "" 167 167 168 #: includes/class-landexhub-consent-admin.php:29 86168 #: includes/class-landexhub-consent-admin.php:2994 169 169 msgid "A plugin that gets the decision this way keeps running its own tags — do not block its scripts by hand as well." 170 170 msgstr "" … … 174 174 msgstr "" 175 175 176 #: includes/class-landexhub-consent-admin.php:35 75176 #: includes/class-landexhub-consent-admin.php:3587 177 177 msgid "a script a plugin enqueues" 178 178 msgstr "" 179 179 180 #: includes/class-landexhub-consent-admin.php:35 74180 #: includes/class-landexhub-consent-admin.php:3586 181 181 msgid "a script hardcoded in the template" 182 182 msgstr "" 183 183 184 #: includes/class-landexhub-consent-admin.php:256 1184 #: includes/class-landexhub-consent-admin.php:2564 185 185 msgid "a script in the template" 186 186 msgstr "" 187 187 188 #: includes/class-landexhub-consent-admin.php:35 76188 #: includes/class-landexhub-consent-admin.php:3588 189 189 msgid "a script written straight into the page" 190 190 msgstr "" … … 198 198 msgstr "" 199 199 200 #: includes/class-landexhub-consent-admin.php:256 5200 #: includes/class-landexhub-consent-admin.php:2568 201 201 msgid "a tracking pixel" 202 202 msgstr "" … … 218 218 msgstr "" 219 219 220 #: includes/class-landexhub-consent-admin.php:2331 includes/class-landexhub-consent-admin.php:39 48 includes/class-landexhub-consent-admin.php:4020220 #: includes/class-landexhub-consent-admin.php:2331 includes/class-landexhub-consent-admin.php:3965 includes/class-landexhub-consent-admin.php:4037 221 221 msgid "Actions" 222 222 msgstr "" … … 227 227 msgstr "" 228 228 229 #: includes/class-landexhub-consent-admin.php:37 70 includes/class-landexhub-consent-admin.php:4173229 #: includes/class-landexhub-consent-admin.php:3783 includes/class-landexhub-consent-admin.php:4208 230 230 msgid "Add measurement" 231 231 msgstr "" 232 232 233 #: includes/class-landexhub-consent-admin.php:42 20233 #: includes/class-landexhub-consent-admin.php:4255 234 234 msgid "Add measurement (GTM / gtag)" 235 235 msgstr "" 236 236 237 #: includes/class-landexhub-consent-admin.php:42 01237 #: includes/class-landexhub-consent-admin.php:4236 238 238 msgid "Add to the site" 239 239 msgstr "" 240 240 241 #: includes/class-landexhub-consent-admin.php:36 29241 #: includes/class-landexhub-consent-admin.php:3642 242 242 msgid "Added by a plugin or the theme?" 243 243 msgstr "" … … 247 247 msgstr "" 248 248 249 #: includes/class-landexhub-consent-admin.php:41 48249 #: includes/class-landexhub-consent-admin.php:4183 250 250 msgid "Added by you" 251 251 msgstr "" 252 252 253 #: includes/class-landexhub-consent-admin.php:35 14 includes/class-landexhub-consent-admin.php:3917253 #: includes/class-landexhub-consent-admin.php:3522 includes/class-landexhub-consent-admin.php:3932 254 254 msgid "Added by you, not found on the front page" 255 255 msgstr "" 256 256 257 257 #. translators: %s: who inserts the service. 258 #: includes/class-landexhub-consent-admin.php:40 32 includes/class-landexhub-consent-admin.php:4055258 #: includes/class-landexhub-consent-admin.php:4049 includes/class-landexhub-consent-admin.php:4072 259 259 msgid "Adds it: %s" 260 260 msgstr "" 261 261 262 #: includes/class-landexhub-consent-admin.php:130 includes/class-landexhub-consent-admin.php:145 includes/class-landexhub-consent-admin.php:43 05262 #: includes/class-landexhub-consent-admin.php:130 includes/class-landexhub-consent-admin.php:145 includes/class-landexhub-consent-admin.php:4340 263 263 msgid "Advanced" 264 264 msgstr "" … … 302 302 msgstr "" 303 303 304 #: includes/class-landexhub-consent-admin.php:261 0304 #: includes/class-landexhub-consent-admin.php:2615 305 305 msgid "Always loads" 306 306 msgstr "" … … 318 318 msgstr "" 319 319 320 #: includes/class-landexhub-consent-admin.php:255 3320 #: includes/class-landexhub-consent-admin.php:2556 321 321 msgid "an embedded frame" 322 322 msgstr "" … … 326 326 msgstr "" 327 327 328 #: includes/class-landexhub-consent-admin.php:35 77328 #: includes/class-landexhub-consent-admin.php:3589 329 329 msgid "an embedded video · iframe" 330 330 msgstr "" 331 331 332 #: includes/class-landexhub-consent-admin.php:25 59332 #: includes/class-landexhub-consent-admin.php:2562 333 333 msgid "an enqueued script" 334 334 msgstr "" 335 335 336 #: includes/class-landexhub-consent-admin.php:36 06 includes/class-landexhub-consent-admin.php:3699includes/class-landexhub-consent-services.php:52336 #: includes/class-landexhub-consent-admin.php:3619 includes/class-landexhub-consent-admin.php:3712 includes/class-landexhub-consent-services.php:52 337 337 msgid "Analytics" 338 338 msgstr "" … … 354 354 msgstr "" 355 355 356 #: includes/class-landexhub-consent-admin.php:304 1356 #: includes/class-landexhub-consent-admin.php:3049 357 357 msgid "Ask all visitors for consent again?" 358 358 msgstr "" 359 359 360 #: includes/class-landexhub-consent-admin.php:304 0360 #: includes/class-landexhub-consent-admin.php:3048 361 361 msgid "Ask every visitor again (current choices stop being used)." 362 362 msgstr "" 363 363 364 #: includes/class-landexhub-consent-admin.php:40 63364 #: includes/class-landexhub-consent-admin.php:4080 365 365 msgid "Assign" 366 366 msgstr "" … … 374 374 msgstr "" 375 375 376 #: includes/class-landexhub-consent-admin.php:3 891 includes/class-landexhub-consent-admin.php:3903376 #: includes/class-landexhub-consent-admin.php:3907 includes/class-landexhub-consent-admin.php:3918 377 377 msgid "Back to Services" 378 378 msgstr "" … … 402 402 msgstr "" 403 403 404 #: includes/class-landexhub-consent-admin.php:27 36404 #: includes/class-landexhub-consent-admin.php:2742 405 405 msgid "Basic mode does not cover everything on this site." 406 406 msgstr "" … … 414 414 msgstr "" 415 415 416 #: includes/class-landexhub-consent-admin.php:36 26416 #: includes/class-landexhub-consent-admin.php:3639 417 417 msgid "Both parts are required: without type=\"text/plain\" the browser runs the script anyway, and an external script must have src renamed to data-src, or the file is downloaded right away." 418 418 msgstr "" … … 426 426 msgstr "" 427 427 428 #: includes/class-landexhub-consent-admin.php:36 14 includes/class-landexhub-consent-admin.php:3656428 #: includes/class-landexhub-consent-admin.php:3627 includes/class-landexhub-consent-admin.php:3669 429 429 msgid "By hand in the template" 430 430 msgstr "" 431 431 432 432 #. translators: %s: registry schema version. 433 #: includes/class-landexhub-consent-admin.php:35 46 includes/class-landexhub-consent-admin.php:3980433 #: includes/class-landexhub-consent-admin.php:3556 includes/class-landexhub-consent-admin.php:3997 434 434 msgid "Catalog data: LandexHub Consent Service Registry %s." 435 435 msgstr "" … … 455 455 msgstr "" 456 456 457 #: includes/class-landexhub-consent-admin.php:2042 includes/class-landexhub-consent-admin.php:2329 includes/class-landexhub-consent-admin.php:34 76 includes/class-landexhub-consent-admin.php:4017457 #: includes/class-landexhub-consent-admin.php:2042 includes/class-landexhub-consent-admin.php:2329 includes/class-landexhub-consent-admin.php:3484 includes/class-landexhub-consent-admin.php:4034 458 458 msgid "Category" 459 459 msgstr "" … … 468 468 msgstr "" 469 469 470 #: includes/class-landexhub-consent-admin.php:4 098470 #: includes/class-landexhub-consent-admin.php:4129 471 471 msgid "Category turned off" 472 472 msgstr "" … … 476 476 msgstr "" 477 477 478 #: includes/class-landexhub-consent-admin.php:29 03478 #: includes/class-landexhub-consent-admin.php:2911 479 479 msgid "Channel" 480 480 msgstr "" 481 481 482 #: includes/class-landexhub-consent-admin.php:42 54482 #: includes/class-landexhub-consent-admin.php:4289 483 483 msgid "Check again" 484 484 msgstr "" 485 485 486 #: includes/class-landexhub-consent-admin.php:36 67486 #: includes/class-landexhub-consent-admin.php:3680 487 487 msgid "Check that it follows consent, not just the click." 488 488 msgstr "" … … 492 492 msgstr "" 493 493 494 #: includes/class-landexhub-consent-admin.php:30 56494 #: includes/class-landexhub-consent-admin.php:3064 495 495 msgid "Choose a JSON file created by Export settings. Nothing is changed unless the whole file is valid." 496 496 msgstr "" 497 497 498 #: includes/class-landexhub-consent-admin.php:1722 includes/class-landexhub-consent-admin.php:2133 includes/class-landexhub-consent-admin.php:35 65 includes/class-landexhub-consent-admin.php:3715 includes/class-landexhub-consent-admin.php:4174 includes/class-landexhub-consent-admin.php:4200498 #: includes/class-landexhub-consent-admin.php:1722 includes/class-landexhub-consent-admin.php:2133 includes/class-landexhub-consent-admin.php:3577 includes/class-landexhub-consent-admin.php:3728 includes/class-landexhub-consent-admin.php:4209 includes/class-landexhub-consent-admin.php:4235 499 499 msgid "Close" 500 500 msgstr "" … … 512 512 msgstr "" 513 513 514 #: includes/class-landexhub-consent-admin.php:36 04 includes/class-landexhub-consent-admin.php:3697includes/class-landexhub-consent-frontend.php:303514 #: includes/class-landexhub-consent-admin.php:3617 includes/class-landexhub-consent-admin.php:3710 includes/class-landexhub-consent-frontend.php:303 515 515 msgid "Consent category" 516 516 msgstr "" … … 520 520 msgstr "" 521 521 522 #: includes/class-landexhub-consent-admin.php:261 0 includes/class-landexhub-consent-admin.php:3521 includes/class-landexhub-consent-admin.php:3921 includes/class-landexhub-consent-admin.php:4100522 #: includes/class-landexhub-consent-admin.php:2615 includes/class-landexhub-consent-admin.php:3531 includes/class-landexhub-consent-admin.php:3938 includes/class-landexhub-consent-admin.php:4131 523 523 msgid "Consent governs it" 524 524 msgstr "" 525 525 526 #: includes/class-landexhub-consent-admin.php:40 60526 #: includes/class-landexhub-consent-admin.php:4077 527 527 msgid "Consent governs it — the service is not in the catalog or in your services list." 528 528 msgstr "" … … 537 537 msgstr "" 538 538 539 #: includes/class-landexhub-consent-admin.php:141 includes/class-landexhub-consent-admin.php:27 87539 #: includes/class-landexhub-consent-admin.php:141 includes/class-landexhub-consent-admin.php:2793 540 540 msgid "Consent integrations" 541 541 msgstr "" 542 542 543 #: includes/class-landexhub-consent-admin.php:142 includes/class-landexhub-consent-admin.php:549 includes/class-landexhub-consent-admin.php:301 0includes/class-landexhub-consent-privacy.php:85543 #: includes/class-landexhub-consent-admin.php:142 includes/class-landexhub-consent-admin.php:549 includes/class-landexhub-consent-admin.php:3018 includes/class-landexhub-consent-privacy.php:85 544 544 msgid "Consent log" 545 545 msgstr "" 546 546 547 #: includes/class-landexhub-consent-admin.php:4 273547 #: includes/class-landexhub-consent-admin.php:4308 548 548 msgid "Consent Mode" 549 549 msgstr "" … … 569 569 msgstr "" 570 570 571 #: includes/class-landexhub-consent-admin.php:41 11 includes/class-landexhub-consent-admin.php:4128571 #: includes/class-landexhub-consent-admin.php:4142 includes/class-landexhub-consent-admin.php:4163 572 572 msgid "Consent Mode v2 governs the consent." 573 573 msgstr "" 574 574 575 #: includes/class-landexhub-consent-admin.php:4 279575 #: includes/class-landexhub-consent-admin.php:4314 576 576 msgid "Consent setup" 577 577 msgstr "" … … 581 581 msgstr "" 582 582 583 #: includes/class-landexhub-consent-admin.php:30 34583 #: includes/class-landexhub-consent-admin.php:3042 584 584 msgid "Consents & settings" 585 585 msgstr "" 586 586 587 #: includes/class-landexhub-consent-admin.php:4 288587 #: includes/class-landexhub-consent-admin.php:4323 588 588 msgid "Consents in the last 30 days" 589 589 msgstr "" … … 605 605 msgstr "" 606 606 607 #: includes/class-landexhub-consent-admin.php:36 20607 #: includes/class-landexhub-consent-admin.php:3633 608 608 msgid "Copy" 609 609 msgstr "" 610 610 611 #: includes/class-landexhub-consent-admin.php:30 65611 #: includes/class-landexhub-consent-admin.php:3073 612 612 msgid "Copy this when contacting support." 613 613 msgstr "" … … 665 665 msgstr "" 666 666 667 #: includes/class-landexhub-consent-admin.php:36 10667 #: includes/class-landexhub-consent-admin.php:3623 668 668 msgid "Decides when the source may run. The snippet below follows it." 669 669 msgstr "" … … 702 702 msgstr "" 703 703 704 #: includes/class-landexhub-consent-admin.php:40 46704 #: includes/class-landexhub-consent-admin.php:4063 705 705 msgid "Detail" 706 706 msgstr "" … … 710 710 msgstr "" 711 711 712 #: includes/class-landexhub-consent-admin.php:30 64712 #: includes/class-landexhub-consent-admin.php:3072 713 713 msgid "Diagnostic report" 714 714 msgstr "" 715 715 716 #: includes/class-landexhub-consent-admin.php:129 includes/class-landexhub-consent-admin.php:42 36716 #: includes/class-landexhub-consent-admin.php:129 includes/class-landexhub-consent-admin.php:4271 717 717 msgid "Diagnostics" 718 718 msgstr "" … … 722 722 msgstr "" 723 723 724 #: includes/class-landexhub-consent-admin.php:4 189724 #: includes/class-landexhub-consent-admin.php:4224 725 725 msgid "Direct measurement ID (gtag.js)" 726 726 msgstr "" … … 738 738 msgstr "" 739 739 740 #: includes/class-landexhub-consent-admin.php:30 49740 #: includes/class-landexhub-consent-admin.php:3057 741 741 msgid "Download the configuration as JSON." 742 742 msgstr "" … … 754 754 msgstr "" 755 755 756 #: includes/class-landexhub-consent-admin.php:25 87756 #: includes/class-landexhub-consent-admin.php:2590 757 757 msgid "embedded frames cannot be held back by the consent bar" 758 758 msgstr "" 759 759 760 #: includes/class-landexhub-consent-admin.php:4 269760 #: includes/class-landexhub-consent-admin.php:4304 761 761 msgid "every check below was actually performed; hover a row for its evidence." 762 762 msgstr "" … … 778 778 msgstr "" 779 779 780 #: includes/class-landexhub-consent-admin.php:347 1780 #: includes/class-landexhub-consent-admin.php:3479 781 781 msgid "Everything LandexHub Consent knows about the services this site uses — catalog knowledge, what the check found here, and your own services list. Catalog updates never overwrite your list." 782 782 msgstr "" 783 783 784 #: includes/class-landexhub-consent-admin.php:4 268784 #: includes/class-landexhub-consent-admin.php:4303 785 785 msgid "Everything looks good" 786 786 msgstr "" 787 787 788 #: includes/class-landexhub-consent-admin.php:39 47788 #: includes/class-landexhub-consent-admin.php:3964 789 789 msgid "Evidence" 790 790 msgstr "" … … 802 802 msgstr "" 803 803 804 #: includes/class-landexhub-consent-admin.php:30 48 includes/class-landexhub-consent-admin.php:3050804 #: includes/class-landexhub-consent-admin.php:3056 includes/class-landexhub-consent-admin.php:3058 805 805 msgid "Export settings" 806 806 msgstr "" … … 826 826 msgstr "" 827 827 828 #: includes/class-landexhub-consent-admin.php:36 15828 #: includes/class-landexhub-consent-admin.php:3628 829 829 msgid "Find the tag in the template and rewrite it like this. LandexHub Consent runs it once the visitor consents to the category." 830 830 msgstr "" … … 863 863 msgstr "" 864 864 865 #: includes/class-landexhub-consent-admin.php:34 77865 #: includes/class-landexhub-consent-admin.php:3485 866 866 msgid "Found here" 867 867 msgstr "" … … 879 879 msgstr "" 880 880 881 #: includes/class-landexhub-consent-admin.php:39 12881 #: includes/class-landexhub-consent-admin.php:3927 882 882 msgid "Found on this site" 883 883 msgstr "" 884 884 885 #: includes/class-landexhub-consent-admin.php:4 190885 #: includes/class-landexhub-consent-admin.php:4225 886 886 msgid "GA4 or Google Ads without a container (G-XXXX / AW-XXXX). The Basic/Advanced switch applies to it." 887 887 msgstr "" … … 891 891 msgstr "" 892 892 893 #: includes/class-landexhub-consent-admin.php:40 61893 #: includes/class-landexhub-consent-admin.php:4078 894 894 msgid "Gate it by hand and save it to your services list with a category." 895 895 msgstr "" 896 896 897 #: includes/class-landexhub-consent-admin.php:35 68897 #: includes/class-landexhub-consent-admin.php:3580 898 898 msgid "Gate source" 899 899 msgstr "" 900 900 901 #: includes/class-landexhub-consent-admin.php:253 3901 #: includes/class-landexhub-consent-admin.php:2536 902 902 msgid "gated by hand" 903 903 msgstr "" … … 920 920 msgstr "" 921 921 922 #: includes/class-landexhub-consent-admin.php:4 182922 #: includes/class-landexhub-consent-admin.php:4217 923 923 msgid "Google Tag Manager" 924 924 msgstr "" 925 925 926 #: includes/class-landexhub-consent-admin.php:34 78926 #: includes/class-landexhub-consent-admin.php:3486 927 927 msgid "Governance" 928 928 msgstr "" … … 940 940 msgstr "" 941 941 942 #: includes/class-landexhub-consent-admin.php:41 31942 #: includes/class-landexhub-consent-admin.php:4166 943 943 msgid "Held back until the visitor consents." 944 944 msgstr "" 945 945 946 #: includes/class-landexhub-consent-admin.php:41 23946 #: includes/class-landexhub-consent-admin.php:4158 947 947 msgid "Held back, but it waits for a category the consent bar does not offer, so it never runs. Turn the category on or remove the source." 948 948 msgstr "" 949 949 950 #: includes/class-landexhub-consent-admin.php:25 88950 #: includes/class-landexhub-consent-admin.php:2591 951 951 msgid "held back, but its category is turned off, so it never runs" 952 952 msgstr "" … … 960 960 msgstr "" 961 961 962 #: includes/class-landexhub-consent-admin.php:29 39962 #: includes/class-landexhub-consent-admin.php:2947 963 963 msgid "How" 964 964 msgstr "" … … 976 976 msgstr "" 977 977 978 #: includes/class-landexhub-consent-admin.php:36 30978 #: includes/class-landexhub-consent-admin.php:3643 979 979 msgid "If it comes through enqueue, leave the tag alone — add this to functions.php." 980 980 msgstr "" 981 981 982 #: includes/class-landexhub-consent-admin.php:42 17982 #: includes/class-landexhub-consent-admin.php:4252 983 983 msgid "If you want measurement, add it through LandexHub Consent — consent is handled from the first moment." 984 984 msgstr "" … … 988 988 msgstr "" 989 989 990 #: includes/class-landexhub-consent-admin.php:30 55 includes/class-landexhub-consent-admin.php:3058990 #: includes/class-landexhub-consent-admin.php:3063 includes/class-landexhub-consent-admin.php:3066 991 991 msgid "Import settings" 992 992 msgstr "" … … 1000 1000 msgstr "" 1001 1001 1002 #: includes/class-landexhub-consent-admin.php:350 0 includes/class-landexhub-consent-admin.php:40371002 #: includes/class-landexhub-consent-admin.php:3508 includes/class-landexhub-consent-admin.php:4054 1003 1003 msgid "In your list" 1004 1004 msgstr "" … … 1012 1012 msgstr "" 1013 1013 1014 #: includes/class-landexhub-consent-admin.php:29 331014 #: includes/class-landexhub-consent-admin.php:2941 1015 1015 msgid "Install it" 1016 1016 msgstr "" 1017 1017 1018 #: includes/class-landexhub-consent-admin.php:26 861018 #: includes/class-landexhub-consent-admin.php:2692 1019 1019 msgid "Install WP Consent API" 1020 1020 msgstr "" 1021 1021 1022 #: includes/class-landexhub-consent-admin.php:1595 includes/class-landexhub-consent-admin.php:31 23 includes/class-landexhub-consent-admin.php:3278 includes/class-landexhub-consent-admin.php:4328includes/class-landexhub-consent-integrations.php:478 includes/class-landexhub-consent-log-admin.php:219 includes/class-landexhub-consent-log-admin.php:416 includes/class-landexhub-consent-log-admin.php:441 includes/class-landexhub-consent-services.php:531 includes/class-landexhub-consent-services.php:582 includes/class-landexhub-consent-texts.php:2131022 #: includes/class-landexhub-consent-admin.php:1595 includes/class-landexhub-consent-admin.php:3131 includes/class-landexhub-consent-admin.php:3286 includes/class-landexhub-consent-admin.php:4363 includes/class-landexhub-consent-integrations.php:478 includes/class-landexhub-consent-log-admin.php:219 includes/class-landexhub-consent-log-admin.php:416 includes/class-landexhub-consent-log-admin.php:441 includes/class-landexhub-consent-services.php:531 includes/class-landexhub-consent-services.php:582 includes/class-landexhub-consent-texts.php:213 1023 1023 msgid "Insufficient permissions." 1024 1024 msgstr "" … … 1028 1028 msgstr "" 1029 1029 1030 #: includes/class-landexhub-consent-admin.php:42 371030 #: includes/class-landexhub-consent-admin.php:4272 1031 1031 msgid "Is LandexHub Consent and the measurement on this site set up correctly?" 1032 1032 msgstr "" 1033 1033 1034 #: includes/class-landexhub-consent-admin.php:268 01034 #: includes/class-landexhub-consent-admin.php:2686 1035 1035 msgid "It grants nothing before consent, so it agrees with the LandexHub Consent default and nothing needs to change." 1036 1036 msgstr "" 1037 1037 1038 #: includes/class-landexhub-consent-admin.php:29 221038 #: includes/class-landexhub-consent-admin.php:2930 1039 1039 msgid "It is part of LandexHub Consent itself." 1040 1040 msgstr "" 1041 1041 1042 #: includes/class-landexhub-consent-admin.php:265 31042 #: includes/class-landexhub-consent-admin.php:2659 1043 1043 msgid "It sends its own Consent Mode default after ours and sets these signals to granted:" 1044 1044 msgstr "" … … 1056 1056 msgstr "" 1057 1057 1058 #: includes/class-landexhub-consent-admin.php:26 841058 #: includes/class-landexhub-consent-admin.php:2690 1059 1059 msgid "Its own Consent Mode reads the visitor's decision from the WP Consent API, which is not installed. Its Google tag still follows the Consent Mode signals LandexHub Consent sends." 1060 1060 msgstr "" … … 1068 1068 msgstr "" 1069 1069 1070 #: includes/class-landexhub-consent-admin.php:34 79 includes/class-landexhub-consent-admin.php:39641070 #: includes/class-landexhub-consent-admin.php:3487 includes/class-landexhub-consent-admin.php:3981 1071 1071 msgid "Known data" 1072 1072 msgstr "" 1073 1073 1074 #: includes/class-landexhub-consent-admin.php:3 7881074 #: includes/class-landexhub-consent-admin.php:3801 1075 1075 msgid "LandexHub also makes a separate, optional add-on for this plugin. Everything on these screens works without it." 1076 1076 msgstr "" … … 1080 1080 msgstr "" 1081 1081 1082 #: includes/class-landexhub-consent-admin.php:39 14 includes/class-landexhub-consent-admin.php:41451082 #: includes/class-landexhub-consent-admin.php:3929 includes/class-landexhub-consent-admin.php:4180 1083 1083 msgid "LandexHub Consent (your measurement ID)" 1084 1084 msgstr "" … … 1088 1088 msgstr "" 1089 1089 1090 #: includes/class-landexhub-consent-admin.php:27 441090 #: includes/class-landexhub-consent-admin.php:2750 1091 1091 msgid "LandexHub Consent does not block tags that other plugins add. To hold them back, gate them by hand or turn off their own Google tags." 1092 1092 msgstr "" 1093 1093 1094 #: includes/class-landexhub-consent-admin.php:26 651094 #: includes/class-landexhub-consent-admin.php:2671 1095 1095 msgid "LandexHub Consent does not overwrite it — set that default to denied in the plugin, or turn its Consent Mode off." 1096 1096 msgstr "" … … 1101 1101 msgstr "" 1102 1102 1103 #: includes/class-landexhub-consent-admin.php:29 371103 #: includes/class-landexhub-consent-admin.php:2945 1104 1104 msgid "LandexHub Consent has no way to pass consent to this plugin, so it leaves it alone. Gate its scripts by hand instead." 1105 1105 msgstr "" … … 1109 1109 msgstr "" 1110 1110 1111 #: includes/class-landexhub-consent-admin.php:4 1751111 #: includes/class-landexhub-consent-admin.php:4210 1112 1112 msgid "LandexHub Consent inserts the tag itself, right after its own Consent Mode default." 1113 1113 msgstr "" … … 1117 1117 msgstr "" 1118 1118 1119 #: includes/class-landexhub-consent-admin.php:4 2771119 #: includes/class-landexhub-consent-admin.php:4312 1120 1120 msgid "LandexHub Consent provides the technical layer — legal responsibility for compliance stays with the site owner." 1121 1121 msgstr "" … … 1147 1147 1148 1148 #. translators: %s: human-readable time difference, e.g. "4 mins". 1149 #: includes/class-landexhub-consent-admin.php:40 721149 #: includes/class-landexhub-consent-admin.php:4089 1150 1150 msgid "Last site check: %s ago." 1151 1151 msgstr "" 1152 1152 1153 #: includes/class-landexhub-consent-admin.php:3 7891153 #: includes/class-landexhub-consent-admin.php:3802 1154 1154 msgid "Learn more" 1155 1155 msgstr "" … … 1172 1172 msgstr "" 1173 1173 1174 #: includes/class-landexhub-consent-admin.php:36 651174 #: includes/class-landexhub-consent-admin.php:3678 1175 1175 msgid "Looks almost the same. Needed for every video separately." 1176 1176 msgstr "" … … 1181 1181 msgstr "" 1182 1182 1183 #: includes/class-landexhub-consent-admin.php:2589 1184 msgid "marked, but a pixel needs data-cnsx-pixel, data-consent-category and its address in data-src" 1185 msgstr "" 1186 1183 1187 #: includes/class-landexhub-consent-admin.php:2586 1184 msgid "marked, but a pixel needs data-cnsx-pixel, data-consent-category and its address in data-src"1185 msgstr ""1186 1187 #: includes/class-landexhub-consent-admin.php:25831188 1188 msgid "marked, but the address is still in src (move it to data-src)" 1189 1189 msgstr "" 1190 1190 1191 #: includes/class-landexhub-consent-admin.php:258 41191 #: includes/class-landexhub-consent-admin.php:2587 1192 1192 msgid "marked, but type=\"text/plain\" is missing" 1193 1193 msgstr "" 1194 1194 1195 #: includes/class-landexhub-consent-admin.php:258 51195 #: includes/class-landexhub-consent-admin.php:2588 1196 1196 msgid "marked, but without a valid category (analytics, marketing or preferences)" 1197 1197 msgstr "" 1198 1198 1199 #: includes/class-landexhub-consent-admin.php:36 07 includes/class-landexhub-consent-admin.php:3700includes/class-landexhub-consent-services.php:531199 #: includes/class-landexhub-consent-admin.php:3620 includes/class-landexhub-consent-admin.php:3713 includes/class-landexhub-consent-services.php:53 1200 1200 msgid "Marketing" 1201 1201 msgstr "" … … 1209 1209 msgstr "" 1210 1210 1211 #: includes/class-landexhub-consent-admin.php:36 581211 #: includes/class-landexhub-consent-admin.php:3671 1212 1212 msgid "Marking the tag does not hold back an <iframe>. With its address left in src it loads before consent; with the address moved to data-src it does not load, but LandexHub Consent revives only <script> and cannot start it after consent either." 1213 1213 msgstr "" … … 1230 1230 msgstr "" 1231 1231 1232 #: includes/class-landexhub-consent-admin.php:43 091232 #: includes/class-landexhub-consent-admin.php:4344 1233 1233 msgid "Measurement IDs (GTM / gtag) live on the Services page — that is where measurement is added and changed." 1234 1234 msgstr "" … … 1258 1258 msgstr "" 1259 1259 1260 #: includes/class-landexhub-consent- services.php:511260 #: includes/class-landexhub-consent-admin.php:2529 includes/class-landexhub-consent-admin.php:3529 includes/class-landexhub-consent-admin.php:4123 includes/class-landexhub-consent-services.php:51 1261 1261 msgid "Necessary" 1262 1262 msgstr "" … … 1266 1266 msgstr "" 1267 1267 1268 #: includes/class-landexhub-consent-admin.php:3936 1269 msgid "Necessary — it runs for every visitor, there is nothing to hold back" 1270 msgstr "" 1271 1272 #: includes/class-landexhub-consent-admin.php:4146 1273 msgid "Necessary — it runs for every visitor, there is nothing to hold back." 1274 msgstr "" 1275 1268 1276 #: includes/class-landexhub-consent-admin.php:631 1269 1277 msgid "Necessary — name" … … 1274 1282 msgstr "" 1275 1283 1276 #: includes/class-landexhub-consent-admin.php:293 11284 #: includes/class-landexhub-consent-admin.php:2939 1277 1285 msgid "Needs the free WP Consent API plugin — that is the channel it listens on." 1278 1286 msgstr "" … … 1282 1290 msgstr "" 1283 1291 1284 #: includes/class-landexhub-consent-admin.php:42 631292 #: includes/class-landexhub-consent-admin.php:4298 1285 1293 msgid "No issues found so far" 1286 1294 msgstr "" 1287 1295 1288 #: includes/class-landexhub-consent-admin.php:273 01296 #: includes/class-landexhub-consent-admin.php:2736 1289 1297 msgid "No other Google tag was found in the front page HTML or from a known plugin, so Basic mode covers the Google tags found: the gtag.js that LandexHub Consent loads does not load before consent." 1290 1298 msgstr "" … … 1314 1322 msgstr "" 1315 1323 1316 #: includes/class-landexhub-consent-admin.php:29 131324 #: includes/class-landexhub-consent-admin.php:2921 1317 1325 msgid "None known" 1318 1326 msgstr "" … … 1327 1335 msgstr "" 1328 1336 1329 #: includes/class-landexhub-consent-admin.php:2430 includes/class-landexhub-consent-admin.php:41 521337 #: includes/class-landexhub-consent-admin.php:2430 includes/class-landexhub-consent-admin.php:4187 1330 1338 msgid "Not clear yet" 1331 1339 msgstr "" 1332 1340 1333 #: includes/class-landexhub-consent-admin.php:35 23 includes/class-landexhub-consent-admin.php:40951341 #: includes/class-landexhub-consent-admin.php:3533 includes/class-landexhub-consent-admin.php:4126 1334 1342 msgid "Not governed yet" 1335 1343 msgstr "" 1336 1344 1337 #: includes/class-landexhub-consent-admin.php:39 231345 #: includes/class-landexhub-consent-admin.php:3940 1338 1346 msgid "Not governed yet — the guide below shows how to gate it." 1339 1347 msgstr "" 1340 1348 1341 #: includes/class-landexhub-consent-admin.php:297 01349 #: includes/class-landexhub-consent-admin.php:2978 1342 1350 msgid "Not tested by LandexHub; check it on your site." 1343 1351 msgstr "" 1344 1352 1345 #: includes/class-landexhub-consent-admin.php:40 191353 #: includes/class-landexhub-consent-admin.php:4036 1346 1354 msgid "Note" 1347 1355 msgstr "" … … 1351 1359 msgstr "" 1352 1360 1353 #: includes/class-landexhub-consent-admin.php:25 681361 #: includes/class-landexhub-consent-admin.php:2571 1354 1362 msgid "nothing governs it" 1355 1363 msgstr "" 1356 1364 1357 #: includes/class-landexhub-consent-admin.php:41 191365 #: includes/class-landexhub-consent-admin.php:4154 1358 1366 msgid "Nothing holds it back yet — the detail shows how to gate it." 1359 1367 msgstr "" … … 1367 1375 msgstr "" 1368 1376 1369 #: includes/class-landexhub-consent-admin.php:4 1961377 #: includes/class-landexhub-consent-admin.php:4231 1370 1378 msgid "Nothing to set up here: their Google tags follow the Consent Mode signals LandexHub Consent sends. Consent integrations shows what was found on this site." 1371 1379 msgstr "" 1372 1380 1373 #: includes/class-landexhub-consent-admin.php:292 11381 #: includes/class-landexhub-consent-admin.php:2929 1374 1382 msgid "Nothing to switch." 1375 1383 msgstr "" 1376 1384 1377 1385 #. translators: %s: comma-separated list of problems. 1378 #: includes/class-landexhub-consent-admin.php:316 1 includes/class-landexhub-consent-admin.php:32301386 #: includes/class-landexhub-consent-admin.php:3169 includes/class-landexhub-consent-admin.php:3238 1379 1387 msgid "Nothing was imported. Problems found: %s" 1380 1388 msgstr "" 1381 1389 1382 #: includes/class-landexhub-consent-admin.php:277 11390 #: includes/class-landexhub-consent-admin.php:2777 1383 1391 msgid "Nothing was saved — the service data was not valid (name, category or URL patterns)." 1384 1392 msgstr "" … … 1388 1396 msgstr "" 1389 1397 1390 #: includes/class-landexhub-consent-admin.php:29 621398 #: includes/class-landexhub-consent-admin.php:2970 1391 1399 msgid "Off — the plugin decides on its own." 1392 1400 msgstr "" … … 1420 1428 msgstr "" 1421 1429 1422 #: includes/class-landexhub-consent-admin.php:29 621430 #: includes/class-landexhub-consent-admin.php:2970 1423 1431 msgid "On — the plugin follows the visitor." 1424 1432 msgstr "" 1425 1433 1426 #: includes/class-landexhub-consent-admin.php:28 451434 #: includes/class-landexhub-consent-admin.php:2853 1427 1435 msgid "One or the other, never both — two containers measure everything twice. Neither is mandatory." 1428 1436 msgstr "" 1429 1437 1430 1438 #. translators: 1: gated occurrences, 2: all occurrences. 1431 #: includes/class-landexhub-consent-admin.php:254 01439 #: includes/class-landexhub-consent-admin.php:2543 1432 1440 msgid "only %1$d of %2$d occurrences are gated" 1433 1441 msgstr "" 1434 1442 1435 #: includes/class-landexhub-consent-admin.php:2 8951443 #: includes/class-landexhub-consent-admin.php:2903 1436 1444 msgid "Only plugins actually running here. Their tags stay theirs — LandexHub Consent just passes on what the visitor chose." 1437 1445 msgstr "" 1438 1446 1439 #: includes/class-landexhub-consent-admin.php:41 151447 #: includes/class-landexhub-consent-admin.php:4150 1440 1448 msgid "Only some of its copies are held back; another one still loads before consent." 1441 1449 msgstr "" … … 1445 1453 msgstr "" 1446 1454 1447 #: includes/class-landexhub-consent-admin.php:26 38 includes/class-landexhub-consent-admin.php:29561455 #: includes/class-landexhub-consent-admin.php:2644 includes/class-landexhub-consent-admin.php:2964 1448 1456 msgid "Open settings" 1449 1457 msgstr "" … … 1453 1461 msgstr "" 1454 1462 1455 #: includes/class-landexhub-consent-admin.php:4 2901463 #: includes/class-landexhub-consent-admin.php:4325 1456 1464 msgid "Open the consent log records" 1457 1465 msgstr "" 1458 1466 1459 #: includes/class-landexhub-consent-admin.php:33 791467 #: includes/class-landexhub-consent-admin.php:3387 1460 1468 msgid "Open the Google settings" 1461 1469 msgstr "" … … 1481 1489 msgstr "" 1482 1490 1483 #: includes/class-landexhub-consent-admin.php:4 0951491 #: includes/class-landexhub-consent-admin.php:4126 1484 1492 msgid "Partly governed" 1485 1493 msgstr "" 1486 1494 1487 #: includes/class-landexhub-consent-admin.php:29 041495 #: includes/class-landexhub-consent-admin.php:2912 1488 1496 msgid "Pass consent" 1489 1497 msgstr "" … … 1494 1502 1495 1503 #. translators: %s: plugin name. 1496 #: includes/class-landexhub-consent-admin.php:29 481504 #: includes/class-landexhub-consent-admin.php:2956 1497 1505 msgid "Pass the visitor's decision to %s" 1498 1506 msgstr "" … … 1514 1522 msgstr "" 1515 1523 1516 #: includes/class-landexhub-consent-admin.php:29 021524 #: includes/class-landexhub-consent-admin.php:2910 1517 1525 msgid "Plugin" 1518 1526 msgstr "" 1519 1527 1520 #: includes/class-landexhub-consent-admin.php:36 08 includes/class-landexhub-consent-admin.php:37011528 #: includes/class-landexhub-consent-admin.php:3621 includes/class-landexhub-consent-admin.php:3714 1521 1529 msgid "Preferences" 1522 1530 msgstr "" … … 1526 1534 msgstr "" 1527 1535 1528 #: includes/class-landexhub-consent-admin.php:35 34 includes/class-landexhub-consent-admin.php:3976includes/class-landexhub-consent-frontend.php:284 includes/class-landexhub-consent-frontend.php:3051536 #: includes/class-landexhub-consent-admin.php:3544 includes/class-landexhub-consent-admin.php:3993 includes/class-landexhub-consent-frontend.php:284 includes/class-landexhub-consent-frontend.php:305 1529 1537 msgid "Privacy policy" 1530 1538 msgstr "" … … 1550 1558 msgstr "" 1551 1559 1552 #: includes/class-landexhub-consent-admin.php:38 641560 #: includes/class-landexhub-consent-admin.php:3877 1553 1561 msgid "Re-check the site" 1554 1562 msgstr "" … … 1558 1566 msgstr "" 1559 1567 1560 #: includes/class-landexhub-consent-admin.php:301 11568 #: includes/class-landexhub-consent-admin.php:3019 1561 1569 msgid "Record of granted, rejected and changed consents." 1562 1570 msgstr "" … … 1578 1586 msgstr "" 1579 1587 1580 #: includes/class-landexhub-consent-admin.php:37 121588 #: includes/class-landexhub-consent-admin.php:3725 1581 1589 msgid "Remove from the list" 1582 1590 msgstr "" … … 1586 1594 msgstr "" 1587 1595 1588 #: includes/class-landexhub-consent-admin.php:27 671596 #: includes/class-landexhub-consent-admin.php:2773 1589 1597 msgid "Removed from the services list." 1590 1598 msgstr "" 1591 1599 1592 #: includes/class-landexhub-consent-admin.php:36 641600 #: includes/class-landexhub-consent-admin.php:3677 1593 1601 msgid "Replace it with a linked preview image" 1594 1602 msgstr "" 1595 1603 1596 #: includes/class-landexhub-consent-admin.php:36 621604 #: includes/class-landexhub-consent-admin.php:3675 1597 1605 msgid "Replace the video with a link" 1598 1606 msgstr "" 1599 1607 1600 #: includes/class-landexhub-consent-admin.php:30 39 includes/class-landexhub-consent-admin.php:30421608 #: includes/class-landexhub-consent-admin.php:3047 includes/class-landexhub-consent-admin.php:3050 1601 1609 msgid "Reset consents" 1602 1610 msgstr "" … … 1607 1615 1608 1616 #. translators: %d: consent revision number. 1609 #: includes/class-landexhub-consent-admin.php:30 441617 #: includes/class-landexhub-consent-admin.php:3052 1610 1618 msgid "Revision %d" 1611 1619 msgstr "" … … 1619 1627 msgstr "" 1620 1628 1621 #: includes/class-landexhub-consent-admin.php:2851 includes/class-landexhub-consent-admin.php:2996 1629 #: includes/class-landexhub-consent-admin.php:2529 1630 msgid "runs for every visitor, there is nothing to hold back" 1631 msgstr "" 1632 1633 #: includes/class-landexhub-consent-admin.php:2859 includes/class-landexhub-consent-admin.php:3004 1622 1634 msgid "Save" 1623 1635 msgstr "" … … 1640 1652 msgstr "" 1641 1653 1642 #: includes/class-landexhub-consent-admin.php:3 6881654 #: includes/class-landexhub-consent-admin.php:3701 1643 1655 msgid "Save the source to your services list so it appears on your cookie policy page under the chosen category. The list documents the source; gating is done by the steps above." 1644 1656 msgstr "" 1645 1657 1646 #: includes/class-landexhub-consent-admin.php:37 161658 #: includes/class-landexhub-consent-admin.php:3729 1647 1659 msgid "Save to the services list" 1648 1660 msgstr "" 1649 1661 1650 #: includes/class-landexhub-consent-admin.php:276 31662 #: includes/class-landexhub-consent-admin.php:2769 1651 1663 msgid "Saved to the services list." 1652 1664 msgstr "" … … 1660 1672 msgstr "" 1661 1673 1662 #: includes/class-landexhub-consent-admin.php:34 75 includes/class-landexhub-consent-admin.php:4016includes/class-landexhub-consent-frontend.php:3011674 #: includes/class-landexhub-consent-admin.php:3483 includes/class-landexhub-consent-admin.php:4033 includes/class-landexhub-consent-frontend.php:301 1663 1675 msgid "Service" 1664 1676 msgstr "" 1665 1677 1666 #: includes/class-landexhub-consent-admin.php:34 691678 #: includes/class-landexhub-consent-admin.php:3477 1667 1679 msgid "Service inventory" 1668 1680 msgstr "" 1669 1681 1670 #: includes/class-landexhub-consent-admin.php:128 includes/class-landexhub-consent-admin.php:2045 includes/class-landexhub-consent-admin.php:37 55 includes/class-landexhub-consent-admin.php:38871682 #: includes/class-landexhub-consent-admin.php:128 includes/class-landexhub-consent-admin.php:2045 includes/class-landexhub-consent-admin.php:3768 includes/class-landexhub-consent-admin.php:3903 1671 1683 msgid "Services" 1672 1684 msgstr "" 1673 1685 1674 #: includes/class-landexhub-consent-admin.php:36 861686 #: includes/class-landexhub-consent-admin.php:3699 1675 1687 msgid "Services list" 1676 1688 msgstr "" … … 1688 1700 msgstr "" 1689 1701 1690 #: includes/class-landexhub-consent-admin.php:329 01702 #: includes/class-landexhub-consent-admin.php:3298 1691 1703 msgid "Settings imported." 1692 1704 msgstr "" … … 1728 1740 1729 1741 #. translators: %s: comma-separated list of setting keys. 1730 #: includes/class-landexhub-consent-admin.php:33 451742 #: includes/class-landexhub-consent-admin.php:3353 1731 1743 msgid "Some values were not valid and were not saved: %s. The previous values were kept." 1732 1744 msgstr "" 1733 1745 1734 #: includes/class-landexhub-consent-admin.php:42 231746 #: includes/class-landexhub-consent-admin.php:4258 1735 1747 msgid "Something missing? The check reads the front page; a source that loads only on a subpage does not show up here." 1736 1748 msgstr "" 1737 1749 1738 #: includes/class-landexhub-consent-admin.php:2327 includes/class-landexhub-consent-admin.php:39 451750 #: includes/class-landexhub-consent-admin.php:2327 includes/class-landexhub-consent-admin.php:3962 1739 1751 msgid "Source" 1740 1752 msgstr "" … … 1748 1760 msgstr "" 1749 1761 1750 #: includes/class-landexhub-consent-admin.php:39 431762 #: includes/class-landexhub-consent-admin.php:3960 1751 1763 msgid "Sources on this site" 1752 1764 msgstr "" 1753 1765 1754 #: includes/class-landexhub-consent-admin.php:39 05 includes/class-landexhub-consent-admin.php:40181766 #: includes/class-landexhub-consent-admin.php:3920 includes/class-landexhub-consent-admin.php:4035 1755 1767 msgid "Status" 1756 1768 msgstr "" … … 1773 1785 msgstr "" 1774 1786 1775 #: includes/class-landexhub-consent-admin.php:43 061787 #: includes/class-landexhub-consent-admin.php:4341 1776 1788 msgid "Technical settings most sites never need to change. The defaults work without visiting this page." 1777 1789 msgstr "" … … 1814 1826 msgstr "" 1815 1827 1816 #: includes/class-landexhub-consent-admin.php:4 1831828 #: includes/class-landexhub-consent-admin.php:4218 1817 1829 msgid "The container manages all Google tags. LandexHub Consent inserts it and hands it the consent first." 1818 1830 msgstr "" … … 1826 1838 msgstr "" 1827 1839 1828 #: includes/class-landexhub-consent-admin.php:32 461840 #: includes/class-landexhub-consent-admin.php:3254 1829 1841 msgid "the file is not a JSON export of this plugin" 1830 1842 msgstr "" 1831 1843 1832 #: includes/class-landexhub-consent-admin.php:32 491844 #: includes/class-landexhub-consent-admin.php:3257 1833 1845 msgid "the file is not a settings export of LandexHub Consent" 1834 1846 msgstr "" … … 1842 1854 msgstr "" 1843 1855 1844 #: includes/class-landexhub-consent-admin.php:2261 includes/class-landexhub-consent-admin.php:40 07 includes/class-landexhub-consent-admin.php:40781856 #: includes/class-landexhub-consent-admin.php:2261 includes/class-landexhub-consent-admin.php:4024 includes/class-landexhub-consent-admin.php:4095 1845 1857 msgid "The front page could not be loaded, so it could not be checked. Try again in a moment." 1846 1858 msgstr "" … … 1860 1872 1861 1873 #. translators: %s: what went wrong. 1862 #: includes/class-landexhub-consent-admin.php:32 281874 #: includes/class-landexhub-consent-admin.php:3236 1863 1875 msgid "The import was only partly applied: %s. Check the settings and the services list." 1864 1876 msgstr "" 1865 1877 1866 #: includes/class-landexhub-consent-admin.php:36 191878 #: includes/class-landexhub-consent-admin.php:3632 1867 1879 msgid "the original script body stays unchanged" 1868 1880 msgstr "" … … 1897 1909 msgstr "" 1898 1910 1899 #: includes/class-landexhub-consent-admin.php:31 781911 #: includes/class-landexhub-consent-admin.php:3186 1900 1912 msgid "the services could not be stored" 1901 1913 msgstr "" … … 1909 1921 msgstr "" 1910 1922 1911 #: includes/class-landexhub-consent-admin.php:31 891923 #: includes/class-landexhub-consent-admin.php:3197 1912 1924 msgid "the settings could not be stored" 1913 1925 msgstr "" 1914 1926 1915 #: includes/class-landexhub-consent-admin.php:31 871927 #: includes/class-landexhub-consent-admin.php:3195 1916 1928 msgid "the settings could not be stored and the previous services list could not be restored, so the imported services are in use with the previous settings" 1917 1929 msgstr "" … … 1922 1934 msgstr "" 1923 1935 1924 #: includes/class-landexhub-consent-admin.php:42 161936 #: includes/class-landexhub-consent-admin.php:4251 1925 1937 msgid "The site check found no measurement. The consent bar works without it — you do not have to add anything." 1926 1938 msgstr "" 1927 1939 1928 #: includes/class-landexhub-consent-admin.php:42 601940 #: includes/class-landexhub-consent-admin.php:4295 1929 1941 msgid "the specific steps are with each issue below." 1930 1942 msgstr "" 1931 1943 1932 1944 #. translators: %s: Universal Analytics ID, e.g. UA-12345-1. 1933 #: includes/class-landexhub-consent-admin.php:33 751945 #: includes/class-landexhub-consent-admin.php:3383 1934 1946 msgid "The stored measurement ID %s is a Universal Analytics ID. Google no longer processes Universal Analytics data, so LandexHub Consent does not load it. Enter a Google Analytics 4 ID (G-…) instead, or choose “Nothing” to remove it." 1935 1947 msgstr "" 1936 1948 1937 #: includes/class-landexhub-consent-admin.php:27 381949 #: includes/class-landexhub-consent-admin.php:2744 1938 1950 msgid "The switch only controls the gtag.js that LandexHub Consent loads. These load regardless of it:" 1939 1951 msgstr "" … … 1947 1959 msgstr "" 1948 1960 1949 #: includes/class-landexhub-consent-admin.php:31 431961 #: includes/class-landexhub-consent-admin.php:3151 1950 1962 msgid "the uploaded file could not be read" 1951 1963 msgstr "" 1952 1964 1953 #: includes/class-landexhub-consent-admin.php:36 631965 #: includes/class-landexhub-consent-admin.php:3676 1954 1966 msgid "The visitor leaves for the service; nothing loads on your site." 1955 1967 msgstr "" … … 1963 1975 msgstr "" 1964 1976 1965 #: includes/class-landexhub-consent-admin.php:3 8901977 #: includes/class-landexhub-consent-admin.php:3906 1966 1978 msgid "This service is not on the list any more." 1967 1979 msgstr "" 1968 1980 1969 #: includes/class-landexhub-consent-admin.php:42 151981 #: includes/class-landexhub-consent-admin.php:4250 1970 1982 msgid "This site does not measure anything yet" 1971 1983 msgstr "" … … 1975 1987 msgstr "" 1976 1988 1977 #: includes/class-landexhub-consent-admin.php:3 6921989 #: includes/class-landexhub-consent-admin.php:3705 1978 1990 msgid "This source is already in your services list — saving updates the entry." 1979 1991 msgstr "" … … 1987 1999 msgstr "" 1988 2000 1989 #: includes/class-landexhub-consent-admin.php:30 292001 #: includes/class-landexhub-consent-admin.php:3037 1990 2002 msgid "Tools" 1991 2003 msgstr "" … … 2016 2028 msgstr "" 2017 2029 2018 #: includes/class-landexhub-consent-admin.php:40 57 includes/class-landexhub-consent-admin.php:40922030 #: includes/class-landexhub-consent-admin.php:4074 includes/class-landexhub-consent-admin.php:4120 2019 2031 msgid "Unassigned" 2020 2032 msgstr "" 2021 2033 2022 #: includes/class-landexhub-consent-admin.php:40 532034 #: includes/class-landexhub-consent-admin.php:4070 2023 2035 msgid "Unassigned — not in the catalog or in your services list" 2024 2036 msgstr "" … … 2032 2044 msgstr "" 2033 2045 2034 #: includes/class-landexhub-consent-admin.php:299 12046 #: includes/class-landexhub-consent-admin.php:2999 2035 2047 msgid "Until WP Consent API is installed nothing changes — those plugins keep behaving exactly as they do now." 2036 2048 msgstr "" … … 2041 2053 msgstr "" 2042 2054 2043 #: includes/class-landexhub-consent-admin.php:36 662055 #: includes/class-landexhub-consent-admin.php:3679 2044 2056 msgid "Use a click-to-load plugin" 2045 2057 msgstr "" 2046 2058 2047 2059 #. translators: %s: the container or measurement ID that stays active. 2048 #: includes/class-landexhub-consent-admin.php:344 02060 #: includes/class-landexhub-consent-admin.php:3448 2049 2061 msgid "Use either a GTM container or a gtag.js ID, not both — two containers would measure everything twice. Keeping %s and clearing the other field." 2050 2062 msgstr "" … … 2054 2066 msgstr "" 2055 2067 2056 #: includes/class-landexhub-consent-admin.php:4 1952068 #: includes/class-landexhub-consent-admin.php:4230 2057 2069 msgid "Using Site Kit or MonsterInsights?" 2058 2070 msgstr "" … … 2062 2074 msgstr "" 2063 2075 2064 #: includes/class-landexhub-consent-admin.php:36 232076 #: includes/class-landexhub-consent-admin.php:3636 2065 2077 msgid "Verify the edit" 2066 2078 msgstr "" … … 2086 2098 msgstr "" 2087 2099 2088 #: includes/class-landexhub-consent-admin.php:995 includes/class-landexhub-consent-admin.php:28 442100 #: includes/class-landexhub-consent-admin.php:995 includes/class-landexhub-consent-admin.php:2852 2089 2101 msgid "What LandexHub Consent adds to the site" 2090 2102 msgstr "" … … 2094 2106 msgstr "" 2095 2107 2096 #: includes/class-landexhub-consent-admin.php:37 56 includes/class-landexhub-consent-admin.php:39012108 #: includes/class-landexhub-consent-admin.php:3769 includes/class-landexhub-consent-admin.php:3916 2097 2109 msgid "What this site uses and how consent governs it." 2098 2110 msgstr "" … … 2102 2114 msgstr "" 2103 2115 2104 #: includes/class-landexhub-consent-admin.php:2328 includes/class-landexhub-consent-admin.php:39 462116 #: includes/class-landexhub-consent-admin.php:2328 includes/class-landexhub-consent-admin.php:3963 2105 2117 msgid "Who adds it" 2106 2118 msgstr "" 2107 2119 2108 #: includes/class-landexhub-consent-admin.php:2 8942120 #: includes/class-landexhub-consent-admin.php:2902 2109 2121 msgid "Who LandexHub Consent passes consent to" 2110 2122 msgstr "" … … 2131 2143 msgstr "" 2132 2144 2133 #: includes/class-landexhub-consent-admin.php:298 02145 #: includes/class-landexhub-consent-admin.php:2988 2134 2146 msgid "WP Consent API is a shared channel: while it is installed, LandexHub Consent is the consent manager for every plugin here that reads it." 2135 2147 msgstr "" 2136 2148 2137 #: includes/class-landexhub-consent-admin.php:2382 includes/class-landexhub-consent-admin.php:25 572149 #: includes/class-landexhub-consent-admin.php:2382 includes/class-landexhub-consent-admin.php:2560 2138 2150 msgid "written into the page" 2139 2151 msgstr "" … … 2143 2155 msgstr "" 2144 2156 2145 #: includes/class-landexhub-consent-admin.php:4 1852157 #: includes/class-landexhub-consent-admin.php:4220 2146 2158 msgid "You will find the ID in Tag Manager, top right." 2147 2159 msgstr "" 2148 2160 2149 #: includes/class-landexhub-consent-admin.php:271 02161 #: includes/class-landexhub-consent-admin.php:2716 2150 2162 msgid "your GTM container — it always loads; what each tag does before consent is decided in GTM" 2151 2163 msgstr "" -
landexhub-consent/tags/0.9.3/readme.txt
r3758640 r3762168 5 5 Tested up to: 7.1 6 6 Requires PHP: 7.4 7 Stable tag: 0.9. 27 Stable tag: 0.9.3 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 46 46 This plugin does not call home and sends no telemetry. Depending on what **you** configure, it talks to the following services: 47 47 48 **Google Tag Manager / Google tag (gtag.js)** — optional, disabled by default. If you enter your own GTM container ID or gtag.js measurement ID in the plugin settings, the plugin embeds the standard Google snippet, and every visitor's browser then loads the tag from `www.googletagmanager.com` (requests `gtm.js` or `gtag/js`). This is required for the measurement you configured to work. The plugin prints the Google Consent Mode v2 `denied` default before these tags, unless a developer turns that default off with the `landexhub_consent_emit_consent_default` filter. No `<noscript>` fallback is printed, so visitors without JavaScript load nothing from Google. What Google receives with those requests (IP address, user agent, page URL, consent state signals) is described in Google's documentation: [Google Terms of Service](https://policies.google.com/terms), [Google Privacy Policy](https://policies.google.com/privacy). If you leave the setting empty, nothing is loaded from Google by this plugin.48 **Google Tag Manager / Google tag (gtag.js)** — optional, disabled by default. If you enter your own GTM container ID or gtag.js measurement ID in the plugin settings, the plugin embeds the standard Google snippet, and every visitor's browser then loads the tag from `www.googletagmanager.com` (requests `gtm.js` or `gtag/js`). This is required for the measurement you configured to work. The plugin prints the Google Consent Mode v2 `denied` default before these tags, unless a developer turns that default off with the `landexhub_consent_emit_consent_default` filter. With a GTM container the plugin also prints Google's `<noscript>` frame right after the opening `<body>` tag (in themes that call `wp_body_open()`), as in Google's installation instructions: visitors without JavaScript then load `ns.html` from `www.googletagmanager.com`. Without JavaScript there is no consent bar and no Consent Mode default, so that request carries no consent state. What Google receives with those requests (IP address, user agent, page URL, consent state signals) is described in Google's documentation: [Google Terms of Service](https://policies.google.com/terms), [Google Privacy Policy](https://policies.google.com/privacy). If you leave the setting empty, nothing is loaded from Google by this plugin. 49 49 50 50 **Your own site (loopback)** — the site check fetches your own homepage over HTTP (a loopback request to your own server) to scan the HTML for third-party scripts and the Google tag order. No external service is involved. … … 119 119 == Changelog == 120 120 121 = 0.9.3 = 122 * "Verify the edit" in the gating guide checks the site again and returns to the page you started from (the service detail or Services), not to a page that has no menu entry. 123 * A source saved to the services list from an inline snippet (for example the Meta Pixel) is matched to its catalog service, so it is listed once in Services and on the cookie policy page. Entries saved this way in 0.9.2 are now shown with their catalog service too. 124 * Services the catalog files as necessary (Stripe, PayPal, Google reCAPTCHA, Cloudflare Turnstile) are shown as "Necessary": they no longer count as needing attention, are not reported as loading before consent and are not offered for gating. 125 * Google tags follow Google's installation snippets: the GTM container also prints its `<noscript>` frame right after the opening `<body>` tag, and gtag.js in Advanced mode loads with `async`, followed by its config. The plugin's own tags only add an `id` attribute. 126 * The `landexhub_consent_update` dataLayer event now comes after GTM's `gtm.js` event whenever the container starts while the page loads, also when the theme or another plugin prints it after the LandexHub Consent script, so GTM triggers on it fire. A container that starts only after the page has loaded (for example one delayed by an optimisation plugin) still gets the event before `gtm.js`. The Consent Mode update with a returning visitor's choice still goes out at once, before the container's first tag. 127 121 128 = 0.9.2 = 122 129 * The consent log retention is now a setting: keep records for 3 months up to 5 years, or until you delete them (default 12 months). … … 149 156 == Upgrade Notice == 150 157 158 = 0.9.3 = 159 GTM triggers on the consent event fire wherever the container is printed in the page. Fixes in the Services page: "Verify the edit" returns to the service, no duplicate rows for inline sources, necessary services are not reported as problems. 160 151 161 = 0.9.2 = 152 162 Configurable consent log retention, opt-in credit link and stricter settings validation. -
landexhub-consent/tags/0.9.3/src/consent.ts
r3758640 r3762168 427 427 // that outlived the visitor's choice (it expired, or the cookie was removed). 428 428 pushWpConsent(state, "none" === source); 429 // The signals go out at once, so GTM knows a returning visitor's choice before its first tag. 429 430 gtag("consent", "update", signals(state)); 430 431 const ev: { [key: string]: unknown } = { event: cfg.dataLayer!.onUpdate }; 431 432 ev.landexhub_consent = catBooleans(state); 432 433 ev.landexhub_consent_source = source; 433 (w.dataLayer as unknown[]).push(ev); 434 // The event is meant for GTM triggers, which never see an event that comes before GTM's 435 // gtm.js. A page-load event usually does, a choice made in the bar only rarely. 436 afterGtmStart(function () { (w.dataLayer as unknown[]).push(ev); }); 437 } 438 439 // Runs fn once the GTM container has started: right away when its gtm.js event is already 440 // in the dataLayer, otherwise just after the GTM snippet pushes it, whether the snippet 441 // comes before or after this script. Without GTM on the page fn runs once the page has 442 // loaded, so other listeners still get the event. 443 function afterGtmStart(fn: () => void): void { 444 const dl = w.dataLayer as { [key: string]: unknown }[]; 445 const started = function (e: unknown): boolean { 446 return !!e && typeof e === "object" && (e as { event?: unknown }).event === "gtm.js"; 447 }; 448 if (dl.some(started) || "complete" === d.readyState) { 449 fn(); 450 return; 451 } 452 let done = false; 453 const run = function (): void { 454 if (done) return; 455 done = true; 456 if (dl.push === wrapped) dl.push = original; 457 fn(); 458 }; 459 const original = dl.push; 460 const wrapped = function (this: unknown, ...items: { [key: string]: unknown }[]): number { 461 const n = original.apply(dl, items); 462 if (!done && items.some(started)) run(); 463 return n; 464 }; 465 dl.push = wrapped; 466 w.addEventListener("load", run); 434 467 } 435 468 function persist(state: ConsentState): void { -
landexhub-consent/trunk/assets/js/landexhub-consent.js
r3758640 r3762168 368 368 // that outlived the visitor's choice (it expired, or the cookie was removed). 369 369 pushWpConsent(state, "none" === source); 370 // The signals go out at once, so GTM knows a returning visitor's choice before its first tag. 370 371 gtag("consent", "update", signals(state)); 371 372 const ev = { event: cfg.dataLayer.onUpdate }; 372 373 ev.landexhub_consent = catBooleans(state); 373 374 ev.landexhub_consent_source = source; 374 w.dataLayer.push(ev); 375 // The event is meant for GTM triggers, which never see an event that comes before GTM's 376 // gtm.js. A page-load event usually does, a choice made in the bar only rarely. 377 afterGtmStart(function () { w.dataLayer.push(ev); }); 378 } 379 // Runs fn once the GTM container has started: right away when its gtm.js event is already 380 // in the dataLayer, otherwise just after the GTM snippet pushes it, whether the snippet 381 // comes before or after this script. Without GTM on the page fn runs once the page has 382 // loaded, so other listeners still get the event. 383 function afterGtmStart(fn) { 384 const dl = w.dataLayer; 385 const started = function (e) { 386 return !!e && typeof e === "object" && e.event === "gtm.js"; 387 }; 388 if (dl.some(started) || "complete" === d.readyState) { 389 fn(); 390 return; 391 } 392 let done = false; 393 const run = function () { 394 if (done) 395 return; 396 done = true; 397 if (dl.push === wrapped) 398 dl.push = original; 399 fn(); 400 }; 401 const original = dl.push; 402 const wrapped = function (...items) { 403 const n = original.apply(dl, items); 404 if (!done && items.some(started)) 405 run(); 406 return n; 407 }; 408 dl.push = wrapped; 409 w.addEventListener("load", run); 375 410 } 376 411 function persist(state) { -
landexhub-consent/trunk/includes/class-landexhub-consent-admin.php
r3758640 r3762168 1565 1565 . '</h2><ul class="landexhub-consent-checklist">'; 1566 1566 foreach ( array_slice( $findings, 0, 6 ) as $f ) { 1567 $held = ! empty( $f['managed'] ) || ! empty( $f['gated'] ) || ! empty( $f['google'] ) ;1567 $held = ! empty( $f['managed'] ) || ! empty( $f['gated'] ) || ! empty( $f['google'] ) || ! empty( $f['necessary'] ); 1568 1568 $ok = $held && empty( $f['never_runs'] ); 1569 1569 $label = '' !== $f['vendor'] ? $f['vendor'] : $f['label']; … … 2485 2485 */ 2486 2486 private function finding_governed( $f ) { 2487 return 'consent-mode' === $f['reason'] || ! empty( $f['gated'] ) ;2487 return 'consent-mode' === $f['reason'] || ! empty( $f['gated'] ) || ! empty( $f['necessary'] ); 2488 2488 } 2489 2489 … … 2525 2525 if ( 'consent-mode' === $f['reason'] ) { 2526 2526 return $this->state_pill( true, __( 'Consent Mode v2 — tags inside a GTM container need their own consent settings', 'landexhub-consent' ) ); 2527 } 2528 if ( ! empty( $f['necessary'] ) && empty( $f['gated'] ) ) { 2529 return $this->state_pill( true, __( 'runs for every visitor, there is nothing to hold back', 'landexhub-consent' ), __( 'Necessary', 'landexhub-consent' ) ); 2527 2530 } 2528 2531 $problem = $this->gate_problem( $f ); … … 2602 2605 * source, so it stays readable in grayscale and in `forced-colors` mode. 2603 2606 * 2604 * @param bool $ok Whether consent governs the source. 2605 * @param string $note How it is governed (or why not). 2607 * @param bool $ok Whether consent governs the source. 2608 * @param string $note How it is governed (or why not). 2609 * @param string $label Pill text instead of the default one. 2606 2610 * @return string HTML. 2607 2611 */ 2608 private function state_pill( $ok, $note ) {2612 private function state_pill( $ok, $note, $label = '' ) { 2609 2613 $class = $ok ? 'landexhub-consent-pill is-ok' : 'landexhub-consent-pill is-warn'; 2610 $label = $ok ? __( 'Consent governs it', 'landexhub-consent' ) : __( 'Always loads', 'landexhub-consent' ); 2614 if ( '' === $label ) { 2615 $label = $ok ? __( 'Consent governs it', 'landexhub-consent' ) : __( 'Always loads', 'landexhub-consent' ); 2616 } 2611 2617 2612 2618 return '<span class="' . esc_attr( $class ) . '">' . esc_html( $label ) . '</span>' … … 2821 2827 * 2822 2828 * @param string|null $page Target page (default Consent integrations). 2829 * @param array $args Further query arguments of the target page, e.g. the service of a detail. 2823 2830 * @return string 2824 2831 */ 2825 private function rescan_url( $page = null ) {2832 private function rescan_url( $page = null, array $args = array() ) { 2826 2833 $page = null === $page ? self::PAGE_INTEGRATIONS : $page; 2827 return wp_nonce_url( 2828 admin_url( 'admin.php?page=' . $page . '&cnsx_rescan_sources=1' ), 2829 'landexhub_consent_rescan_sources' 2830 ); 2834 $url = admin_url( 'admin.php?page=' . $page ); 2835 if ( $args ) { 2836 $url = add_query_arg( array_map( 'rawurlencode', $args ), $url ); 2837 } 2838 return wp_nonce_url( add_query_arg( 'cnsx_rescan_sources', '1', $url ), 'landexhub_consent_rescan_sources' ); 2831 2839 } 2832 2840 … … 3518 3526 // Whether consent governs the service. 3519 3527 echo '<td>'; 3520 if ( $item['governed'] ) { 3528 if ( $this->item_necessary( $item ) ) { 3529 echo '<span class="landexhub-consent-pill is-ok">' . esc_html__( 'Necessary', 'landexhub-consent' ) . '</span>'; 3530 } elseif ( $item['governed'] ) { 3521 3531 echo '<span class="landexhub-consent-pill is-ok">' . esc_html__( 'Consent governs it', 'landexhub-consent' ) . '</span>'; 3522 3532 } else { … … 3557 3567 * part is never submitted together with the visible one. 3558 3568 * 3559 * @return void 3560 */ 3561 public function render_scripts_help() { 3569 * @param string $verify_url Where "Verify the edit" checks the site again and returns to: 3570 * the page the dialog is on (default Consent integrations). 3571 * @return void 3572 */ 3573 public function render_scripts_help( $verify_url = '' ) { 3562 3574 echo '<dialog class="landexhub-consent-dialog" id="landexhub-consent-gate-dialog">'; 3563 3575 echo '<div class="landexhub-consent-dialog__head">'; … … 3579 3591 echo '</div>'; 3580 3592 3581 $this->gate_form_script( );3593 $this->gate_form_script( '' !== $verify_url ? $verify_url : $this->rescan_url() ); 3582 3594 $this->gate_form_iframe(); 3583 3595 … … 3589 3601 * and the option to save the source to the services list. 3590 3602 * 3591 * @return void 3592 */ 3593 private function gate_form_script() { 3603 * @param string $verify_url URL of the "Verify the edit" button. 3604 * @return void 3605 */ 3606 private function gate_form_script( $verify_url ) { 3594 3607 echo '<form data-cnsx-part="script" hidden method="post" action="' . esc_url( admin_url( 'admin-post.php' ) ) . '">'; 3595 3608 wp_nonce_field( 'landexhub_consent_service' ); … … 3621 3634 echo '</div>'; 3622 3635 3623 echo '<p><a class="button" href="' . esc_url( $ this->rescan_url()) . '">' . esc_html__( 'Verify the edit', 'landexhub-consent' ) . '</a></p>';3636 echo '<p><a class="button" href="' . esc_url( $verify_url ) . '">' . esc_html__( 'Verify the edit', 'landexhub-consent' ) . '</a></p>'; 3624 3637 3625 3638 echo '<div class="landexhub-consent-notice-warn">' … … 3772 3785 3773 3786 $this->add_measurement_dialog(); 3774 $this->render_scripts_help( );3787 $this->render_scripts_help( $this->rescan_url( self::PAGE_SERVICES ) ); 3775 3788 $this->addon_note(); 3776 3789 }, … … 3878 3891 require_once LANDEXHUB_CONSENT_PLUGIN_DIR . 'includes/class-landexhub-consent-services.php'; 3879 3892 require_once LANDEXHUB_CONSENT_PLUGIN_DIR . 'includes/class-landexhub-consent-frontend.php'; 3880 3893 require_once LANDEXHUB_CONSENT_PLUGIN_DIR . 'includes/class-landexhub-consent-scan.php'; 3894 3895 // "Verify the edit" comes back here with a new check of the front page. 3896 $scan = LandexHub_Consent_Scan::run( $this->consume_rescan() ); 3881 3897 $items = LandexHub_Consent_Inventory::items(); 3882 3898 $back = admin_url( 'admin.php?page=' . self::PAGE_SERVICES ); … … 3895 3911 } 3896 3912 $item = $items[ $id ]; 3897 $scan = LandexHub_Consent_Scan::run( false );3898 3913 3899 3914 $this->shell( … … 3918 3933 } 3919 3934 3920 if ( ! empty( $item['governed'] ) || $is_configured ) { 3935 if ( $this->item_necessary( $item ) ) { 3936 echo '<li><span class="landexhub-consent-check-ok">✓</span> ' . esc_html__( 'Necessary — it runs for every visitor, there is nothing to hold back', 'landexhub-consent' ) . '</li>'; 3937 } elseif ( ! empty( $item['governed'] ) || $is_configured ) { 3921 3938 echo '<li><span class="landexhub-consent-check-ok">✓</span> ' . esc_html__( 'Consent governs it', 'landexhub-consent' ) . '</li>'; 3922 3939 } else { … … 3982 3999 } 3983 4000 3984 $this->render_scripts_help( );4001 $this->render_scripts_help( $this->rescan_url( self::PAGE_SERVICES, array( 'service' => $id ) ) ); 3985 4002 }, 3986 4003 'integrations' … … 4083 4100 4084 4101 /** 4102 * A service the catalog files as necessary (payments, spam protection): it runs for 4103 * every visitor, so it is neither held back nor a problem. 4104 * 4105 * @param array $item Inventory item. 4106 * @return bool 4107 */ 4108 private function item_necessary( $item ) { 4109 return 'necessary' === (string) $item['category'] && ! empty( $item['in_catalog'] ); 4110 } 4111 4112 /** 4085 4113 * Status label of a service row. 4086 4114 * … … 4092 4120 return array( 'is-muted', __( 'Unassigned', 'landexhub-consent' ) ); 4093 4121 } 4122 if ( $this->item_necessary( $item ) ) { 4123 return array( 'is-ok', __( 'Necessary', 'landexhub-consent' ) ); 4124 } 4094 4125 if ( empty( $item['governed'] ) ) { 4095 4126 return array( 'is-warn', ! empty( $item['partial'] ) ? __( 'Partly governed', 'landexhub-consent' ) : __( 'Not governed yet', 'landexhub-consent' ) ); … … 4110 4141 if ( ! empty( $item['configured'] ) ) { 4111 4142 echo '<span>' . esc_html__( 'Consent Mode v2 governs the consent.', 'landexhub-consent' ) . '</span>'; 4143 return; 4144 } 4145 if ( $this->item_necessary( $item ) ) { 4146 echo '<span>' . esc_html__( 'Necessary — it runs for every visitor, there is nothing to hold back.', 'landexhub-consent' ) . '</span>'; 4112 4147 return; 4113 4148 } -
landexhub-consent/trunk/includes/class-landexhub-consent-frontend.php
r3758640 r3762168 30 30 // Priority 5: optional GTM / gtag.js container right after the bootstrap. 31 31 add_action( 'wp_head', array( $this, 'print_google_tags' ), 5 ); 32 // The GTM <noscript> part goes immediately after the opening <body> tag, as Google asks. 33 add_action( 'wp_body_open', array( $this, 'print_gtm_noscript' ), 0 ); 32 34 // Priority 1: enqueue the core (UI, script activation, consent updates) early. 33 35 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue' ), 1 ); … … 157 159 public static function exclude_handles( $handles ) { 158 160 $handles = is_array( $handles ) ? $handles : array(); 159 foreach ( array( self::HANDLE, 'landexhub-consent-detect' , 'landexhub-consent-gtag') as $handle ) {161 foreach ( array( self::HANDLE, 'landexhub-consent-detect' ) as $handle ) { 160 162 if ( ! in_array( $handle, $handles, true ) ) { 161 163 $handles[] = $handle; … … 469 471 } 470 472 473 // Google's snippets are printed as Google publishes them. The only addition is an id, 474 // by which the site check tells the plugin's own tags from tags others add. 471 475 if ( '' !== $gtm ) { 472 476 $js = "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});" … … 474 478 . "j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);" 475 479 . "})(window,document,'script','dataLayer','" . esc_js( $gtm ) . "');"; 480 echo "<!-- Google Tag Manager -->\n"; 476 481 wp_print_inline_script_tag( $js, array( 'id' => 'landexhub-consent-gtm' ) ); 482 echo "<!-- End Google Tag Manager -->\n"; 477 483 } 478 484 … … 485 491 } 486 492 487 wp_enqueue_script( 488 'landexhub-consent-gtag', 489 'https://www.googletagmanager.com/gtag/js?id=' . rawurlencode( $gtag ), 490 array(), 491 null, // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion -- Third-party script versioned by Google, not by this plugin; no version query string is added to its URL. 492 false 493 ); 493 // The async loader first, then the config, as in Google's snippet. Enqueueing would 494 // drop async: WordPress loads a script with an inline "after" part blocking. 494 495 $js = 'window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}' 495 496 . "gtag('js',new Date());gtag('config','" . esc_js( $gtag ) . "');"; 496 wp_add_inline_script( 'landexhub-consent-gtag', $js ); 497 } 497 echo "<!-- Google tag (gtag.js) -->\n"; 498 wp_print_script_tag( 499 array( 500 'async' => true, 501 'src' => 'https://www.googletagmanager.com/gtag/js?id=' . rawurlencode( $gtag ), 502 'id' => 'landexhub-consent-gtag-js', 503 ) 504 ); 505 wp_print_inline_script_tag( $js, array( 'id' => 'landexhub-consent-gtag-js-after' ) ); 506 } 507 } 508 509 /** 510 * The <noscript> part of Google's GTM snippet, immediately after the opening <body> tag 511 * (themes call wp_body_open() there). Without JavaScript there is no consent bar and no 512 * Consent Mode default, so the frame loads without a consent state, as in Google's own 513 * installation. 514 * 515 * @return void 516 */ 517 public function print_gtm_noscript() { 518 $settings = LandexHub_Consent_Settings::get(); 519 $gtm = (string) $settings['gtm_id']; 520 if ( '' === $gtm ) { 521 return; 522 } 523 // The same condition as for the container in <head>: no frame without it. 524 if ( $this->emits_consent_default() && '' === $this->bootstrap_js() ) { 525 return; 526 } 527 echo "<!-- Google Tag Manager (noscript) -->\n" 528 . '<noscript><iframe id="landexhub-consent-gtm-noscript" src="' . esc_url( 'https://www.googletagmanager.com/ns.html?id=' . rawurlencode( $gtm ) ) . '"' 529 . ' height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>' . "\n" 530 . "<!-- End Google Tag Manager (noscript) -->\n"; 498 531 } 499 532 -
landexhub-consent/trunk/includes/class-landexhub-consent-google-check.php
r3758640 r3762168 102 102 // Remove all of our own tags so they do not look like a second snippet: 103 103 // landexhub-consent-gtm inline GTM loader 104 // landexhub-consent-gtag-js enqueued gtag.js (WordPress adds "-js" to the handle) 104 // landexhub-consent-gtag-js gtag.js loader (and -after, its config) 105 // landexhub-consent-gtm-noscript the GTM <noscript> frame 105 106 // Lazy-load plugins may rewrite src to data-src, so the id is the only reliable 106 107 // anchor. 107 108 $without_ours = preg_replace( 108 '/< script[^>]*\bid=["\']landexhub-consent-[^"\']*["\'][^>]*>[\s\S]*?<\/script>/i',109 '/<(script|iframe)[^>]*\bid=["\']landexhub-consent-[^"\']*["\'][^>]*>[\s\S]*?<\/\1>/i', 109 110 '', 110 111 $html -
landexhub-consent/trunk/includes/class-landexhub-consent-health.php
r3758640 r3762168 151 151 foreach ( isset( $scan['findings'] ) ? (array) $scan['findings'] : array() as $f ) { 152 152 $name = '' !== (string) $f['vendor'] ? (string) $f['vendor'] : (string) $f['label']; 153 if ( empty( $f['google'] ) && empty( $f['gated'] ) ) {153 if ( empty( $f['google'] ) && empty( $f['gated'] ) && empty( $f['necessary'] ) ) { 154 154 $loose[] = $name; 155 155 } elseif ( ! empty( $f['never_runs'] ) ) { -
landexhub-consent/trunk/includes/class-landexhub-consent-inventory.php
r3758640 r3762168 255 255 256 256 /** 257 * Match a stored service to a registry record via pattern substrings.257 * Match a stored service to a registry record via its name or pattern substrings. 258 258 * 259 259 * @param array $service Stored service. … … 263 263 private static function match_service( $service, $registry ) { 264 264 $patterns = isset( $service['patterns'] ) ? (array) $service['patterns'] : array(); 265 266 // An entry saved from an inline snippet carries the service name instead of a host 267 // (the snippet has none), so the catalog name and aliases count too. Otherwise the 268 // entry would show up as a second service next to its catalog record. 269 $name = strtolower( trim( isset( $service['name'] ) ? (string) $service['name'] : '' ) ); 270 if ( '' !== $name ) { 271 foreach ( $registry as $id => $record ) { 272 $names = array_merge( 273 isset( $record['name'] ) ? array( (string) $record['name'] ) : array(), 274 isset( $record['aliases'] ) ? (array) $record['aliases'] : array() 275 ); 276 foreach ( $names as $candidate ) { 277 if ( strtolower( trim( (string) $candidate ) ) === $name ) { 278 return (string) $id; 279 } 280 } 281 } 282 } 283 265 284 foreach ( $registry as $id => $record ) { 266 285 $det = isset( $record['detection'] ) ? (array) $record['detection'] : array(); -
landexhub-consent/trunk/includes/class-landexhub-consent-scan.php
r3758640 r3762168 440 440 $vendor = LandexHub_Consent_Vendors::lookup( $needle ); 441 441 $google = (bool) ( $vendor && ! empty( $vendor['consentModeAware'] ) ); 442 // Payments, spam protection and the like: the catalog files them as necessary, they 443 // run for every visitor and there is nothing to hold back. 444 $necessary = ! $google && $vendor && 'necessary' === (string) $vendor['category']; 442 445 443 446 return array( … … 462 465 // Why marked occurrences are not gated (GATE_* codes). 463 466 'problems' => array(), 464 'reason' => $google ? 'consent-mode' : '',467 'reason' => $google ? 'consent-mode' : ( $necessary ? 'necessary' : '' ), 465 468 'evidence' => '', 466 469 'google' => $google, 470 'necessary' => $necessary, 467 471 ); 468 472 } -
landexhub-consent/trunk/landexhub-consent.php
r3758640 r3762168 8 8 * Plugin Name: LandexHub Consent – Cookie Banner, GDPR & Google Consent Mode v2 9 9 * Description: Cookie banner for GDPR with Google Consent Mode v2, script gating, site diagnostics and consent logging. No cloud service required. 10 * Version: 0.9. 210 * Version: 0.9.3 11 11 * Requires at least: 6.3 12 12 * Requires PHP: 7.4 … … 21 21 defined( 'ABSPATH' ) || exit; 22 22 23 define( 'LANDEXHUB_CONSENT_VERSION', '0.9. 2' );23 define( 'LANDEXHUB_CONSENT_VERSION', '0.9.3' ); 24 24 define( 'LANDEXHUB_CONSENT_PLUGIN_FILE', __FILE__ ); 25 25 define( 'LANDEXHUB_CONSENT_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); -
landexhub-consent/trunk/languages/landexhub-consent-cs_CZ.po
r3758640 r3762168 937 937 msgstr "Nezbytné — popis" 938 938 939 msgid "Necessary — it runs for every visitor, there is nothing to hold back" 940 msgstr "Nezbytné — běží pro každého návštěvníka, není co zadržovat" 941 942 msgid "Necessary — it runs for every visitor, there is nothing to hold back." 943 msgstr "Nezbytné — běží pro každého návštěvníka, není co zadržovat." 944 939 945 msgid "Necessary — name" 940 946 msgstr "Nezbytné — název" … … 1197 1203 msgid "Rounding of the bar and the settings window, in pixels." 1198 1204 msgstr "Zaoblení lišty a okna s nastavením, v pixelech." 1205 1206 msgid "runs for every visitor, there is nothing to hold back" 1207 msgstr "běží pro každého návštěvníka, není co zadržovat" 1199 1208 1200 1209 msgid "Save" -
landexhub-consent/trunk/languages/landexhub-consent-de_DE.po
r3758640 r3762168 929 929 msgstr "Notwendig — Beschreibung" 930 930 931 msgid "Necessary — it runs for every visitor, there is nothing to hold back" 932 msgstr "Notwendig – läuft für alle Besucher, es gibt nichts zurückzuhalten" 933 934 msgid "Necessary — it runs for every visitor, there is nothing to hold back." 935 msgstr "Notwendig – läuft für alle Besucher, es gibt nichts zurückzuhalten." 936 931 937 msgid "Necessary — name" 932 938 msgstr "Notwendig — Name" … … 1189 1195 msgid "Rounding of the bar and the settings window, in pixels." 1190 1196 msgstr "Rundung der Leiste und des Einstellungsfensters, in Pixeln." 1197 1198 msgid "runs for every visitor, there is nothing to hold back" 1199 msgstr "läuft für alle Besucher, es gibt nichts zurückzuhalten" 1191 1200 1192 1201 msgid "Save" -
landexhub-consent/trunk/languages/landexhub-consent-pl_PL.po
r3758640 r3762168 937 937 msgstr "Niezbędne — opis" 938 938 939 msgid "Necessary — it runs for every visitor, there is nothing to hold back" 940 msgstr "Niezbędne — działa dla każdego odwiedzającego, nie ma czego wstrzymywać" 941 942 msgid "Necessary — it runs for every visitor, there is nothing to hold back." 943 msgstr "Niezbędne — działa dla każdego odwiedzającego, nie ma czego wstrzymywać." 944 939 945 msgid "Necessary — name" 940 946 msgstr "Niezbędne — nazwa" … … 1197 1203 msgid "Rounding of the bar and the settings window, in pixels." 1198 1204 msgstr "Zaokrąglenie paska i okna ustawień, w pikselach." 1205 1206 msgid "runs for every visitor, there is nothing to hold back" 1207 msgstr "działa dla każdego odwiedzającego, nie ma czego wstrzymywać" 1199 1208 1200 1209 msgid "Save" -
landexhub-consent/trunk/languages/landexhub-consent-sk_SK.po
r3758640 r3762168 937 937 msgstr "Nevyhnutné — popis" 938 938 939 msgid "Necessary — it runs for every visitor, there is nothing to hold back" 940 msgstr "Nevyhnutné — beží pre každého návštevníka, nie je čo zadržiavať" 941 942 msgid "Necessary — it runs for every visitor, there is nothing to hold back." 943 msgstr "Nevyhnutné — beží pre každého návštevníka, nie je čo zadržiavať." 944 939 945 msgid "Necessary — name" 940 946 msgstr "Nevyhnutné — názov" … … 1197 1203 msgid "Rounding of the bar and the settings window, in pixels." 1198 1204 msgstr "Zaoblenie lišty a okna s nastavením, v pixeloch." 1205 1206 msgid "runs for every visitor, there is nothing to hold back" 1207 msgstr "beží pre každého návštevníka, nie je čo zadržiavať" 1199 1208 1200 1209 msgid "Save" -
landexhub-consent/trunk/languages/landexhub-consent.pot
r3758640 r3762168 13 13 14 14 #. translators: accessible suffix telling screen readers the link opens a new tab. 15 #: includes/class-landexhub-consent-admin.php:783 includes/class-landexhub-consent-admin.php:3 79015 #: includes/class-landexhub-consent-admin.php:783 includes/class-landexhub-consent-admin.php:3803 16 16 msgid "(opens in a new tab)" 17 17 msgstr "" 18 18 19 19 #. translators: %d: number of services. 20 #: includes/class-landexhub-consent-admin.php:38 5320 #: includes/class-landexhub-consent-admin.php:3866 21 21 msgid "%d all good" 22 22 msgstr "" 23 23 24 24 #. translators: %d: number of checks. 25 #: includes/class-landexhub-consent-admin.php:4 26525 #: includes/class-landexhub-consent-admin.php:4300 26 26 msgid "%d check is not verified yet." 27 27 msgid_plural "%d checks are not verified yet." … … 37 37 38 38 #. translators: %d: number of issues. 39 #: includes/class-landexhub-consent-admin.php:42 5939 #: includes/class-landexhub-consent-admin.php:4294 40 40 msgid "%d issue requires attention" 41 41 msgid_plural "%d issues require attention" … … 58 58 59 59 #. translators: %d: number of services. 60 #: includes/class-landexhub-consent-admin.php:38 5760 #: includes/class-landexhub-consent-admin.php:3870 61 61 msgid "%d needs attention" 62 62 msgstr "" … … 73 73 74 74 #. translators: %d: number of services. 75 #: includes/class-landexhub-consent-admin.php:38 5075 #: includes/class-landexhub-consent-admin.php:3863 76 76 msgid "%d services found" 77 77 msgstr "" … … 92 92 93 93 #. translators: %d: number of sources. 94 #: includes/class-landexhub-consent-admin.php:38 6194 #: includes/class-landexhub-consent-admin.php:3874 95 95 msgid "%d unassigned" 96 96 msgstr "" … … 104 104 105 105 #. translators: %s: plugin name. 106 #: includes/class-landexhub-consent-admin.php:27 17106 #: includes/class-landexhub-consent-admin.php:2723 107 107 msgid "%s — it inserts its own Google tags and LandexHub Consent does not block them" 108 108 msgstr "" 109 109 110 110 #. translators: %s: comma-separated list of Google tag IDs. 111 #: includes/class-landexhub-consent-admin.php:27 25111 #: includes/class-landexhub-consent-admin.php:2731 112 112 msgid "%s — loaded by your theme or another plugin, not by LandexHub Consent" 113 113 msgstr "" … … 119 119 120 120 #. translators: %s: plugin name. 121 #: includes/class-landexhub-consent-admin.php:26 48121 #: includes/class-landexhub-consent-admin.php:2654 122 122 msgid "%s allows measurement before the visitor decides." 123 123 msgstr "" … … 129 129 130 130 #. translators: %s: plugin name. 131 #: includes/class-landexhub-consent-admin.php:26 75131 #: includes/class-landexhub-consent-admin.php:2681 132 132 msgid "%s sends its own Consent Mode default." 133 133 msgstr "" … … 166 166 msgstr "" 167 167 168 #: includes/class-landexhub-consent-admin.php:29 86168 #: includes/class-landexhub-consent-admin.php:2994 169 169 msgid "A plugin that gets the decision this way keeps running its own tags — do not block its scripts by hand as well." 170 170 msgstr "" … … 174 174 msgstr "" 175 175 176 #: includes/class-landexhub-consent-admin.php:35 75176 #: includes/class-landexhub-consent-admin.php:3587 177 177 msgid "a script a plugin enqueues" 178 178 msgstr "" 179 179 180 #: includes/class-landexhub-consent-admin.php:35 74180 #: includes/class-landexhub-consent-admin.php:3586 181 181 msgid "a script hardcoded in the template" 182 182 msgstr "" 183 183 184 #: includes/class-landexhub-consent-admin.php:256 1184 #: includes/class-landexhub-consent-admin.php:2564 185 185 msgid "a script in the template" 186 186 msgstr "" 187 187 188 #: includes/class-landexhub-consent-admin.php:35 76188 #: includes/class-landexhub-consent-admin.php:3588 189 189 msgid "a script written straight into the page" 190 190 msgstr "" … … 198 198 msgstr "" 199 199 200 #: includes/class-landexhub-consent-admin.php:256 5200 #: includes/class-landexhub-consent-admin.php:2568 201 201 msgid "a tracking pixel" 202 202 msgstr "" … … 218 218 msgstr "" 219 219 220 #: includes/class-landexhub-consent-admin.php:2331 includes/class-landexhub-consent-admin.php:39 48 includes/class-landexhub-consent-admin.php:4020220 #: includes/class-landexhub-consent-admin.php:2331 includes/class-landexhub-consent-admin.php:3965 includes/class-landexhub-consent-admin.php:4037 221 221 msgid "Actions" 222 222 msgstr "" … … 227 227 msgstr "" 228 228 229 #: includes/class-landexhub-consent-admin.php:37 70 includes/class-landexhub-consent-admin.php:4173229 #: includes/class-landexhub-consent-admin.php:3783 includes/class-landexhub-consent-admin.php:4208 230 230 msgid "Add measurement" 231 231 msgstr "" 232 232 233 #: includes/class-landexhub-consent-admin.php:42 20233 #: includes/class-landexhub-consent-admin.php:4255 234 234 msgid "Add measurement (GTM / gtag)" 235 235 msgstr "" 236 236 237 #: includes/class-landexhub-consent-admin.php:42 01237 #: includes/class-landexhub-consent-admin.php:4236 238 238 msgid "Add to the site" 239 239 msgstr "" 240 240 241 #: includes/class-landexhub-consent-admin.php:36 29241 #: includes/class-landexhub-consent-admin.php:3642 242 242 msgid "Added by a plugin or the theme?" 243 243 msgstr "" … … 247 247 msgstr "" 248 248 249 #: includes/class-landexhub-consent-admin.php:41 48249 #: includes/class-landexhub-consent-admin.php:4183 250 250 msgid "Added by you" 251 251 msgstr "" 252 252 253 #: includes/class-landexhub-consent-admin.php:35 14 includes/class-landexhub-consent-admin.php:3917253 #: includes/class-landexhub-consent-admin.php:3522 includes/class-landexhub-consent-admin.php:3932 254 254 msgid "Added by you, not found on the front page" 255 255 msgstr "" 256 256 257 257 #. translators: %s: who inserts the service. 258 #: includes/class-landexhub-consent-admin.php:40 32 includes/class-landexhub-consent-admin.php:4055258 #: includes/class-landexhub-consent-admin.php:4049 includes/class-landexhub-consent-admin.php:4072 259 259 msgid "Adds it: %s" 260 260 msgstr "" 261 261 262 #: includes/class-landexhub-consent-admin.php:130 includes/class-landexhub-consent-admin.php:145 includes/class-landexhub-consent-admin.php:43 05262 #: includes/class-landexhub-consent-admin.php:130 includes/class-landexhub-consent-admin.php:145 includes/class-landexhub-consent-admin.php:4340 263 263 msgid "Advanced" 264 264 msgstr "" … … 302 302 msgstr "" 303 303 304 #: includes/class-landexhub-consent-admin.php:261 0304 #: includes/class-landexhub-consent-admin.php:2615 305 305 msgid "Always loads" 306 306 msgstr "" … … 318 318 msgstr "" 319 319 320 #: includes/class-landexhub-consent-admin.php:255 3320 #: includes/class-landexhub-consent-admin.php:2556 321 321 msgid "an embedded frame" 322 322 msgstr "" … … 326 326 msgstr "" 327 327 328 #: includes/class-landexhub-consent-admin.php:35 77328 #: includes/class-landexhub-consent-admin.php:3589 329 329 msgid "an embedded video · iframe" 330 330 msgstr "" 331 331 332 #: includes/class-landexhub-consent-admin.php:25 59332 #: includes/class-landexhub-consent-admin.php:2562 333 333 msgid "an enqueued script" 334 334 msgstr "" 335 335 336 #: includes/class-landexhub-consent-admin.php:36 06 includes/class-landexhub-consent-admin.php:3699includes/class-landexhub-consent-services.php:52336 #: includes/class-landexhub-consent-admin.php:3619 includes/class-landexhub-consent-admin.php:3712 includes/class-landexhub-consent-services.php:52 337 337 msgid "Analytics" 338 338 msgstr "" … … 354 354 msgstr "" 355 355 356 #: includes/class-landexhub-consent-admin.php:304 1356 #: includes/class-landexhub-consent-admin.php:3049 357 357 msgid "Ask all visitors for consent again?" 358 358 msgstr "" 359 359 360 #: includes/class-landexhub-consent-admin.php:304 0360 #: includes/class-landexhub-consent-admin.php:3048 361 361 msgid "Ask every visitor again (current choices stop being used)." 362 362 msgstr "" 363 363 364 #: includes/class-landexhub-consent-admin.php:40 63364 #: includes/class-landexhub-consent-admin.php:4080 365 365 msgid "Assign" 366 366 msgstr "" … … 374 374 msgstr "" 375 375 376 #: includes/class-landexhub-consent-admin.php:3 891 includes/class-landexhub-consent-admin.php:3903376 #: includes/class-landexhub-consent-admin.php:3907 includes/class-landexhub-consent-admin.php:3918 377 377 msgid "Back to Services" 378 378 msgstr "" … … 402 402 msgstr "" 403 403 404 #: includes/class-landexhub-consent-admin.php:27 36404 #: includes/class-landexhub-consent-admin.php:2742 405 405 msgid "Basic mode does not cover everything on this site." 406 406 msgstr "" … … 414 414 msgstr "" 415 415 416 #: includes/class-landexhub-consent-admin.php:36 26416 #: includes/class-landexhub-consent-admin.php:3639 417 417 msgid "Both parts are required: without type=\"text/plain\" the browser runs the script anyway, and an external script must have src renamed to data-src, or the file is downloaded right away." 418 418 msgstr "" … … 426 426 msgstr "" 427 427 428 #: includes/class-landexhub-consent-admin.php:36 14 includes/class-landexhub-consent-admin.php:3656428 #: includes/class-landexhub-consent-admin.php:3627 includes/class-landexhub-consent-admin.php:3669 429 429 msgid "By hand in the template" 430 430 msgstr "" 431 431 432 432 #. translators: %s: registry schema version. 433 #: includes/class-landexhub-consent-admin.php:35 46 includes/class-landexhub-consent-admin.php:3980433 #: includes/class-landexhub-consent-admin.php:3556 includes/class-landexhub-consent-admin.php:3997 434 434 msgid "Catalog data: LandexHub Consent Service Registry %s." 435 435 msgstr "" … … 455 455 msgstr "" 456 456 457 #: includes/class-landexhub-consent-admin.php:2042 includes/class-landexhub-consent-admin.php:2329 includes/class-landexhub-consent-admin.php:34 76 includes/class-landexhub-consent-admin.php:4017457 #: includes/class-landexhub-consent-admin.php:2042 includes/class-landexhub-consent-admin.php:2329 includes/class-landexhub-consent-admin.php:3484 includes/class-landexhub-consent-admin.php:4034 458 458 msgid "Category" 459 459 msgstr "" … … 468 468 msgstr "" 469 469 470 #: includes/class-landexhub-consent-admin.php:4 098470 #: includes/class-landexhub-consent-admin.php:4129 471 471 msgid "Category turned off" 472 472 msgstr "" … … 476 476 msgstr "" 477 477 478 #: includes/class-landexhub-consent-admin.php:29 03478 #: includes/class-landexhub-consent-admin.php:2911 479 479 msgid "Channel" 480 480 msgstr "" 481 481 482 #: includes/class-landexhub-consent-admin.php:42 54482 #: includes/class-landexhub-consent-admin.php:4289 483 483 msgid "Check again" 484 484 msgstr "" 485 485 486 #: includes/class-landexhub-consent-admin.php:36 67486 #: includes/class-landexhub-consent-admin.php:3680 487 487 msgid "Check that it follows consent, not just the click." 488 488 msgstr "" … … 492 492 msgstr "" 493 493 494 #: includes/class-landexhub-consent-admin.php:30 56494 #: includes/class-landexhub-consent-admin.php:3064 495 495 msgid "Choose a JSON file created by Export settings. Nothing is changed unless the whole file is valid." 496 496 msgstr "" 497 497 498 #: includes/class-landexhub-consent-admin.php:1722 includes/class-landexhub-consent-admin.php:2133 includes/class-landexhub-consent-admin.php:35 65 includes/class-landexhub-consent-admin.php:3715 includes/class-landexhub-consent-admin.php:4174 includes/class-landexhub-consent-admin.php:4200498 #: includes/class-landexhub-consent-admin.php:1722 includes/class-landexhub-consent-admin.php:2133 includes/class-landexhub-consent-admin.php:3577 includes/class-landexhub-consent-admin.php:3728 includes/class-landexhub-consent-admin.php:4209 includes/class-landexhub-consent-admin.php:4235 499 499 msgid "Close" 500 500 msgstr "" … … 512 512 msgstr "" 513 513 514 #: includes/class-landexhub-consent-admin.php:36 04 includes/class-landexhub-consent-admin.php:3697includes/class-landexhub-consent-frontend.php:303514 #: includes/class-landexhub-consent-admin.php:3617 includes/class-landexhub-consent-admin.php:3710 includes/class-landexhub-consent-frontend.php:303 515 515 msgid "Consent category" 516 516 msgstr "" … … 520 520 msgstr "" 521 521 522 #: includes/class-landexhub-consent-admin.php:261 0 includes/class-landexhub-consent-admin.php:3521 includes/class-landexhub-consent-admin.php:3921 includes/class-landexhub-consent-admin.php:4100522 #: includes/class-landexhub-consent-admin.php:2615 includes/class-landexhub-consent-admin.php:3531 includes/class-landexhub-consent-admin.php:3938 includes/class-landexhub-consent-admin.php:4131 523 523 msgid "Consent governs it" 524 524 msgstr "" 525 525 526 #: includes/class-landexhub-consent-admin.php:40 60526 #: includes/class-landexhub-consent-admin.php:4077 527 527 msgid "Consent governs it — the service is not in the catalog or in your services list." 528 528 msgstr "" … … 537 537 msgstr "" 538 538 539 #: includes/class-landexhub-consent-admin.php:141 includes/class-landexhub-consent-admin.php:27 87539 #: includes/class-landexhub-consent-admin.php:141 includes/class-landexhub-consent-admin.php:2793 540 540 msgid "Consent integrations" 541 541 msgstr "" 542 542 543 #: includes/class-landexhub-consent-admin.php:142 includes/class-landexhub-consent-admin.php:549 includes/class-landexhub-consent-admin.php:301 0includes/class-landexhub-consent-privacy.php:85543 #: includes/class-landexhub-consent-admin.php:142 includes/class-landexhub-consent-admin.php:549 includes/class-landexhub-consent-admin.php:3018 includes/class-landexhub-consent-privacy.php:85 544 544 msgid "Consent log" 545 545 msgstr "" 546 546 547 #: includes/class-landexhub-consent-admin.php:4 273547 #: includes/class-landexhub-consent-admin.php:4308 548 548 msgid "Consent Mode" 549 549 msgstr "" … … 569 569 msgstr "" 570 570 571 #: includes/class-landexhub-consent-admin.php:41 11 includes/class-landexhub-consent-admin.php:4128571 #: includes/class-landexhub-consent-admin.php:4142 includes/class-landexhub-consent-admin.php:4163 572 572 msgid "Consent Mode v2 governs the consent." 573 573 msgstr "" 574 574 575 #: includes/class-landexhub-consent-admin.php:4 279575 #: includes/class-landexhub-consent-admin.php:4314 576 576 msgid "Consent setup" 577 577 msgstr "" … … 581 581 msgstr "" 582 582 583 #: includes/class-landexhub-consent-admin.php:30 34583 #: includes/class-landexhub-consent-admin.php:3042 584 584 msgid "Consents & settings" 585 585 msgstr "" 586 586 587 #: includes/class-landexhub-consent-admin.php:4 288587 #: includes/class-landexhub-consent-admin.php:4323 588 588 msgid "Consents in the last 30 days" 589 589 msgstr "" … … 605 605 msgstr "" 606 606 607 #: includes/class-landexhub-consent-admin.php:36 20607 #: includes/class-landexhub-consent-admin.php:3633 608 608 msgid "Copy" 609 609 msgstr "" 610 610 611 #: includes/class-landexhub-consent-admin.php:30 65611 #: includes/class-landexhub-consent-admin.php:3073 612 612 msgid "Copy this when contacting support." 613 613 msgstr "" … … 665 665 msgstr "" 666 666 667 #: includes/class-landexhub-consent-admin.php:36 10667 #: includes/class-landexhub-consent-admin.php:3623 668 668 msgid "Decides when the source may run. The snippet below follows it." 669 669 msgstr "" … … 702 702 msgstr "" 703 703 704 #: includes/class-landexhub-consent-admin.php:40 46704 #: includes/class-landexhub-consent-admin.php:4063 705 705 msgid "Detail" 706 706 msgstr "" … … 710 710 msgstr "" 711 711 712 #: includes/class-landexhub-consent-admin.php:30 64712 #: includes/class-landexhub-consent-admin.php:3072 713 713 msgid "Diagnostic report" 714 714 msgstr "" 715 715 716 #: includes/class-landexhub-consent-admin.php:129 includes/class-landexhub-consent-admin.php:42 36716 #: includes/class-landexhub-consent-admin.php:129 includes/class-landexhub-consent-admin.php:4271 717 717 msgid "Diagnostics" 718 718 msgstr "" … … 722 722 msgstr "" 723 723 724 #: includes/class-landexhub-consent-admin.php:4 189724 #: includes/class-landexhub-consent-admin.php:4224 725 725 msgid "Direct measurement ID (gtag.js)" 726 726 msgstr "" … … 738 738 msgstr "" 739 739 740 #: includes/class-landexhub-consent-admin.php:30 49740 #: includes/class-landexhub-consent-admin.php:3057 741 741 msgid "Download the configuration as JSON." 742 742 msgstr "" … … 754 754 msgstr "" 755 755 756 #: includes/class-landexhub-consent-admin.php:25 87756 #: includes/class-landexhub-consent-admin.php:2590 757 757 msgid "embedded frames cannot be held back by the consent bar" 758 758 msgstr "" 759 759 760 #: includes/class-landexhub-consent-admin.php:4 269760 #: includes/class-landexhub-consent-admin.php:4304 761 761 msgid "every check below was actually performed; hover a row for its evidence." 762 762 msgstr "" … … 778 778 msgstr "" 779 779 780 #: includes/class-landexhub-consent-admin.php:347 1780 #: includes/class-landexhub-consent-admin.php:3479 781 781 msgid "Everything LandexHub Consent knows about the services this site uses — catalog knowledge, what the check found here, and your own services list. Catalog updates never overwrite your list." 782 782 msgstr "" 783 783 784 #: includes/class-landexhub-consent-admin.php:4 268784 #: includes/class-landexhub-consent-admin.php:4303 785 785 msgid "Everything looks good" 786 786 msgstr "" 787 787 788 #: includes/class-landexhub-consent-admin.php:39 47788 #: includes/class-landexhub-consent-admin.php:3964 789 789 msgid "Evidence" 790 790 msgstr "" … … 802 802 msgstr "" 803 803 804 #: includes/class-landexhub-consent-admin.php:30 48 includes/class-landexhub-consent-admin.php:3050804 #: includes/class-landexhub-consent-admin.php:3056 includes/class-landexhub-consent-admin.php:3058 805 805 msgid "Export settings" 806 806 msgstr "" … … 826 826 msgstr "" 827 827 828 #: includes/class-landexhub-consent-admin.php:36 15828 #: includes/class-landexhub-consent-admin.php:3628 829 829 msgid "Find the tag in the template and rewrite it like this. LandexHub Consent runs it once the visitor consents to the category." 830 830 msgstr "" … … 863 863 msgstr "" 864 864 865 #: includes/class-landexhub-consent-admin.php:34 77865 #: includes/class-landexhub-consent-admin.php:3485 866 866 msgid "Found here" 867 867 msgstr "" … … 879 879 msgstr "" 880 880 881 #: includes/class-landexhub-consent-admin.php:39 12881 #: includes/class-landexhub-consent-admin.php:3927 882 882 msgid "Found on this site" 883 883 msgstr "" 884 884 885 #: includes/class-landexhub-consent-admin.php:4 190885 #: includes/class-landexhub-consent-admin.php:4225 886 886 msgid "GA4 or Google Ads without a container (G-XXXX / AW-XXXX). The Basic/Advanced switch applies to it." 887 887 msgstr "" … … 891 891 msgstr "" 892 892 893 #: includes/class-landexhub-consent-admin.php:40 61893 #: includes/class-landexhub-consent-admin.php:4078 894 894 msgid "Gate it by hand and save it to your services list with a category." 895 895 msgstr "" 896 896 897 #: includes/class-landexhub-consent-admin.php:35 68897 #: includes/class-landexhub-consent-admin.php:3580 898 898 msgid "Gate source" 899 899 msgstr "" 900 900 901 #: includes/class-landexhub-consent-admin.php:253 3901 #: includes/class-landexhub-consent-admin.php:2536 902 902 msgid "gated by hand" 903 903 msgstr "" … … 920 920 msgstr "" 921 921 922 #: includes/class-landexhub-consent-admin.php:4 182922 #: includes/class-landexhub-consent-admin.php:4217 923 923 msgid "Google Tag Manager" 924 924 msgstr "" 925 925 926 #: includes/class-landexhub-consent-admin.php:34 78926 #: includes/class-landexhub-consent-admin.php:3486 927 927 msgid "Governance" 928 928 msgstr "" … … 940 940 msgstr "" 941 941 942 #: includes/class-landexhub-consent-admin.php:41 31942 #: includes/class-landexhub-consent-admin.php:4166 943 943 msgid "Held back until the visitor consents." 944 944 msgstr "" 945 945 946 #: includes/class-landexhub-consent-admin.php:41 23946 #: includes/class-landexhub-consent-admin.php:4158 947 947 msgid "Held back, but it waits for a category the consent bar does not offer, so it never runs. Turn the category on or remove the source." 948 948 msgstr "" 949 949 950 #: includes/class-landexhub-consent-admin.php:25 88950 #: includes/class-landexhub-consent-admin.php:2591 951 951 msgid "held back, but its category is turned off, so it never runs" 952 952 msgstr "" … … 960 960 msgstr "" 961 961 962 #: includes/class-landexhub-consent-admin.php:29 39962 #: includes/class-landexhub-consent-admin.php:2947 963 963 msgid "How" 964 964 msgstr "" … … 976 976 msgstr "" 977 977 978 #: includes/class-landexhub-consent-admin.php:36 30978 #: includes/class-landexhub-consent-admin.php:3643 979 979 msgid "If it comes through enqueue, leave the tag alone — add this to functions.php." 980 980 msgstr "" 981 981 982 #: includes/class-landexhub-consent-admin.php:42 17982 #: includes/class-landexhub-consent-admin.php:4252 983 983 msgid "If you want measurement, add it through LandexHub Consent — consent is handled from the first moment." 984 984 msgstr "" … … 988 988 msgstr "" 989 989 990 #: includes/class-landexhub-consent-admin.php:30 55 includes/class-landexhub-consent-admin.php:3058990 #: includes/class-landexhub-consent-admin.php:3063 includes/class-landexhub-consent-admin.php:3066 991 991 msgid "Import settings" 992 992 msgstr "" … … 1000 1000 msgstr "" 1001 1001 1002 #: includes/class-landexhub-consent-admin.php:350 0 includes/class-landexhub-consent-admin.php:40371002 #: includes/class-landexhub-consent-admin.php:3508 includes/class-landexhub-consent-admin.php:4054 1003 1003 msgid "In your list" 1004 1004 msgstr "" … … 1012 1012 msgstr "" 1013 1013 1014 #: includes/class-landexhub-consent-admin.php:29 331014 #: includes/class-landexhub-consent-admin.php:2941 1015 1015 msgid "Install it" 1016 1016 msgstr "" 1017 1017 1018 #: includes/class-landexhub-consent-admin.php:26 861018 #: includes/class-landexhub-consent-admin.php:2692 1019 1019 msgid "Install WP Consent API" 1020 1020 msgstr "" 1021 1021 1022 #: includes/class-landexhub-consent-admin.php:1595 includes/class-landexhub-consent-admin.php:31 23 includes/class-landexhub-consent-admin.php:3278 includes/class-landexhub-consent-admin.php:4328includes/class-landexhub-consent-integrations.php:478 includes/class-landexhub-consent-log-admin.php:219 includes/class-landexhub-consent-log-admin.php:416 includes/class-landexhub-consent-log-admin.php:441 includes/class-landexhub-consent-services.php:531 includes/class-landexhub-consent-services.php:582 includes/class-landexhub-consent-texts.php:2131022 #: includes/class-landexhub-consent-admin.php:1595 includes/class-landexhub-consent-admin.php:3131 includes/class-landexhub-consent-admin.php:3286 includes/class-landexhub-consent-admin.php:4363 includes/class-landexhub-consent-integrations.php:478 includes/class-landexhub-consent-log-admin.php:219 includes/class-landexhub-consent-log-admin.php:416 includes/class-landexhub-consent-log-admin.php:441 includes/class-landexhub-consent-services.php:531 includes/class-landexhub-consent-services.php:582 includes/class-landexhub-consent-texts.php:213 1023 1023 msgid "Insufficient permissions." 1024 1024 msgstr "" … … 1028 1028 msgstr "" 1029 1029 1030 #: includes/class-landexhub-consent-admin.php:42 371030 #: includes/class-landexhub-consent-admin.php:4272 1031 1031 msgid "Is LandexHub Consent and the measurement on this site set up correctly?" 1032 1032 msgstr "" 1033 1033 1034 #: includes/class-landexhub-consent-admin.php:268 01034 #: includes/class-landexhub-consent-admin.php:2686 1035 1035 msgid "It grants nothing before consent, so it agrees with the LandexHub Consent default and nothing needs to change." 1036 1036 msgstr "" 1037 1037 1038 #: includes/class-landexhub-consent-admin.php:29 221038 #: includes/class-landexhub-consent-admin.php:2930 1039 1039 msgid "It is part of LandexHub Consent itself." 1040 1040 msgstr "" 1041 1041 1042 #: includes/class-landexhub-consent-admin.php:265 31042 #: includes/class-landexhub-consent-admin.php:2659 1043 1043 msgid "It sends its own Consent Mode default after ours and sets these signals to granted:" 1044 1044 msgstr "" … … 1056 1056 msgstr "" 1057 1057 1058 #: includes/class-landexhub-consent-admin.php:26 841058 #: includes/class-landexhub-consent-admin.php:2690 1059 1059 msgid "Its own Consent Mode reads the visitor's decision from the WP Consent API, which is not installed. Its Google tag still follows the Consent Mode signals LandexHub Consent sends." 1060 1060 msgstr "" … … 1068 1068 msgstr "" 1069 1069 1070 #: includes/class-landexhub-consent-admin.php:34 79 includes/class-landexhub-consent-admin.php:39641070 #: includes/class-landexhub-consent-admin.php:3487 includes/class-landexhub-consent-admin.php:3981 1071 1071 msgid "Known data" 1072 1072 msgstr "" 1073 1073 1074 #: includes/class-landexhub-consent-admin.php:3 7881074 #: includes/class-landexhub-consent-admin.php:3801 1075 1075 msgid "LandexHub also makes a separate, optional add-on for this plugin. Everything on these screens works without it." 1076 1076 msgstr "" … … 1080 1080 msgstr "" 1081 1081 1082 #: includes/class-landexhub-consent-admin.php:39 14 includes/class-landexhub-consent-admin.php:41451082 #: includes/class-landexhub-consent-admin.php:3929 includes/class-landexhub-consent-admin.php:4180 1083 1083 msgid "LandexHub Consent (your measurement ID)" 1084 1084 msgstr "" … … 1088 1088 msgstr "" 1089 1089 1090 #: includes/class-landexhub-consent-admin.php:27 441090 #: includes/class-landexhub-consent-admin.php:2750 1091 1091 msgid "LandexHub Consent does not block tags that other plugins add. To hold them back, gate them by hand or turn off their own Google tags." 1092 1092 msgstr "" 1093 1093 1094 #: includes/class-landexhub-consent-admin.php:26 651094 #: includes/class-landexhub-consent-admin.php:2671 1095 1095 msgid "LandexHub Consent does not overwrite it — set that default to denied in the plugin, or turn its Consent Mode off." 1096 1096 msgstr "" … … 1101 1101 msgstr "" 1102 1102 1103 #: includes/class-landexhub-consent-admin.php:29 371103 #: includes/class-landexhub-consent-admin.php:2945 1104 1104 msgid "LandexHub Consent has no way to pass consent to this plugin, so it leaves it alone. Gate its scripts by hand instead." 1105 1105 msgstr "" … … 1109 1109 msgstr "" 1110 1110 1111 #: includes/class-landexhub-consent-admin.php:4 1751111 #: includes/class-landexhub-consent-admin.php:4210 1112 1112 msgid "LandexHub Consent inserts the tag itself, right after its own Consent Mode default." 1113 1113 msgstr "" … … 1117 1117 msgstr "" 1118 1118 1119 #: includes/class-landexhub-consent-admin.php:4 2771119 #: includes/class-landexhub-consent-admin.php:4312 1120 1120 msgid "LandexHub Consent provides the technical layer — legal responsibility for compliance stays with the site owner." 1121 1121 msgstr "" … … 1147 1147 1148 1148 #. translators: %s: human-readable time difference, e.g. "4 mins". 1149 #: includes/class-landexhub-consent-admin.php:40 721149 #: includes/class-landexhub-consent-admin.php:4089 1150 1150 msgid "Last site check: %s ago." 1151 1151 msgstr "" 1152 1152 1153 #: includes/class-landexhub-consent-admin.php:3 7891153 #: includes/class-landexhub-consent-admin.php:3802 1154 1154 msgid "Learn more" 1155 1155 msgstr "" … … 1172 1172 msgstr "" 1173 1173 1174 #: includes/class-landexhub-consent-admin.php:36 651174 #: includes/class-landexhub-consent-admin.php:3678 1175 1175 msgid "Looks almost the same. Needed for every video separately." 1176 1176 msgstr "" … … 1181 1181 msgstr "" 1182 1182 1183 #: includes/class-landexhub-consent-admin.php:2589 1184 msgid "marked, but a pixel needs data-cnsx-pixel, data-consent-category and its address in data-src" 1185 msgstr "" 1186 1183 1187 #: includes/class-landexhub-consent-admin.php:2586 1184 msgid "marked, but a pixel needs data-cnsx-pixel, data-consent-category and its address in data-src"1185 msgstr ""1186 1187 #: includes/class-landexhub-consent-admin.php:25831188 1188 msgid "marked, but the address is still in src (move it to data-src)" 1189 1189 msgstr "" 1190 1190 1191 #: includes/class-landexhub-consent-admin.php:258 41191 #: includes/class-landexhub-consent-admin.php:2587 1192 1192 msgid "marked, but type=\"text/plain\" is missing" 1193 1193 msgstr "" 1194 1194 1195 #: includes/class-landexhub-consent-admin.php:258 51195 #: includes/class-landexhub-consent-admin.php:2588 1196 1196 msgid "marked, but without a valid category (analytics, marketing or preferences)" 1197 1197 msgstr "" 1198 1198 1199 #: includes/class-landexhub-consent-admin.php:36 07 includes/class-landexhub-consent-admin.php:3700includes/class-landexhub-consent-services.php:531199 #: includes/class-landexhub-consent-admin.php:3620 includes/class-landexhub-consent-admin.php:3713 includes/class-landexhub-consent-services.php:53 1200 1200 msgid "Marketing" 1201 1201 msgstr "" … … 1209 1209 msgstr "" 1210 1210 1211 #: includes/class-landexhub-consent-admin.php:36 581211 #: includes/class-landexhub-consent-admin.php:3671 1212 1212 msgid "Marking the tag does not hold back an <iframe>. With its address left in src it loads before consent; with the address moved to data-src it does not load, but LandexHub Consent revives only <script> and cannot start it after consent either." 1213 1213 msgstr "" … … 1230 1230 msgstr "" 1231 1231 1232 #: includes/class-landexhub-consent-admin.php:43 091232 #: includes/class-landexhub-consent-admin.php:4344 1233 1233 msgid "Measurement IDs (GTM / gtag) live on the Services page — that is where measurement is added and changed." 1234 1234 msgstr "" … … 1258 1258 msgstr "" 1259 1259 1260 #: includes/class-landexhub-consent- services.php:511260 #: includes/class-landexhub-consent-admin.php:2529 includes/class-landexhub-consent-admin.php:3529 includes/class-landexhub-consent-admin.php:4123 includes/class-landexhub-consent-services.php:51 1261 1261 msgid "Necessary" 1262 1262 msgstr "" … … 1266 1266 msgstr "" 1267 1267 1268 #: includes/class-landexhub-consent-admin.php:3936 1269 msgid "Necessary — it runs for every visitor, there is nothing to hold back" 1270 msgstr "" 1271 1272 #: includes/class-landexhub-consent-admin.php:4146 1273 msgid "Necessary — it runs for every visitor, there is nothing to hold back." 1274 msgstr "" 1275 1268 1276 #: includes/class-landexhub-consent-admin.php:631 1269 1277 msgid "Necessary — name" … … 1274 1282 msgstr "" 1275 1283 1276 #: includes/class-landexhub-consent-admin.php:293 11284 #: includes/class-landexhub-consent-admin.php:2939 1277 1285 msgid "Needs the free WP Consent API plugin — that is the channel it listens on." 1278 1286 msgstr "" … … 1282 1290 msgstr "" 1283 1291 1284 #: includes/class-landexhub-consent-admin.php:42 631292 #: includes/class-landexhub-consent-admin.php:4298 1285 1293 msgid "No issues found so far" 1286 1294 msgstr "" 1287 1295 1288 #: includes/class-landexhub-consent-admin.php:273 01296 #: includes/class-landexhub-consent-admin.php:2736 1289 1297 msgid "No other Google tag was found in the front page HTML or from a known plugin, so Basic mode covers the Google tags found: the gtag.js that LandexHub Consent loads does not load before consent." 1290 1298 msgstr "" … … 1314 1322 msgstr "" 1315 1323 1316 #: includes/class-landexhub-consent-admin.php:29 131324 #: includes/class-landexhub-consent-admin.php:2921 1317 1325 msgid "None known" 1318 1326 msgstr "" … … 1327 1335 msgstr "" 1328 1336 1329 #: includes/class-landexhub-consent-admin.php:2430 includes/class-landexhub-consent-admin.php:41 521337 #: includes/class-landexhub-consent-admin.php:2430 includes/class-landexhub-consent-admin.php:4187 1330 1338 msgid "Not clear yet" 1331 1339 msgstr "" 1332 1340 1333 #: includes/class-landexhub-consent-admin.php:35 23 includes/class-landexhub-consent-admin.php:40951341 #: includes/class-landexhub-consent-admin.php:3533 includes/class-landexhub-consent-admin.php:4126 1334 1342 msgid "Not governed yet" 1335 1343 msgstr "" 1336 1344 1337 #: includes/class-landexhub-consent-admin.php:39 231345 #: includes/class-landexhub-consent-admin.php:3940 1338 1346 msgid "Not governed yet — the guide below shows how to gate it." 1339 1347 msgstr "" 1340 1348 1341 #: includes/class-landexhub-consent-admin.php:297 01349 #: includes/class-landexhub-consent-admin.php:2978 1342 1350 msgid "Not tested by LandexHub; check it on your site." 1343 1351 msgstr "" 1344 1352 1345 #: includes/class-landexhub-consent-admin.php:40 191353 #: includes/class-landexhub-consent-admin.php:4036 1346 1354 msgid "Note" 1347 1355 msgstr "" … … 1351 1359 msgstr "" 1352 1360 1353 #: includes/class-landexhub-consent-admin.php:25 681361 #: includes/class-landexhub-consent-admin.php:2571 1354 1362 msgid "nothing governs it" 1355 1363 msgstr "" 1356 1364 1357 #: includes/class-landexhub-consent-admin.php:41 191365 #: includes/class-landexhub-consent-admin.php:4154 1358 1366 msgid "Nothing holds it back yet — the detail shows how to gate it." 1359 1367 msgstr "" … … 1367 1375 msgstr "" 1368 1376 1369 #: includes/class-landexhub-consent-admin.php:4 1961377 #: includes/class-landexhub-consent-admin.php:4231 1370 1378 msgid "Nothing to set up here: their Google tags follow the Consent Mode signals LandexHub Consent sends. Consent integrations shows what was found on this site." 1371 1379 msgstr "" 1372 1380 1373 #: includes/class-landexhub-consent-admin.php:292 11381 #: includes/class-landexhub-consent-admin.php:2929 1374 1382 msgid "Nothing to switch." 1375 1383 msgstr "" 1376 1384 1377 1385 #. translators: %s: comma-separated list of problems. 1378 #: includes/class-landexhub-consent-admin.php:316 1 includes/class-landexhub-consent-admin.php:32301386 #: includes/class-landexhub-consent-admin.php:3169 includes/class-landexhub-consent-admin.php:3238 1379 1387 msgid "Nothing was imported. Problems found: %s" 1380 1388 msgstr "" 1381 1389 1382 #: includes/class-landexhub-consent-admin.php:277 11390 #: includes/class-landexhub-consent-admin.php:2777 1383 1391 msgid "Nothing was saved — the service data was not valid (name, category or URL patterns)." 1384 1392 msgstr "" … … 1388 1396 msgstr "" 1389 1397 1390 #: includes/class-landexhub-consent-admin.php:29 621398 #: includes/class-landexhub-consent-admin.php:2970 1391 1399 msgid "Off — the plugin decides on its own." 1392 1400 msgstr "" … … 1420 1428 msgstr "" 1421 1429 1422 #: includes/class-landexhub-consent-admin.php:29 621430 #: includes/class-landexhub-consent-admin.php:2970 1423 1431 msgid "On — the plugin follows the visitor." 1424 1432 msgstr "" 1425 1433 1426 #: includes/class-landexhub-consent-admin.php:28 451434 #: includes/class-landexhub-consent-admin.php:2853 1427 1435 msgid "One or the other, never both — two containers measure everything twice. Neither is mandatory." 1428 1436 msgstr "" 1429 1437 1430 1438 #. translators: 1: gated occurrences, 2: all occurrences. 1431 #: includes/class-landexhub-consent-admin.php:254 01439 #: includes/class-landexhub-consent-admin.php:2543 1432 1440 msgid "only %1$d of %2$d occurrences are gated" 1433 1441 msgstr "" 1434 1442 1435 #: includes/class-landexhub-consent-admin.php:2 8951443 #: includes/class-landexhub-consent-admin.php:2903 1436 1444 msgid "Only plugins actually running here. Their tags stay theirs — LandexHub Consent just passes on what the visitor chose." 1437 1445 msgstr "" 1438 1446 1439 #: includes/class-landexhub-consent-admin.php:41 151447 #: includes/class-landexhub-consent-admin.php:4150 1440 1448 msgid "Only some of its copies are held back; another one still loads before consent." 1441 1449 msgstr "" … … 1445 1453 msgstr "" 1446 1454 1447 #: includes/class-landexhub-consent-admin.php:26 38 includes/class-landexhub-consent-admin.php:29561455 #: includes/class-landexhub-consent-admin.php:2644 includes/class-landexhub-consent-admin.php:2964 1448 1456 msgid "Open settings" 1449 1457 msgstr "" … … 1453 1461 msgstr "" 1454 1462 1455 #: includes/class-landexhub-consent-admin.php:4 2901463 #: includes/class-landexhub-consent-admin.php:4325 1456 1464 msgid "Open the consent log records" 1457 1465 msgstr "" 1458 1466 1459 #: includes/class-landexhub-consent-admin.php:33 791467 #: includes/class-landexhub-consent-admin.php:3387 1460 1468 msgid "Open the Google settings" 1461 1469 msgstr "" … … 1481 1489 msgstr "" 1482 1490 1483 #: includes/class-landexhub-consent-admin.php:4 0951491 #: includes/class-landexhub-consent-admin.php:4126 1484 1492 msgid "Partly governed" 1485 1493 msgstr "" 1486 1494 1487 #: includes/class-landexhub-consent-admin.php:29 041495 #: includes/class-landexhub-consent-admin.php:2912 1488 1496 msgid "Pass consent" 1489 1497 msgstr "" … … 1494 1502 1495 1503 #. translators: %s: plugin name. 1496 #: includes/class-landexhub-consent-admin.php:29 481504 #: includes/class-landexhub-consent-admin.php:2956 1497 1505 msgid "Pass the visitor's decision to %s" 1498 1506 msgstr "" … … 1514 1522 msgstr "" 1515 1523 1516 #: includes/class-landexhub-consent-admin.php:29 021524 #: includes/class-landexhub-consent-admin.php:2910 1517 1525 msgid "Plugin" 1518 1526 msgstr "" 1519 1527 1520 #: includes/class-landexhub-consent-admin.php:36 08 includes/class-landexhub-consent-admin.php:37011528 #: includes/class-landexhub-consent-admin.php:3621 includes/class-landexhub-consent-admin.php:3714 1521 1529 msgid "Preferences" 1522 1530 msgstr "" … … 1526 1534 msgstr "" 1527 1535 1528 #: includes/class-landexhub-consent-admin.php:35 34 includes/class-landexhub-consent-admin.php:3976includes/class-landexhub-consent-frontend.php:284 includes/class-landexhub-consent-frontend.php:3051536 #: includes/class-landexhub-consent-admin.php:3544 includes/class-landexhub-consent-admin.php:3993 includes/class-landexhub-consent-frontend.php:284 includes/class-landexhub-consent-frontend.php:305 1529 1537 msgid "Privacy policy" 1530 1538 msgstr "" … … 1550 1558 msgstr "" 1551 1559 1552 #: includes/class-landexhub-consent-admin.php:38 641560 #: includes/class-landexhub-consent-admin.php:3877 1553 1561 msgid "Re-check the site" 1554 1562 msgstr "" … … 1558 1566 msgstr "" 1559 1567 1560 #: includes/class-landexhub-consent-admin.php:301 11568 #: includes/class-landexhub-consent-admin.php:3019 1561 1569 msgid "Record of granted, rejected and changed consents." 1562 1570 msgstr "" … … 1578 1586 msgstr "" 1579 1587 1580 #: includes/class-landexhub-consent-admin.php:37 121588 #: includes/class-landexhub-consent-admin.php:3725 1581 1589 msgid "Remove from the list" 1582 1590 msgstr "" … … 1586 1594 msgstr "" 1587 1595 1588 #: includes/class-landexhub-consent-admin.php:27 671596 #: includes/class-landexhub-consent-admin.php:2773 1589 1597 msgid "Removed from the services list." 1590 1598 msgstr "" 1591 1599 1592 #: includes/class-landexhub-consent-admin.php:36 641600 #: includes/class-landexhub-consent-admin.php:3677 1593 1601 msgid "Replace it with a linked preview image" 1594 1602 msgstr "" 1595 1603 1596 #: includes/class-landexhub-consent-admin.php:36 621604 #: includes/class-landexhub-consent-admin.php:3675 1597 1605 msgid "Replace the video with a link" 1598 1606 msgstr "" 1599 1607 1600 #: includes/class-landexhub-consent-admin.php:30 39 includes/class-landexhub-consent-admin.php:30421608 #: includes/class-landexhub-consent-admin.php:3047 includes/class-landexhub-consent-admin.php:3050 1601 1609 msgid "Reset consents" 1602 1610 msgstr "" … … 1607 1615 1608 1616 #. translators: %d: consent revision number. 1609 #: includes/class-landexhub-consent-admin.php:30 441617 #: includes/class-landexhub-consent-admin.php:3052 1610 1618 msgid "Revision %d" 1611 1619 msgstr "" … … 1619 1627 msgstr "" 1620 1628 1621 #: includes/class-landexhub-consent-admin.php:2851 includes/class-landexhub-consent-admin.php:2996 1629 #: includes/class-landexhub-consent-admin.php:2529 1630 msgid "runs for every visitor, there is nothing to hold back" 1631 msgstr "" 1632 1633 #: includes/class-landexhub-consent-admin.php:2859 includes/class-landexhub-consent-admin.php:3004 1622 1634 msgid "Save" 1623 1635 msgstr "" … … 1640 1652 msgstr "" 1641 1653 1642 #: includes/class-landexhub-consent-admin.php:3 6881654 #: includes/class-landexhub-consent-admin.php:3701 1643 1655 msgid "Save the source to your services list so it appears on your cookie policy page under the chosen category. The list documents the source; gating is done by the steps above." 1644 1656 msgstr "" 1645 1657 1646 #: includes/class-landexhub-consent-admin.php:37 161658 #: includes/class-landexhub-consent-admin.php:3729 1647 1659 msgid "Save to the services list" 1648 1660 msgstr "" 1649 1661 1650 #: includes/class-landexhub-consent-admin.php:276 31662 #: includes/class-landexhub-consent-admin.php:2769 1651 1663 msgid "Saved to the services list." 1652 1664 msgstr "" … … 1660 1672 msgstr "" 1661 1673 1662 #: includes/class-landexhub-consent-admin.php:34 75 includes/class-landexhub-consent-admin.php:4016includes/class-landexhub-consent-frontend.php:3011674 #: includes/class-landexhub-consent-admin.php:3483 includes/class-landexhub-consent-admin.php:4033 includes/class-landexhub-consent-frontend.php:301 1663 1675 msgid "Service" 1664 1676 msgstr "" 1665 1677 1666 #: includes/class-landexhub-consent-admin.php:34 691678 #: includes/class-landexhub-consent-admin.php:3477 1667 1679 msgid "Service inventory" 1668 1680 msgstr "" 1669 1681 1670 #: includes/class-landexhub-consent-admin.php:128 includes/class-landexhub-consent-admin.php:2045 includes/class-landexhub-consent-admin.php:37 55 includes/class-landexhub-consent-admin.php:38871682 #: includes/class-landexhub-consent-admin.php:128 includes/class-landexhub-consent-admin.php:2045 includes/class-landexhub-consent-admin.php:3768 includes/class-landexhub-consent-admin.php:3903 1671 1683 msgid "Services" 1672 1684 msgstr "" 1673 1685 1674 #: includes/class-landexhub-consent-admin.php:36 861686 #: includes/class-landexhub-consent-admin.php:3699 1675 1687 msgid "Services list" 1676 1688 msgstr "" … … 1688 1700 msgstr "" 1689 1701 1690 #: includes/class-landexhub-consent-admin.php:329 01702 #: includes/class-landexhub-consent-admin.php:3298 1691 1703 msgid "Settings imported." 1692 1704 msgstr "" … … 1728 1740 1729 1741 #. translators: %s: comma-separated list of setting keys. 1730 #: includes/class-landexhub-consent-admin.php:33 451742 #: includes/class-landexhub-consent-admin.php:3353 1731 1743 msgid "Some values were not valid and were not saved: %s. The previous values were kept." 1732 1744 msgstr "" 1733 1745 1734 #: includes/class-landexhub-consent-admin.php:42 231746 #: includes/class-landexhub-consent-admin.php:4258 1735 1747 msgid "Something missing? The check reads the front page; a source that loads only on a subpage does not show up here." 1736 1748 msgstr "" 1737 1749 1738 #: includes/class-landexhub-consent-admin.php:2327 includes/class-landexhub-consent-admin.php:39 451750 #: includes/class-landexhub-consent-admin.php:2327 includes/class-landexhub-consent-admin.php:3962 1739 1751 msgid "Source" 1740 1752 msgstr "" … … 1748 1760 msgstr "" 1749 1761 1750 #: includes/class-landexhub-consent-admin.php:39 431762 #: includes/class-landexhub-consent-admin.php:3960 1751 1763 msgid "Sources on this site" 1752 1764 msgstr "" 1753 1765 1754 #: includes/class-landexhub-consent-admin.php:39 05 includes/class-landexhub-consent-admin.php:40181766 #: includes/class-landexhub-consent-admin.php:3920 includes/class-landexhub-consent-admin.php:4035 1755 1767 msgid "Status" 1756 1768 msgstr "" … … 1773 1785 msgstr "" 1774 1786 1775 #: includes/class-landexhub-consent-admin.php:43 061787 #: includes/class-landexhub-consent-admin.php:4341 1776 1788 msgid "Technical settings most sites never need to change. The defaults work without visiting this page." 1777 1789 msgstr "" … … 1814 1826 msgstr "" 1815 1827 1816 #: includes/class-landexhub-consent-admin.php:4 1831828 #: includes/class-landexhub-consent-admin.php:4218 1817 1829 msgid "The container manages all Google tags. LandexHub Consent inserts it and hands it the consent first." 1818 1830 msgstr "" … … 1826 1838 msgstr "" 1827 1839 1828 #: includes/class-landexhub-consent-admin.php:32 461840 #: includes/class-landexhub-consent-admin.php:3254 1829 1841 msgid "the file is not a JSON export of this plugin" 1830 1842 msgstr "" 1831 1843 1832 #: includes/class-landexhub-consent-admin.php:32 491844 #: includes/class-landexhub-consent-admin.php:3257 1833 1845 msgid "the file is not a settings export of LandexHub Consent" 1834 1846 msgstr "" … … 1842 1854 msgstr "" 1843 1855 1844 #: includes/class-landexhub-consent-admin.php:2261 includes/class-landexhub-consent-admin.php:40 07 includes/class-landexhub-consent-admin.php:40781856 #: includes/class-landexhub-consent-admin.php:2261 includes/class-landexhub-consent-admin.php:4024 includes/class-landexhub-consent-admin.php:4095 1845 1857 msgid "The front page could not be loaded, so it could not be checked. Try again in a moment." 1846 1858 msgstr "" … … 1860 1872 1861 1873 #. translators: %s: what went wrong. 1862 #: includes/class-landexhub-consent-admin.php:32 281874 #: includes/class-landexhub-consent-admin.php:3236 1863 1875 msgid "The import was only partly applied: %s. Check the settings and the services list." 1864 1876 msgstr "" 1865 1877 1866 #: includes/class-landexhub-consent-admin.php:36 191878 #: includes/class-landexhub-consent-admin.php:3632 1867 1879 msgid "the original script body stays unchanged" 1868 1880 msgstr "" … … 1897 1909 msgstr "" 1898 1910 1899 #: includes/class-landexhub-consent-admin.php:31 781911 #: includes/class-landexhub-consent-admin.php:3186 1900 1912 msgid "the services could not be stored" 1901 1913 msgstr "" … … 1909 1921 msgstr "" 1910 1922 1911 #: includes/class-landexhub-consent-admin.php:31 891923 #: includes/class-landexhub-consent-admin.php:3197 1912 1924 msgid "the settings could not be stored" 1913 1925 msgstr "" 1914 1926 1915 #: includes/class-landexhub-consent-admin.php:31 871927 #: includes/class-landexhub-consent-admin.php:3195 1916 1928 msgid "the settings could not be stored and the previous services list could not be restored, so the imported services are in use with the previous settings" 1917 1929 msgstr "" … … 1922 1934 msgstr "" 1923 1935 1924 #: includes/class-landexhub-consent-admin.php:42 161936 #: includes/class-landexhub-consent-admin.php:4251 1925 1937 msgid "The site check found no measurement. The consent bar works without it — you do not have to add anything." 1926 1938 msgstr "" 1927 1939 1928 #: includes/class-landexhub-consent-admin.php:42 601940 #: includes/class-landexhub-consent-admin.php:4295 1929 1941 msgid "the specific steps are with each issue below." 1930 1942 msgstr "" 1931 1943 1932 1944 #. translators: %s: Universal Analytics ID, e.g. UA-12345-1. 1933 #: includes/class-landexhub-consent-admin.php:33 751945 #: includes/class-landexhub-consent-admin.php:3383 1934 1946 msgid "The stored measurement ID %s is a Universal Analytics ID. Google no longer processes Universal Analytics data, so LandexHub Consent does not load it. Enter a Google Analytics 4 ID (G-…) instead, or choose “Nothing” to remove it." 1935 1947 msgstr "" 1936 1948 1937 #: includes/class-landexhub-consent-admin.php:27 381949 #: includes/class-landexhub-consent-admin.php:2744 1938 1950 msgid "The switch only controls the gtag.js that LandexHub Consent loads. These load regardless of it:" 1939 1951 msgstr "" … … 1947 1959 msgstr "" 1948 1960 1949 #: includes/class-landexhub-consent-admin.php:31 431961 #: includes/class-landexhub-consent-admin.php:3151 1950 1962 msgid "the uploaded file could not be read" 1951 1963 msgstr "" 1952 1964 1953 #: includes/class-landexhub-consent-admin.php:36 631965 #: includes/class-landexhub-consent-admin.php:3676 1954 1966 msgid "The visitor leaves for the service; nothing loads on your site." 1955 1967 msgstr "" … … 1963 1975 msgstr "" 1964 1976 1965 #: includes/class-landexhub-consent-admin.php:3 8901977 #: includes/class-landexhub-consent-admin.php:3906 1966 1978 msgid "This service is not on the list any more." 1967 1979 msgstr "" 1968 1980 1969 #: includes/class-landexhub-consent-admin.php:42 151981 #: includes/class-landexhub-consent-admin.php:4250 1970 1982 msgid "This site does not measure anything yet" 1971 1983 msgstr "" … … 1975 1987 msgstr "" 1976 1988 1977 #: includes/class-landexhub-consent-admin.php:3 6921989 #: includes/class-landexhub-consent-admin.php:3705 1978 1990 msgid "This source is already in your services list — saving updates the entry." 1979 1991 msgstr "" … … 1987 1999 msgstr "" 1988 2000 1989 #: includes/class-landexhub-consent-admin.php:30 292001 #: includes/class-landexhub-consent-admin.php:3037 1990 2002 msgid "Tools" 1991 2003 msgstr "" … … 2016 2028 msgstr "" 2017 2029 2018 #: includes/class-landexhub-consent-admin.php:40 57 includes/class-landexhub-consent-admin.php:40922030 #: includes/class-landexhub-consent-admin.php:4074 includes/class-landexhub-consent-admin.php:4120 2019 2031 msgid "Unassigned" 2020 2032 msgstr "" 2021 2033 2022 #: includes/class-landexhub-consent-admin.php:40 532034 #: includes/class-landexhub-consent-admin.php:4070 2023 2035 msgid "Unassigned — not in the catalog or in your services list" 2024 2036 msgstr "" … … 2032 2044 msgstr "" 2033 2045 2034 #: includes/class-landexhub-consent-admin.php:299 12046 #: includes/class-landexhub-consent-admin.php:2999 2035 2047 msgid "Until WP Consent API is installed nothing changes — those plugins keep behaving exactly as they do now." 2036 2048 msgstr "" … … 2041 2053 msgstr "" 2042 2054 2043 #: includes/class-landexhub-consent-admin.php:36 662055 #: includes/class-landexhub-consent-admin.php:3679 2044 2056 msgid "Use a click-to-load plugin" 2045 2057 msgstr "" 2046 2058 2047 2059 #. translators: %s: the container or measurement ID that stays active. 2048 #: includes/class-landexhub-consent-admin.php:344 02060 #: includes/class-landexhub-consent-admin.php:3448 2049 2061 msgid "Use either a GTM container or a gtag.js ID, not both — two containers would measure everything twice. Keeping %s and clearing the other field." 2050 2062 msgstr "" … … 2054 2066 msgstr "" 2055 2067 2056 #: includes/class-landexhub-consent-admin.php:4 1952068 #: includes/class-landexhub-consent-admin.php:4230 2057 2069 msgid "Using Site Kit or MonsterInsights?" 2058 2070 msgstr "" … … 2062 2074 msgstr "" 2063 2075 2064 #: includes/class-landexhub-consent-admin.php:36 232076 #: includes/class-landexhub-consent-admin.php:3636 2065 2077 msgid "Verify the edit" 2066 2078 msgstr "" … … 2086 2098 msgstr "" 2087 2099 2088 #: includes/class-landexhub-consent-admin.php:995 includes/class-landexhub-consent-admin.php:28 442100 #: includes/class-landexhub-consent-admin.php:995 includes/class-landexhub-consent-admin.php:2852 2089 2101 msgid "What LandexHub Consent adds to the site" 2090 2102 msgstr "" … … 2094 2106 msgstr "" 2095 2107 2096 #: includes/class-landexhub-consent-admin.php:37 56 includes/class-landexhub-consent-admin.php:39012108 #: includes/class-landexhub-consent-admin.php:3769 includes/class-landexhub-consent-admin.php:3916 2097 2109 msgid "What this site uses and how consent governs it." 2098 2110 msgstr "" … … 2102 2114 msgstr "" 2103 2115 2104 #: includes/class-landexhub-consent-admin.php:2328 includes/class-landexhub-consent-admin.php:39 462116 #: includes/class-landexhub-consent-admin.php:2328 includes/class-landexhub-consent-admin.php:3963 2105 2117 msgid "Who adds it" 2106 2118 msgstr "" 2107 2119 2108 #: includes/class-landexhub-consent-admin.php:2 8942120 #: includes/class-landexhub-consent-admin.php:2902 2109 2121 msgid "Who LandexHub Consent passes consent to" 2110 2122 msgstr "" … … 2131 2143 msgstr "" 2132 2144 2133 #: includes/class-landexhub-consent-admin.php:298 02145 #: includes/class-landexhub-consent-admin.php:2988 2134 2146 msgid "WP Consent API is a shared channel: while it is installed, LandexHub Consent is the consent manager for every plugin here that reads it." 2135 2147 msgstr "" 2136 2148 2137 #: includes/class-landexhub-consent-admin.php:2382 includes/class-landexhub-consent-admin.php:25 572149 #: includes/class-landexhub-consent-admin.php:2382 includes/class-landexhub-consent-admin.php:2560 2138 2150 msgid "written into the page" 2139 2151 msgstr "" … … 2143 2155 msgstr "" 2144 2156 2145 #: includes/class-landexhub-consent-admin.php:4 1852157 #: includes/class-landexhub-consent-admin.php:4220 2146 2158 msgid "You will find the ID in Tag Manager, top right." 2147 2159 msgstr "" 2148 2160 2149 #: includes/class-landexhub-consent-admin.php:271 02161 #: includes/class-landexhub-consent-admin.php:2716 2150 2162 msgid "your GTM container — it always loads; what each tag does before consent is decided in GTM" 2151 2163 msgstr "" -
landexhub-consent/trunk/readme.txt
r3758640 r3762168 5 5 Tested up to: 7.1 6 6 Requires PHP: 7.4 7 Stable tag: 0.9. 27 Stable tag: 0.9.3 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 46 46 This plugin does not call home and sends no telemetry. Depending on what **you** configure, it talks to the following services: 47 47 48 **Google Tag Manager / Google tag (gtag.js)** — optional, disabled by default. If you enter your own GTM container ID or gtag.js measurement ID in the plugin settings, the plugin embeds the standard Google snippet, and every visitor's browser then loads the tag from `www.googletagmanager.com` (requests `gtm.js` or `gtag/js`). This is required for the measurement you configured to work. The plugin prints the Google Consent Mode v2 `denied` default before these tags, unless a developer turns that default off with the `landexhub_consent_emit_consent_default` filter. No `<noscript>` fallback is printed, so visitors without JavaScript load nothing from Google. What Google receives with those requests (IP address, user agent, page URL, consent state signals) is described in Google's documentation: [Google Terms of Service](https://policies.google.com/terms), [Google Privacy Policy](https://policies.google.com/privacy). If you leave the setting empty, nothing is loaded from Google by this plugin.48 **Google Tag Manager / Google tag (gtag.js)** — optional, disabled by default. If you enter your own GTM container ID or gtag.js measurement ID in the plugin settings, the plugin embeds the standard Google snippet, and every visitor's browser then loads the tag from `www.googletagmanager.com` (requests `gtm.js` or `gtag/js`). This is required for the measurement you configured to work. The plugin prints the Google Consent Mode v2 `denied` default before these tags, unless a developer turns that default off with the `landexhub_consent_emit_consent_default` filter. With a GTM container the plugin also prints Google's `<noscript>` frame right after the opening `<body>` tag (in themes that call `wp_body_open()`), as in Google's installation instructions: visitors without JavaScript then load `ns.html` from `www.googletagmanager.com`. Without JavaScript there is no consent bar and no Consent Mode default, so that request carries no consent state. What Google receives with those requests (IP address, user agent, page URL, consent state signals) is described in Google's documentation: [Google Terms of Service](https://policies.google.com/terms), [Google Privacy Policy](https://policies.google.com/privacy). If you leave the setting empty, nothing is loaded from Google by this plugin. 49 49 50 50 **Your own site (loopback)** — the site check fetches your own homepage over HTTP (a loopback request to your own server) to scan the HTML for third-party scripts and the Google tag order. No external service is involved. … … 119 119 == Changelog == 120 120 121 = 0.9.3 = 122 * "Verify the edit" in the gating guide checks the site again and returns to the page you started from (the service detail or Services), not to a page that has no menu entry. 123 * A source saved to the services list from an inline snippet (for example the Meta Pixel) is matched to its catalog service, so it is listed once in Services and on the cookie policy page. Entries saved this way in 0.9.2 are now shown with their catalog service too. 124 * Services the catalog files as necessary (Stripe, PayPal, Google reCAPTCHA, Cloudflare Turnstile) are shown as "Necessary": they no longer count as needing attention, are not reported as loading before consent and are not offered for gating. 125 * Google tags follow Google's installation snippets: the GTM container also prints its `<noscript>` frame right after the opening `<body>` tag, and gtag.js in Advanced mode loads with `async`, followed by its config. The plugin's own tags only add an `id` attribute. 126 * The `landexhub_consent_update` dataLayer event now comes after GTM's `gtm.js` event whenever the container starts while the page loads, also when the theme or another plugin prints it after the LandexHub Consent script, so GTM triggers on it fire. A container that starts only after the page has loaded (for example one delayed by an optimisation plugin) still gets the event before `gtm.js`. The Consent Mode update with a returning visitor's choice still goes out at once, before the container's first tag. 127 121 128 = 0.9.2 = 122 129 * The consent log retention is now a setting: keep records for 3 months up to 5 years, or until you delete them (default 12 months). … … 149 156 == Upgrade Notice == 150 157 158 = 0.9.3 = 159 GTM triggers on the consent event fire wherever the container is printed in the page. Fixes in the Services page: "Verify the edit" returns to the service, no duplicate rows for inline sources, necessary services are not reported as problems. 160 151 161 = 0.9.2 = 152 162 Configurable consent log retention, opt-in credit link and stricter settings validation. -
landexhub-consent/trunk/src/consent.ts
r3758640 r3762168 427 427 // that outlived the visitor's choice (it expired, or the cookie was removed). 428 428 pushWpConsent(state, "none" === source); 429 // The signals go out at once, so GTM knows a returning visitor's choice before its first tag. 429 430 gtag("consent", "update", signals(state)); 430 431 const ev: { [key: string]: unknown } = { event: cfg.dataLayer!.onUpdate }; 431 432 ev.landexhub_consent = catBooleans(state); 432 433 ev.landexhub_consent_source = source; 433 (w.dataLayer as unknown[]).push(ev); 434 // The event is meant for GTM triggers, which never see an event that comes before GTM's 435 // gtm.js. A page-load event usually does, a choice made in the bar only rarely. 436 afterGtmStart(function () { (w.dataLayer as unknown[]).push(ev); }); 437 } 438 439 // Runs fn once the GTM container has started: right away when its gtm.js event is already 440 // in the dataLayer, otherwise just after the GTM snippet pushes it, whether the snippet 441 // comes before or after this script. Without GTM on the page fn runs once the page has 442 // loaded, so other listeners still get the event. 443 function afterGtmStart(fn: () => void): void { 444 const dl = w.dataLayer as { [key: string]: unknown }[]; 445 const started = function (e: unknown): boolean { 446 return !!e && typeof e === "object" && (e as { event?: unknown }).event === "gtm.js"; 447 }; 448 if (dl.some(started) || "complete" === d.readyState) { 449 fn(); 450 return; 451 } 452 let done = false; 453 const run = function (): void { 454 if (done) return; 455 done = true; 456 if (dl.push === wrapped) dl.push = original; 457 fn(); 458 }; 459 const original = dl.push; 460 const wrapped = function (this: unknown, ...items: { [key: string]: unknown }[]): number { 461 const n = original.apply(dl, items); 462 if (!done && items.some(started)) run(); 463 return n; 464 }; 465 dl.push = wrapped; 466 w.addEventListener("load", run); 434 467 } 435 468 function persist(state: ConsentState): void {
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)