@analitikisler/ai-tag-debugger 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +22 -11
- package/README.tr.md +22 -11
- package/package.json +1 -1
- package/src/agent.js +5 -1
- package/src/browser.js +211 -19
- package/src/campaign.js +7 -4
- package/src/checks.js +118 -32
- package/src/cli.js +2 -1
- package/src/cmp.js +166 -0
- package/src/consent.js +200 -26
- package/src/help.js +1 -0
- package/src/hit-params.js +70 -0
- package/src/html/consent.js +34 -9
- package/src/html/journeys.js +36 -71
- package/src/html/summary.js +1 -1
- package/src/i18n.js +169 -4
- package/src/mcp.js +335 -28
- package/src/metrics.js +13 -7
- package/src/parsers.js +65 -8
- package/src/report.js +9 -3
- package/src/verify.js +3 -0
package/src/i18n.js
CHANGED
|
@@ -24,6 +24,8 @@ const journeysOf = (v) => v?.journeys ?? {};
|
|
|
24
24
|
|
|
25
25
|
const en = {
|
|
26
26
|
name: "English",
|
|
27
|
+
// The enhanced measurement settings as GA4's web stream page names them.
|
|
28
|
+
ga4Settings: { pageViews: "Page views", scrolls: "Scrolls", outboundClicks: "Outbound clicks", siteSearch: "Site search", videoEngagement: "Video engagement", fileDownloads: "File downloads", formInteractions: "Form interactions" },
|
|
27
29
|
severity: { broken: "Broken", risk: "Risk", warning: "Warning", info: "Info", ok: "OK" },
|
|
28
30
|
ui: {
|
|
29
31
|
title: (host) => `ai tag debugger report: ${host}`,
|
|
@@ -78,10 +80,45 @@ const en = {
|
|
|
78
80
|
customItemParams: "Custom item parameters",
|
|
79
81
|
noItems: "no items",
|
|
80
82
|
serverSideTag: "server-side",
|
|
83
|
+
lateHit: (ms) => `arrived ${(ms / 1000).toFixed(1)} s late`,
|
|
84
|
+
lateHitTip: (step) => `Sent after this step was over, during "${step}". It belongs to this step's page.`,
|
|
81
85
|
source: "Source",
|
|
82
86
|
request: "Request",
|
|
83
87
|
noPushes: "No dataLayer pushes in this step.",
|
|
84
88
|
noRequests: "No requests to the chosen providers in this step.",
|
|
89
|
+
cmp: {
|
|
90
|
+
title: "Consent platform",
|
|
91
|
+
unknown: "a consent platform the tool doesn't recognise",
|
|
92
|
+
built: (date) => `Its site bundle was compiled on ${date}.`,
|
|
93
|
+
scriptDated: (date, where) => `Its script (${where}) last changed on ${date}.`,
|
|
94
|
+
script: (url) => `Bundle: ${url}.`,
|
|
95
|
+
language: (name) => `The setup in force is the one for the ${name} language.`,
|
|
96
|
+
categories: (list) => `Categories: ${list.join(", ")}.`,
|
|
97
|
+
modeOn: (vendor, mapping) => `${vendor}'s own Consent Mode integration is on, with ${mapping}.`,
|
|
98
|
+
modeOff: (vendor, mapping) => `${vendor}'s own Consent Mode integration is off, so the consent signals come from elsewhere, such as a GTM template or the site's code${mapping ? `; its configured mapping (${mapping}) is not in force` : ""}.`,
|
|
99
|
+
mapping: (pairs) => pairs.map(([signal, category]) => `${signal} → ${category}`).join(", "),
|
|
100
|
+
passthrough: (urlPassthrough, redaction) => `URL passthrough is ${urlPassthrough ? "on" : "off"} and ads data redaction is ${redaction ? "on" : "off"}.`,
|
|
101
|
+
autoBlocking: (on, rules) => (on ? `Auto-blocking is on${rules ? `, with ${rules} blocking rule${rules === 1 ? "" : "s"}` : ""}.` : "Auto-blocking is off."),
|
|
102
|
+
tcf: (on) => `IAB TCF is ${on ? "on" : "off"}.`,
|
|
103
|
+
law: (law) => `The law its banner follows here: ${law.toUpperCase()}.`,
|
|
104
|
+
modeFixed: (vendor, mapping) => `${vendor} maps its categories to Consent Mode the same way on every site: ${mapping}.`,
|
|
105
|
+
providerBlocking: (n) => (n ? `It holds back scripts from ${n} provider${n === 1 ? "" : "s"} until their category is allowed.` : "It holds back no providers' scripts by itself."),
|
|
106
|
+
version: (v) => `Version ${v}.`,
|
|
107
|
+
setupFile: (url) => `Its setup for this site: ${url}.`,
|
|
108
|
+
published: (date, where) => `That setup (${where}) was last published on ${date}.`,
|
|
109
|
+
model: (model, region) => `It handled this visit${region ? `, placed in ${region},` : ""} under its "${model}" consent model.`,
|
|
110
|
+
implied: "It counted this visit as consent given without a choice, so tags could run before any choice; for a visitor from a region that needs opt-in they would not. Read the No choice columns with that in mind.",
|
|
111
|
+
redaction: (v) => `Ads data redaction: ${v}.`,
|
|
112
|
+
},
|
|
113
|
+
tabCookies: "Cookies",
|
|
114
|
+
cookieCol: "Cookie",
|
|
115
|
+
domainCol: "Domain",
|
|
116
|
+
changeCol: "Change",
|
|
117
|
+
cookieChange: { added: "added", changed: "changed", removed: "removed" },
|
|
118
|
+
cookieNamesOnly: "Names only: cookie values are never recorded.",
|
|
119
|
+
gaClientId: (cid, since, prev) => `GA4 client id (_ga): ${cid}, ${prev ? `changed from ${prev}` : since === null ? "new at this step" : `the same since step ${since}`}.`,
|
|
120
|
+
gclAw: (landing) => (landing ? "_gcl_aw holds the gclid the landing page was opened with." : "_gcl_aw holds a gclid other than the landing page's."),
|
|
121
|
+
fbc: (landing) => (landing ? "_fbc holds the fbclid the landing page was opened with." : "_fbc holds an fbclid other than the landing page's."),
|
|
85
122
|
eventParams: "Event parameters",
|
|
86
123
|
contextParams: "Session, device, page and consent parameters",
|
|
87
124
|
rawRequest: "Raw request",
|
|
@@ -96,6 +133,7 @@ const en = {
|
|
|
96
133
|
skippedInStep: (list, n) => `Only requests to the chosen providers are shown. ${n} out-of-scope ${n === 1 ? "request was" : "requests were"} skipped in this step: ${list}.`,
|
|
97
134
|
tabJourneys: "Journeys",
|
|
98
135
|
sections: "Report sections",
|
|
136
|
+
liveRun: "Live run: tracking requests reached the real analytics and ad accounts, so this test traffic is in their reports.",
|
|
99
137
|
checkedAgainst: (id) => `Checked against plan ${id}`,
|
|
100
138
|
planChangesLine: (pc) => (pc.same ? `Plan unchanged since ${pc.previous}` : `Plan changed since ${pc.previous}: ${pc.added.length} added, ${pc.removed.length} removed, ${pc.changed.length} changed`),
|
|
101
139
|
planVsSite: "Plan vs. site",
|
|
@@ -130,7 +168,23 @@ const en = {
|
|
|
130
168
|
consentDefault: "Default",
|
|
131
169
|
consentUpdate: "Update",
|
|
132
170
|
scenarios: "Consent scenarios",
|
|
133
|
-
scenarioCols: { before: "No choice yet", accept: "Accept all", reject: "Reject all", analytics: "Analytics only" },
|
|
171
|
+
scenarioCols: { before: "No choice yet", ignore: "No choice, next page", accept: "Accept all", reject: "Reject all", analytics: "Analytics only" },
|
|
172
|
+
matrix: {
|
|
173
|
+
title: "Consent matrix",
|
|
174
|
+
intro: (landing) => `Each column is a fresh browser that opened ${landing}, made the choice (or none) and opened the page again.`,
|
|
175
|
+
rows: { firstHit: "First Google hit", campaign: "Campaign parameters on it", clientId: "GA4 client id", gclAw: "_gcl_aw cookie", cookies: "Cookies set", loaded: "Tags called, after the page started", tagConsent: "The Google tag's consent" },
|
|
176
|
+
none: "none",
|
|
177
|
+
notRun: "–",
|
|
178
|
+
kept: "all kept",
|
|
179
|
+
lost: (names) => `lost: ${names.join(", ")}`,
|
|
180
|
+
cid: { cookie: "in a cookie already", cookieless: "without a cookie", kept: "kept", changed: "changed", new: "new", none: "none" },
|
|
181
|
+
gcl: { landing: "holds the landing gclid", other: "holds another gclid", none: "not set" },
|
|
182
|
+
cookies: (n, names) => (n ? `${n}: ${names.join(", ")}` : "none"),
|
|
183
|
+
ms: (ms) => (ms < 1000 ? `${Math.round(ms)} ms` : `${(ms / 1000).toFixed(1)} s`),
|
|
184
|
+
signals: { ad_storage: "ad", analytics_storage: "an", ad_user_data: "ud", ad_personalization: "ap" },
|
|
185
|
+
problem: "should not happen with this choice",
|
|
186
|
+
legend: "ad, an, ud, ap: ad_storage, analytics_storage, ad_user_data, ad_personalization; ✓ granted, ✗ denied. ⚠ marks what should not happen with that choice.",
|
|
187
|
+
},
|
|
134
188
|
scenarioNotRun: "Not supported here",
|
|
135
189
|
scenarioTag: "Tag",
|
|
136
190
|
skippedLine: (list, n) => `${n} out-of-scope ${n === 1 ? "request was" : "requests were"} skipped: ${list}.`,
|
|
@@ -246,6 +300,11 @@ const en = {
|
|
|
246
300
|
journeyIncomplete: (note) => `The journey did not reach its goal${note ? `: ${note}` : "."} Events after that point could not be checked.`,
|
|
247
301
|
missingEvent: (platform, name) => `${label(platform)} ${q(name)} was not sent on this journey, although the journey reached its goal. ${label(platform)} recorded nothing for it.`,
|
|
248
302
|
missingEventEarly: (name) => `${q(name)} was not seen, but the journey stopped early, so it is unverified rather than missing.`,
|
|
303
|
+
missingEventUnverified: (name) => `${q(name)} was not seen, but a page on the way was a bot challenge or crashed in the browser, so it is unverified rather than missing.`,
|
|
304
|
+
pageBlocked: (vendor) => `The page was a bot challenge from ${vendor} instead of the site, so the browser never saw the real page and nothing captured there says anything about its tracking.`,
|
|
305
|
+
pageCrashed: (vendor, refused) => `The page crashed in the browser (the ${vendor} error screen)${refused ? `, after ${refused} of its own scripts came back as HTML pages instead of code` : ""}, so its tags may never have run.`,
|
|
306
|
+
missingEnhanced: (name, setting) => `GA4 ${q(name)} was not sent on this journey, although the journey reached its goal. GA4 sends it by itself, with no tag, when enhanced measurement is on: in GA4, Admin > Data streams > the web stream > Enhanced measurement, switch on "${en.ga4Settings[setting]}". A tag that sends it instead works too.`,
|
|
307
|
+
missingAutomatic: (name) => `GA4 ${q(name)} was not seen. GA4 makes it by itself, with no tag (first_visit and session_start from flags on its other hits, user_engagement when the page is hidden or left), so it needs no setup and is not counted as missing.`,
|
|
249
308
|
missingParams: (name, params) => `${q(name)} was sent without ${andList(sortParams(params).map(q), "and")}.`,
|
|
250
309
|
duplicate: (name, n) => `${q(name)} was sent ${n} times by one action. Every real one is counted ${n} times.`,
|
|
251
310
|
purchaseValueZero: (platform, name, v) => `${label(platform)} ${q(name)} was sent with value ${q(v)}. A purchase worth 0 or less adds no revenue, so ad platforms cannot optimise bids on it.`,
|
|
@@ -262,8 +321,11 @@ const en = {
|
|
|
262
321
|
campaignLost: (names, finalUrl) => `The landing address carried ${names.join(", ")}, but the page ended up on ${finalUrl} without ${names.length === 1 ? "it" : "them"}. A redirect dropped ${names.length === 1 ? "the parameter" : "the parameters"}, so ad clicks lose their attribution.`,
|
|
263
322
|
campaignMissingInHits: (platform, name, names) => `${label(platform)} ${q(name)} on the landing page reports a page address without ${names.join(", ")}, though the page still had ${names.length === 1 ? "it" : "them"}. The visit can be credited to direct traffic instead of the campaign.`,
|
|
264
323
|
campaignOk: (names) => `${names.join(", ")} survived the landing page's redirects and reached the hits.`,
|
|
324
|
+
gclidNotStored: () => `The landing address carried a gclid and ad storage was granted, but the _gcl_aw cookie never held it. Google Ads cannot tie a conversion later in the visit, or on a later visit, to the ad click.`,
|
|
325
|
+
clientIdChanged: (from, at) => `The GA4 client id in the _ga cookie changed between "${from}" and "${at}". GA4 counts the visit before and after as two different users.`,
|
|
265
326
|
consentDefaultMissing: () => "No Google Consent Mode default command (gtag('consent', 'default', ...)) was found in the dataLayer.",
|
|
266
327
|
consentDefaultLate: () => "The Consent Mode default was set after the first tracking hit was sent.",
|
|
328
|
+
consentDefaultNotApplied: () => "The page pushed a Consent Mode default, but the Google tag never applied it, so its tags ran without one. Tag Assistant shows Consent Mode as not configured.",
|
|
267
329
|
beforeConsentNever: (platform, name) => `${label(platform)} ${q(name)} was sent although the visitor never made a consent choice on this journey. ${label(platform)} receives data from visitors who have not agreed.`,
|
|
268
330
|
beforeConsent: (platform, name) => `${label(platform)} ${q(name)} was sent before the visitor made a consent choice. ${label(platform)} receives data from visitors who have not agreed.`,
|
|
269
331
|
consentV2Missing: (keys) => `The Consent Mode default does not set ${keys.map(q).join(" and ")}. Consent Mode v2 needs them for Google ads in the EEA and UK; without them ad personalization and conversion measurement can stop.`,
|
|
@@ -312,6 +374,10 @@ const en = {
|
|
|
312
374
|
purchase_mismatch: "Google and Meta received different revenue for the same order, so one of them reports and bids on the wrong number.",
|
|
313
375
|
campaign_lost_redirect: "A redirect strips the campaign parameters from the landing address, so paid clicks arrive as direct traffic and campaigns get no credit.",
|
|
314
376
|
campaign_missing_in_hits: "The landing page kept the campaign parameters but the hit did not report them, so the visit is credited to direct traffic.",
|
|
377
|
+
page_blocked: "Nothing about the site's tracking can be judged from the pages behind the challenge; events not seen there are unverified, not missing.",
|
|
378
|
+
page_crashed: "Visitors who get the same error see a broken page, and the tags on it may not run.",
|
|
379
|
+
gclid_not_stored: "Conversions are not linked to the ad click that brought the visitor, so Google Ads under-reports them and bids on less data.",
|
|
380
|
+
client_id_changed: "One visitor becomes two users in GA4: the visit is split, the journey before the change loses its conversions, and attribution starts over.",
|
|
315
381
|
campaign_params: "Campaign parameters survived the landing redirect and reached the hits, so paid clicks are credited to their campaigns.",
|
|
316
382
|
event_id_reused: "Two different events share one event ID, so the platform keeps the first and silently drops the other: a real event is lost.",
|
|
317
383
|
event_id_mismatch: "The browser and server copies of this event carry different IDs, so Meta cannot pair them and counts the conversion twice.",
|
|
@@ -321,6 +387,7 @@ const en = {
|
|
|
321
387
|
server_endpoint: "A server container answers on the site's domain; the events it forwards to ad platforms are not visible here.",
|
|
322
388
|
consent_default_missing: "Google tags run with no consent default, so they behave as if every visitor had consented before being asked.",
|
|
323
389
|
consent_default_late: "The first Google hit went out before the consent default was set, so that hit ignored the visitor's choice.",
|
|
390
|
+
consent_default_not_applied: "Google tags run as if no default had been set: before the visitor chooses, they read and write cookies the default was meant to hold back.",
|
|
324
391
|
consent_v2_missing: "The consent default lacks the v2 signals, so for EEA and UK traffic Google can stop ad personalisation and conversion measurement.",
|
|
325
392
|
consent_v2_update: "After the visitor accepted, the v2 signals stayed denied, so Google Ads conversions and remarketing stay off even for consenting visitors.",
|
|
326
393
|
before_consent: "The event was sent before the visitor made a choice, so the platform receives data from visitors who have not agreed.",
|
|
@@ -333,6 +400,7 @@ const en = {
|
|
|
333
400
|
pii_datalayer: "The dataLayer holds unhashed personal data, so every script on the page can read it, not only the tag that needs it.",
|
|
334
401
|
journey_incomplete: "The browser could not finish this journey, so every event after that point, including any conversion, is unverified.",
|
|
335
402
|
unplanned_events: "Events fire that are not in the plan: either the plan is out of date or tags send things nobody asked for.",
|
|
403
|
+
ga4_automatic_event: "Nothing is lost: GA4 makes this event itself, and a short test visit can end before it does.",
|
|
336
404
|
planned_out_of_scope: "Some planned events are on platforms this run did not check, so their status is unknown.",
|
|
337
405
|
matches_plan: "These planned events fired with everything the plan requires.",
|
|
338
406
|
},
|
|
@@ -348,6 +416,10 @@ const en = {
|
|
|
348
416
|
purchase_mismatch: "Make both tags read the same order fields; usually one reads a subtotal or a different currency. Then compare one order in both platforms.",
|
|
349
417
|
campaign_lost_redirect: "Make the redirect keep the query string, or land paid traffic on the final address directly.",
|
|
350
418
|
campaign_missing_in_hits: "Make the tag report the full landing address, parameters included; look for a page URL override or a page_location variable that fills in late.",
|
|
419
|
+
page_blocked: "Run the audit from a network the site trusts, such as your own computer, or have the bot protection let the audit's browser through, for example by its IP address.",
|
|
420
|
+
page_crashed: "Open the page in an ordinary browser. If it works there, the site's bot protection refused its scripts to the audit's network; if not, a deployment serves pages that ask for script files it no longer has.",
|
|
421
|
+
gclid_not_stored: "Fire the Conversion Linker tag (or the Google tag with the Ads ID) on every page, on consent granted as well as on page load, and keep the gclid on the landing address until it has run.",
|
|
422
|
+
client_id_changed: "Look for what rewrites or deletes _ga at that step: a consent platform clearing cookies, a second GA4 setup with another cookie_domain or cookie_prefix, or a cross-domain link without the _gl parameter.",
|
|
351
423
|
campaign_params: "Nothing to fix. Check the redirects again when the landing pages change.",
|
|
352
424
|
event_id_reused: "Generate a new event ID for every event, not once per page load.",
|
|
353
425
|
event_id_mismatch: "Use one event ID for the pixel event and the server copy: pass the same value to both tags.",
|
|
@@ -357,6 +429,7 @@ const en = {
|
|
|
357
429
|
server_endpoint: "Nothing to fix in the browser. Check what the server container forwards in its own preview mode.",
|
|
358
430
|
consent_default_missing: "Set a Consent Mode default (all denied where the law requires it) before any Google tag loads, usually in the consent banner's script or a GTM template.",
|
|
359
431
|
consent_default_late: "Move the consent default ahead of the Google tag: it must run before gtm.js or gtag.js loads.",
|
|
432
|
+
consent_default_not_applied: "Set the default with gtag('consent', 'default', {...}), where gtag pushes its arguments object; a plain array pushed to the dataLayer is ignored. Check that it goes to the dataLayer the Google tag reads, in the page itself, before gtm.js or gtag.js loads.",
|
|
360
433
|
consent_v2_missing: "Add ad_user_data and ad_personalization to the consent default, next to ad_storage and analytics_storage.",
|
|
361
434
|
consent_v2_update: "Grant ad_user_data and ad_personalization in the consent update the banner sends after the visitor accepts.",
|
|
362
435
|
before_consent: "Give the tag a consent check (its consent settings or an additional consent trigger), or fire it only after the banner's choice.",
|
|
@@ -369,6 +442,7 @@ const en = {
|
|
|
369
442
|
pii_datalayer: "Push user data to the dataLayer already hashed, or restrict it to the tag that needs it and clear it afterwards.",
|
|
370
443
|
journey_incomplete: "Read the note for why the browser stopped (a blocked click, a missing element, an error), fix the page or the step, and re-run the journey.",
|
|
371
444
|
unplanned_events: "Add the events to the measurement plan if they are wanted, or remove the tags that send them.",
|
|
445
|
+
ga4_automatic_event: "No fix is needed. Keep the event in the plan for reference, or remove it, since no tag has to send it.",
|
|
372
446
|
planned_out_of_scope: "Include their platforms in the next run's providers so they are checked.",
|
|
373
447
|
matches_plan: "Nothing to fix.",
|
|
374
448
|
},
|
|
@@ -384,6 +458,10 @@ const en = {
|
|
|
384
458
|
purchase_mismatch: "money",
|
|
385
459
|
campaign_lost_redirect: "money",
|
|
386
460
|
campaign_missing_in_hits: "money",
|
|
461
|
+
page_blocked: "hygiene",
|
|
462
|
+
page_crashed: "hygiene",
|
|
463
|
+
gclid_not_stored: "money",
|
|
464
|
+
client_id_changed: "money",
|
|
387
465
|
campaign_params: "money",
|
|
388
466
|
event_id_reused: "money",
|
|
389
467
|
event_id_mismatch: "money",
|
|
@@ -393,6 +471,7 @@ const en = {
|
|
|
393
471
|
server_endpoint: "hygiene",
|
|
394
472
|
consent_default_missing: "legal",
|
|
395
473
|
consent_default_late: "legal",
|
|
474
|
+
consent_default_not_applied: "legal",
|
|
396
475
|
consent_v2_missing: "legal",
|
|
397
476
|
consent_v2_update: "money",
|
|
398
477
|
before_consent: "legal",
|
|
@@ -405,6 +484,7 @@ const en = {
|
|
|
405
484
|
pii_datalayer: "legal",
|
|
406
485
|
journey_incomplete: "hygiene",
|
|
407
486
|
unplanned_events: "hygiene",
|
|
487
|
+
ga4_automatic_event: "hygiene",
|
|
408
488
|
planned_out_of_scope: "hygiene",
|
|
409
489
|
matches_plan: "hygiene",
|
|
410
490
|
},
|
|
@@ -667,7 +747,7 @@ const en = {
|
|
|
667
747
|
// ---- html.consent: strings of src/html/consent.js, edited only by its builder ----
|
|
668
748
|
consent: {
|
|
669
749
|
statusLabel: "Consent status per platform",
|
|
670
|
-
cols: { before: "No choice", accept: "Accept", reject: "Reject", analytics: "Analytics only" },
|
|
750
|
+
cols: { before: "No choice", ignore: "Next page, no choice", accept: "Accept", reject: "Reject", analytics: "Analytics only" },
|
|
671
751
|
state: { denied: "denied", granted: "granted", none: "no signal" },
|
|
672
752
|
tally: (n, state) => `${n} · ${state}`,
|
|
673
753
|
scenarios: "Scenarios",
|
|
@@ -680,6 +760,9 @@ const en = {
|
|
|
680
760
|
noDefault: "No default",
|
|
681
761
|
v2: "v2",
|
|
682
762
|
v2Missing: "v2 missing",
|
|
763
|
+
tagState: "The Google tag's own state",
|
|
764
|
+
tagFlags: (usedDefault, usedUpdate, late, timedOut) => `${usedDefault ? "default applied" : "no default applied"}${usedUpdate ? ", update applied" : ""}${late ? ", default set late" : ""}${timedOut ? ", wait_for_update ran out" : ""}`,
|
|
765
|
+
defaultViaTag: "No consent command in the dataLayer: the default was set elsewhere, such as a consent platform's GTM template, and the Google tag applied it.",
|
|
683
766
|
timing: (lo, hi) => (lo === hi ? `${lo} ms` : `${lo}–${hi} ms`),
|
|
684
767
|
runsWith: (k, n) => (k === n ? `${n} ${n === 1 ? "run" : "runs"}` : `${k} of ${n} runs`),
|
|
685
768
|
resent: (n) => `Sent again on ${n} more page ${n === 1 ? "load" : "loads"}`,
|
|
@@ -720,6 +803,7 @@ const en = {
|
|
|
720
803
|
|
|
721
804
|
const tr = {
|
|
722
805
|
name: "Turkish",
|
|
806
|
+
ga4Settings: { pageViews: "Sayfa görüntülemeleri", scrolls: "Kaydırmalar", outboundClicks: "Giden tıklamalar", siteSearch: "Site araması", videoEngagement: "Video etkileşimi", fileDownloads: "Dosya indirmeleri", formInteractions: "Form etkileşimleri" },
|
|
723
807
|
severity: { broken: "Bozuk", risk: "Risk", warning: "Uyarı", info: "Bilgi", ok: "Sorunsuz" },
|
|
724
808
|
ui: {
|
|
725
809
|
title: (host) => `ai tag debugger raporu: ${host}`,
|
|
@@ -774,10 +858,45 @@ const tr = {
|
|
|
774
858
|
customItemParams: "Özel ürün parametreleri",
|
|
775
859
|
noItems: "ürün yok",
|
|
776
860
|
serverSideTag: "sunucu tarafı",
|
|
861
|
+
lateHit: (ms) => `${(ms / 1000).toFixed(1).replace(".", ",")} sn gecikmeli geldi`,
|
|
862
|
+
lateHitTip: (step) => `Bu adım bittikten sonra, "${step}" sırasında gönderildi. Bu adımın sayfasına ait.`,
|
|
777
863
|
source: "Kaynak",
|
|
778
864
|
request: "İstek",
|
|
779
865
|
noPushes: "Bu adımda dataLayer gönderimi yok.",
|
|
780
866
|
noRequests: "Bu adımda seçilen sağlayıcılara istek yok.",
|
|
867
|
+
cmp: {
|
|
868
|
+
title: "Onay platformu",
|
|
869
|
+
unknown: "aracın tanımadığı bir onay platformu",
|
|
870
|
+
built: (date) => `Site paketi ${date} tarihinde derlendi.`,
|
|
871
|
+
scriptDated: (date, where) => `Betiği (${where}) en son ${date} tarihinde değişti.`,
|
|
872
|
+
script: (url) => `Paket: ${url}.`,
|
|
873
|
+
language: (name) => `Geçerli kurulum ${name} dili için olanı.`,
|
|
874
|
+
categories: (list) => `Kategoriler: ${list.join(", ")}.`,
|
|
875
|
+
modeOn: (vendor, mapping) => `${vendor}'nin kendi Consent Mode entegrasyonu açık; eşleme: ${mapping}.`,
|
|
876
|
+
modeOff: (vendor, mapping) => `${vendor}'nin kendi Consent Mode entegrasyonu kapalı; onay sinyalleri başka bir yerden, örneğin bir GTM şablonundan ya da sitenin kodundan geliyor${mapping ? `; ayarlı eşlemesi (${mapping}) geçerli değil` : ""}.`,
|
|
877
|
+
mapping: (pairs) => pairs.map(([signal, category]) => `${signal} → ${category}`).join(", "),
|
|
878
|
+
passthrough: (urlPassthrough, redaction) => `URL passthrough ${urlPassthrough ? "açık" : "kapalı"}, reklam verisi karartma ${redaction ? "açık" : "kapalı"}.`,
|
|
879
|
+
autoBlocking: (on, rules) => (on ? `Otomatik engelleme açık${rules ? `, ${rules} engelleme kuralıyla` : ""}.` : "Otomatik engelleme kapalı."),
|
|
880
|
+
tcf: (on) => `IAB TCF ${on ? "açık" : "kapalı"}.`,
|
|
881
|
+
law: (law) => `Bannerın burada uyduğu yasa: ${law.toUpperCase()}.`,
|
|
882
|
+
modeFixed: (vendor, mapping) => `${vendor} kategorilerini her sitede aynı şekilde Consent Mode'a eşler: ${mapping}.`,
|
|
883
|
+
providerBlocking: (n) => (n ? `${n} sağlayıcının betiklerini kategorilerine izin verilene kadar bekletir.` : "Kendiliğinden hiçbir sağlayıcının betiğini bekletmez."),
|
|
884
|
+
version: (v) => `Sürüm ${v}.`,
|
|
885
|
+
setupFile: (url) => `Bu site için kurulumu: ${url}.`,
|
|
886
|
+
published: (date, where) => `Bu kurulum (${where}) en son ${date} tarihinde yayımlandı.`,
|
|
887
|
+
model: (model, region) => `Bu ziyareti${region ? ` (${region} olarak konumlandırılan)` : ""} "${model}" onay modeliyle ele aldı.`,
|
|
888
|
+
implied: "Bu ziyareti seçim yapılmadan verilmiş onay saydı; etiketler herhangi bir seçimden önce çalışabildi. Açık onay gerektiren bir bölgeden gelen ziyaretçi için çalışmazlardı. Seçim yok sütunlarını bunu göz önünde tutarak okuyun.",
|
|
889
|
+
redaction: (v) => `Reklam verisi karartma: ${v}.`,
|
|
890
|
+
},
|
|
891
|
+
tabCookies: "Çerezler",
|
|
892
|
+
cookieCol: "Çerez",
|
|
893
|
+
domainCol: "Alan adı",
|
|
894
|
+
changeCol: "Değişiklik",
|
|
895
|
+
cookieChange: { added: "eklendi", changed: "değişti", removed: "silindi" },
|
|
896
|
+
cookieNamesOnly: "Yalnızca adlar: çerez değerleri hiçbir zaman kaydedilmez.",
|
|
897
|
+
gaClientId: (cid, since, prev) => `GA4 istemci kimliği (_ga): ${cid}, ${prev ? `${prev} değerinden değişti` : since === null ? "bu adımda oluştu" : `${since}. adımdan beri aynı`}.`,
|
|
898
|
+
gclAw: (landing) => (landing ? "_gcl_aw, açılış sayfasının açıldığı gclid'i tutuyor." : "_gcl_aw, açılış sayfasınınkinden farklı bir gclid tutuyor."),
|
|
899
|
+
fbc: (landing) => (landing ? "_fbc, açılış sayfasının açıldığı fbclid'i tutuyor." : "_fbc, açılış sayfasınınkinden farklı bir fbclid tutuyor."),
|
|
781
900
|
eventParams: "Olay parametreleri",
|
|
782
901
|
contextParams: "Oturum, cihaz, sayfa ve onay parametreleri",
|
|
783
902
|
rawRequest: "Ham istek",
|
|
@@ -792,6 +911,7 @@ const tr = {
|
|
|
792
911
|
skippedInStep: (list, n) => `Yalnızca seçilen sağlayıcıların istekleri gösterilir. Bu adımda kapsam dışı ${n} istek atlandı: ${list}.`,
|
|
793
912
|
tabJourneys: "Yolculuklar",
|
|
794
913
|
sections: "Rapor bölümleri",
|
|
914
|
+
liveRun: "Canlı çalıştırma: takip istekleri gerçek analitik ve reklam hesaplarına ulaştı; bu test trafiği onların raporlarında görünür.",
|
|
795
915
|
checkedAgainst: (id) => `${id} planına göre kontrol edildi`,
|
|
796
916
|
planChangesLine: (pc) => (pc.same ? `Plan ${pc.previous} sürümünden bu yana değişmedi` : `Plan ${pc.previous} sürümünden bu yana değişti: ${pc.added.length} eklendi, ${pc.removed.length} çıkarıldı, ${pc.changed.length} değişti`),
|
|
797
917
|
planVsSite: "Plan ve site",
|
|
@@ -826,7 +946,23 @@ const tr = {
|
|
|
826
946
|
consentDefault: "Varsayılan",
|
|
827
947
|
consentUpdate: "Güncelleme",
|
|
828
948
|
scenarios: "Onay senaryoları",
|
|
829
|
-
scenarioCols: { before: "Henüz seçim yok", accept: "Tümünü kabul", reject: "Tümünü reddet", analytics: "Yalnızca analitik" },
|
|
949
|
+
scenarioCols: { before: "Henüz seçim yok", ignore: "Seçim yok, sonraki sayfa", accept: "Tümünü kabul", reject: "Tümünü reddet", analytics: "Yalnızca analitik" },
|
|
950
|
+
matrix: {
|
|
951
|
+
title: "Onay matrisi",
|
|
952
|
+
intro: (landing) => `Her sütun, ${landing} adresini açan, seçimi yapan (ya da yapmayan) ve sayfayı yeniden açan ayrı bir tarayıcıdır.`,
|
|
953
|
+
rows: { firstHit: "İlk Google isteği", campaign: "Üzerindeki kampanya parametreleri", clientId: "GA4 istemci kimliği", gclAw: "_gcl_aw çerezi", cookies: "Yazılan çerezler", loaded: "Çağrılan etiketler, sayfa başladıktan sonra", tagConsent: "Google etiketinin onay durumu" },
|
|
954
|
+
none: "yok",
|
|
955
|
+
notRun: "–",
|
|
956
|
+
kept: "hepsi korundu",
|
|
957
|
+
lost: (names) => `kayboldu: ${names.join(", ")}`,
|
|
958
|
+
cid: { cookie: "zaten bir çerezde", cookieless: "çerezsiz", kept: "korundu", changed: "değişti", new: "yeni", none: "yok" },
|
|
959
|
+
gcl: { landing: "açılış gclid'ini tutuyor", other: "başka bir gclid tutuyor", none: "yazılmadı" },
|
|
960
|
+
cookies: (n, names) => (n ? `${n}: ${names.join(", ")}` : "yok"),
|
|
961
|
+
ms: (ms) => (ms < 1000 ? `${Math.round(ms)} ms` : `${(ms / 1000).toFixed(1).replace(".", ",")} sn`),
|
|
962
|
+
signals: { ad_storage: "ad", analytics_storage: "an", ad_user_data: "ud", ad_personalization: "ap" },
|
|
963
|
+
problem: "bu seçimle olmamalı",
|
|
964
|
+
legend: "ad, an, ud, ap: ad_storage, analytics_storage, ad_user_data, ad_personalization; ✓ izin verildi, ✗ reddedildi. ⚠ o seçimle olmaması gerekeni gösterir.",
|
|
965
|
+
},
|
|
830
966
|
scenarioNotRun: "Burada desteklenmiyor",
|
|
831
967
|
scenarioTag: "Etiket",
|
|
832
968
|
skippedLine: (list, n) => `Kapsam dışı ${n} istek atlandı: ${list}.`,
|
|
@@ -938,6 +1074,11 @@ const tr = {
|
|
|
938
1074
|
journeyIncomplete: (note) => `Yolculuk hedefine ulaşmadı${note ? `: ${note}` : "."} Bu noktadan sonraki olaylar kontrol edilemedi.`,
|
|
939
1075
|
missingEvent: (platform, name) => `${label(platform)} ${q(name)} bu yolculukta gönderilmedi; oysa yolculuk hedefine ulaştı. ${label(platform)} bu olay için hiçbir veri almadı.`,
|
|
940
1076
|
missingEventEarly: (name) => `${q(name)} görülmedi; ancak yolculuk erken durduğu için bu olay eksik değil, doğrulanmamış sayılır.`,
|
|
1077
|
+
missingEventUnverified: (name) => `${q(name)} görülmedi; ancak yoldaki bir sayfa bot doğrulaması çıktı ya da tarayıcıda çöktü, bu yüzden eksik değil, doğrulanmamış sayılır.`,
|
|
1078
|
+
pageBlocked: (vendor) => `Sayfa sitenin yerine ${vendor} bot doğrulamasıydı; tarayıcı gerçek sayfayı hiç görmedi ve orada yakalananlar sitenin takibi hakkında bir şey söylemez.`,
|
|
1079
|
+
pageCrashed: (vendor, refused) => `Sayfa tarayıcıda çöktü (${vendor} hata ekranı)${refused ? `; öncesinde kendi betiklerinden ${refused} tanesi kod yerine HTML sayfası olarak geldi` : ""}; etiketleri hiç çalışmamış olabilir.`,
|
|
1080
|
+
missingEnhanced: (name, setting) => `GA4 ${q(name)} bu yolculukta gönderilmedi; oysa yolculuk hedefine ulaştı. GA4 bu olayı geliştirilmiş ölçüm açıkken etiket gerekmeden kendisi gönderir: GA4'te Yönetici > Veri akışları > web akışı > Geliştirilmiş ölçüm altında "${tr.ga4Settings[setting]}" ayarını açın. Olayı gönderen bir etiket de aynı işi görür.`,
|
|
1081
|
+
missingAutomatic: (name) => `GA4 ${q(name)} görülmedi. GA4 bu olayı etiket gerekmeden kendisi oluşturur (first_visit ve session_start diğer isteklerindeki işaretlerden, user_engagement sayfa gizlendiğinde ya da kapatıldığında), bu yüzden kurulum gerektirmez ve eksik sayılmaz.`,
|
|
941
1082
|
missingParams: (name, params) => `${q(name)} olayı ${andList(sortParams(params).map(q), "ve")} ${params.length > 1 ? "parametreleri" : "parametresi"} olmadan gönderildi.`,
|
|
942
1083
|
duplicate: (name, n) => `${q(name)} tek bir işlemde ${n} kez gönderildi. Her gerçek olay ${n} kez sayılıyor.`,
|
|
943
1084
|
purchaseValueZero: (platform, name, v) => `${label(platform)} ${q(name)} ${q(v)} değeriyle gönderildi. 0 veya daha düşük değerli bir satın alma gelire eklenmez; reklam platformları teklifleri buna göre optimize edemez.`,
|
|
@@ -954,8 +1095,11 @@ const tr = {
|
|
|
954
1095
|
campaignLost: (names, finalUrl) => `Açılış adresi ${names.join(", ")} taşıyordu, ancak sayfa ${finalUrl} adresinde ${names.length === 1 ? "onsuz" : "onlarsız"} sonlandı. Bir yönlendirme ${names.length === 1 ? "parametreyi" : "parametreleri"} düşürdü, bu yüzden reklam tıklamalarının atfı kaybolur.`,
|
|
955
1096
|
campaignMissingInHits: (platform, name, names) => `Açılış sayfasındaki ${label(platform)} ${q(name)} isteği ${names.join(", ")} olmadan bir sayfa adresi bildiriyor, oysa sayfada ${names.length === 1 ? "o" : "onlar"} hâlâ vardı. Ziyaret kampanyaya değil doğrudan trafiğe yazılabilir.`,
|
|
956
1097
|
campaignOk: (names) => `${names.join(", ")} açılış sayfasının yönlendirmelerinden geçti ve isteklere ulaştı.`,
|
|
1098
|
+
gclidNotStored: () => `Açılış adresi bir gclid taşıyordu ve reklam depolamasına izin verildi, ancak _gcl_aw çerezi onu hiç tutmadı. Google Ads, ziyaretin ilerleyen adımlarındaki ya da sonraki bir ziyaretteki dönüşümü reklam tıklamasına bağlayamaz.`,
|
|
1099
|
+
clientIdChanged: (from, at) => `_ga çerezindeki GA4 istemci kimliği "${from}" ile "${at}" arasında değişti. GA4 değişiklikten önceki ve sonraki ziyareti iki ayrı kullanıcı sayar.`,
|
|
957
1100
|
consentDefaultMissing: () => "dataLayer'da Google Consent Mode varsayılan komutu (gtag('consent', 'default', ...)) bulunamadı.",
|
|
958
1101
|
consentDefaultLate: () => "Consent Mode varsayılanı, ilk izleme isteği gönderildikten sonra ayarlandı.",
|
|
1102
|
+
consentDefaultNotApplied: () => "Sayfa bir Consent Mode varsayılanı gönderdi, ancak Google etiketi onu hiç uygulamadı; etiketleri varsayılan olmadan çalıştı. Tag Assistant, Consent Mode'u yapılandırılmamış gösterir.",
|
|
959
1103
|
beforeConsentNever: (platform, name) => `${label(platform)} ${q(name)}, ziyaretçi bu yolculukta hiç onay seçimi yapmadığı hâlde gönderildi. ${label(platform)}, onay vermemiş ziyaretçilerden veri alıyor.`,
|
|
960
1104
|
beforeConsent: (platform, name) => `${label(platform)} ${q(name)}, ziyaretçi onay seçimini yapmadan önce gönderildi. ${label(platform)}, onay vermemiş ziyaretçilerden veri alıyor.`,
|
|
961
1105
|
consentV2Missing: (keys) => `Consent Mode varsayılanı ${keys.map(q).join(" ve ")} değerlerini ayarlamıyor. Consent Mode v2, AEA ve Birleşik Krallık'taki Google reklamları için bunları ister; yoksa reklam kişiselleştirme ve dönüşüm ölçümü durabilir.`,
|
|
@@ -1003,6 +1147,10 @@ const tr = {
|
|
|
1003
1147
|
purchase_mismatch: "Google ve Meta aynı sipariş için farklı gelir aldı; biri yanlış sayıyı raporluyor ve ona göre teklif veriyor.",
|
|
1004
1148
|
campaign_lost_redirect: "Bir yönlendirme kampanya parametrelerini siliyor; ücretli tıklamalar doğrudan trafik sayılıyor, kampanyalar sattıklarının karşılığını alamıyor.",
|
|
1005
1149
|
campaign_missing_in_hits: "Açılış sayfası kampanya parametrelerini korudu ama istek onları bildirmedi; ziyaret doğrudan trafiğe yazılıyor.",
|
|
1150
|
+
page_blocked: "Doğrulamanın arkasındaki sayfalardan sitenin takibi hakkında hüküm verilemez; orada görülmeyen olaylar eksik değil, doğrulanmamıştır.",
|
|
1151
|
+
page_crashed: "Aynı hatayı alan ziyaretçiler bozuk bir sayfa görür ve sayfadaki etiketler çalışmayabilir.",
|
|
1152
|
+
gclid_not_stored: "Dönüşümler ziyaretçiyi getiren reklam tıklamasına bağlanmıyor; Google Ads onları eksik raporluyor ve daha az veriyle teklif veriyor.",
|
|
1153
|
+
client_id_changed: "Bir ziyaretçi GA4'te iki kullanıcıya dönüşüyor: ziyaret bölünüyor, değişiklikten önceki yolculuk dönüşümlerini kaybediyor ve atıf baştan başlıyor.",
|
|
1006
1154
|
campaign_params: "Kampanya parametreleri açılış yönlendirmesinden geçip isteklere ulaştı; ücretli tıklamalar kendi kampanyalarına yazılıyor.",
|
|
1007
1155
|
event_id_reused: "İki farklı olay tek bir olay kimliğini paylaşıyor; platform ilkini tutup diğerini sessizce atıyor, gerçek bir olay kayboluyor.",
|
|
1008
1156
|
event_id_mismatch: "Bu olayın tarayıcı ve sunucu kopyaları farklı kimlik taşıyor; Meta ikisini eşleştiremiyor ve dönüşümü iki kez sayıyor.",
|
|
@@ -1012,6 +1160,7 @@ const tr = {
|
|
|
1012
1160
|
server_endpoint: "Sitenin alan adında bir sunucu container'ı yanıt veriyor; reklam platformlarına ilettiği olaylar burada görünmez.",
|
|
1013
1161
|
consent_default_missing: "Google etiketleri onay varsayılanı olmadan çalışıyor; her ziyaretçi sorulmadan onay vermiş gibi davranıyorlar.",
|
|
1014
1162
|
consent_default_late: "İlk Google isteği onay varsayılanı ayarlanmadan çıktı; o istek ziyaretçinin seçimini yok saydı.",
|
|
1163
|
+
consent_default_not_applied: "Google etiketleri hiç varsayılan ayarlanmamış gibi çalışıyor: ziyaretçi seçim yapmadan, varsayılanın engellemesi gereken çerezleri okuyup yazıyorlar.",
|
|
1015
1164
|
consent_v2_missing: "Onay varsayılanında v2 sinyalleri yok; AEA ve Birleşik Krallık trafiğinde Google reklam kişiselleştirmeyi ve dönüşüm ölçümünü durdurabilir.",
|
|
1016
1165
|
consent_v2_update: "Ziyaretçi kabul ettikten sonra v2 sinyalleri reddedilmiş kaldı; onay verenler için bile Google Ads dönüşümleri ve yeniden pazarlama kapalı.",
|
|
1017
1166
|
before_consent: "Olay ziyaretçi seçim yapmadan gönderildi; platform, onay vermemiş ziyaretçilerden veri alıyor.",
|
|
@@ -1024,6 +1173,7 @@ const tr = {
|
|
|
1024
1173
|
pii_datalayer: "dataLayer karma yapılmamış kişisel veri tutuyor; sayfadaki her betik bunu okuyabilir, yalnızca ihtiyaç duyan etiket değil.",
|
|
1025
1174
|
journey_incomplete: "Tarayıcı bu yolculuğu bitiremedi; o noktadan sonraki her olay, dönüşüm dâhil, doğrulanmamış durumda.",
|
|
1026
1175
|
unplanned_events: "Planda olmayan olaylar gönderiliyor: ya plan güncel değil ya da etiketler kimsenin istemediği şeyler gönderiyor.",
|
|
1176
|
+
ga4_automatic_event: "Kayıp yok: GA4 bu olayı kendisi oluşturur ve kısa bir test ziyareti o olay gönderilmeden bitebilir.",
|
|
1027
1177
|
planned_out_of_scope: "Plandaki bazı olaylar bu çalıştırmanın kontrol etmediği platformlarda; durumları bilinmiyor.",
|
|
1028
1178
|
matches_plan: "Plandaki bu olaylar, planın istediği her şeyle birlikte gönderildi.",
|
|
1029
1179
|
},
|
|
@@ -1037,6 +1187,10 @@ const tr = {
|
|
|
1037
1187
|
purchase_mismatch: "İki etiketin de aynı sipariş alanlarını okumasını sağlayın; genellikle biri ara toplamı ya da farklı bir para birimini okur. Sonra bir siparişi iki platformda da karşılaştırın.",
|
|
1038
1188
|
campaign_lost_redirect: "Yönlendirmenin sorgu dizesini korumasını sağlayın ya da ücretli trafiği doğrudan son adrese indirin.",
|
|
1039
1189
|
campaign_missing_in_hits: "Etiketin açılış adresini parametreleriyle birlikte eksiksiz bildirmesini sağlayın; bir sayfa URL'si geçersiz kılması ya da geç dolan bir page_location değişkeni olup olmadığına bakın.",
|
|
1190
|
+
page_blocked: "Denetimi sitenin güvendiği bir ağdan, örneğin kendi bilgisayarınızdan çalıştırın ya da bot korumasının denetim tarayıcısını, örneğin IP adresiyle, geçirmesini sağlayın.",
|
|
1191
|
+
page_crashed: "Sayfayı sıradan bir tarayıcıda açın. Orada çalışıyorsa sitenin bot koruması betiklerini denetimin ağına vermedi; çalışmıyorsa bir dağıtım artık sahip olmadığı betik dosyalarını isteyen sayfalar sunuyor.",
|
|
1192
|
+
gclid_not_stored: "Dönüşüm bağlayıcı etiketini (ya da Ads kimliğiyle Google etiketini) her sayfada, sayfa yüklenince olduğu kadar onay verildiğinde de çalıştırın ve gclid'i o etiket çalışana kadar açılış adresinde tutun.",
|
|
1193
|
+
client_id_changed: "O adımda _ga'yı yeniden yazan ya da silen şeyi arayın: çerezleri temizleyen bir onay platformu, başka bir cookie_domain ya da cookie_prefix ile ikinci bir GA4 kurulumu, ya da _gl parametresi olmayan alan adları arası bir bağlantı.",
|
|
1040
1194
|
campaign_params: "Düzeltilecek bir şey yok. Açılış sayfaları değiştiğinde yönlendirmeleri yeniden kontrol edin.",
|
|
1041
1195
|
event_id_reused: "Her olay için yeni bir olay kimliği üretin; sayfa yüklemesi başına bir kez değil.",
|
|
1042
1196
|
event_id_mismatch: "Piksel olayı ve sunucu kopyası için tek bir olay kimliği kullanın: aynı değeri iki etikete de verin.",
|
|
@@ -1046,6 +1200,7 @@ const tr = {
|
|
|
1046
1200
|
server_endpoint: "Tarayıcı tarafında düzeltilecek bir şey yok. Sunucu container'ının neyi ilettiğini kendi önizleme modunda kontrol edin.",
|
|
1047
1201
|
consent_default_missing: "Herhangi bir Google etiketi yüklenmeden önce, genellikle onay banner'ının betiğinde veya bir GTM şablonunda, bir Consent Mode varsayılanı ayarlayın (yasanın gerektirdiği yerde hepsi reddedilmiş).",
|
|
1048
1202
|
consent_default_late: "Onay varsayılanını Google etiketinin önüne alın: gtm.js veya gtag.js yüklenmeden önce çalışmalı.",
|
|
1203
|
+
consent_default_not_applied: "Varsayılanı gtag('consent', 'default', {...}) ile ayarlayın; gtag arguments nesnesini gönderir, dataLayer'a gönderilen düz bir dizi yok sayılır. Google etiketinin okuduğu dataLayer'a, sayfanın kendisinde ve gtm.js ya da gtag.js yüklenmeden önce gittiğini kontrol edin.",
|
|
1049
1204
|
consent_v2_missing: "Onay varsayılanına ad_storage ve analytics_storage'ın yanına ad_user_data ve ad_personalization sinyallerini ekleyin.",
|
|
1050
1205
|
consent_v2_update: "Banner'ın ziyaretçi kabul ettikten sonra gönderdiği onay güncellemesinde ad_user_data ve ad_personalization iznini verin.",
|
|
1051
1206
|
before_consent: "Etikete bir onay kontrolü ekleyin (etiketin onay ayarları ya da ek bir onay tetikleyicisi) veya onu yalnızca banner seçiminden sonra çalıştırın.",
|
|
@@ -1058,6 +1213,7 @@ const tr = {
|
|
|
1058
1213
|
pii_datalayer: "Kullanıcı verisini dataLayer'a karma yapılmış olarak gönderin ya da yalnızca ihtiyaç duyan etiketle sınırlayıp ardından temizleyin.",
|
|
1059
1214
|
journey_incomplete: "Tarayıcının neden durduğunu nottan okuyun (engellenen bir tıklama, bulunamayan bir öğe, bir hata), sayfayı ya da adımı düzeltin ve yolculuğu yeniden çalıştırın.",
|
|
1060
1215
|
unplanned_events: "İstenen olayları ölçüm planına ekleyin ya da onları gönderen etiketleri kaldırın.",
|
|
1216
|
+
ga4_automatic_event: "Düzeltme gerekmez. Olayı başvuru için planda tutabilir ya da kaldırabilirsiniz; hiçbir etiketin göndermesi gerekmez.",
|
|
1061
1217
|
planned_out_of_scope: "Kontrol edilmeleri için platformlarını bir sonraki çalıştırmanın sağlayıcılarına ekleyin.",
|
|
1062
1218
|
matches_plan: "Düzeltilecek bir şey yok.",
|
|
1063
1219
|
},
|
|
@@ -1072,6 +1228,10 @@ const tr = {
|
|
|
1072
1228
|
purchase_mismatch: "money",
|
|
1073
1229
|
campaign_lost_redirect: "money",
|
|
1074
1230
|
campaign_missing_in_hits: "money",
|
|
1231
|
+
page_blocked: "hygiene",
|
|
1232
|
+
page_crashed: "hygiene",
|
|
1233
|
+
gclid_not_stored: "money",
|
|
1234
|
+
client_id_changed: "money",
|
|
1075
1235
|
campaign_params: "money",
|
|
1076
1236
|
event_id_reused: "money",
|
|
1077
1237
|
event_id_mismatch: "money",
|
|
@@ -1081,6 +1241,7 @@ const tr = {
|
|
|
1081
1241
|
server_endpoint: "hygiene",
|
|
1082
1242
|
consent_default_missing: "legal",
|
|
1083
1243
|
consent_default_late: "legal",
|
|
1244
|
+
consent_default_not_applied: "legal",
|
|
1084
1245
|
consent_v2_missing: "legal",
|
|
1085
1246
|
consent_v2_update: "money",
|
|
1086
1247
|
before_consent: "legal",
|
|
@@ -1093,6 +1254,7 @@ const tr = {
|
|
|
1093
1254
|
pii_datalayer: "legal",
|
|
1094
1255
|
journey_incomplete: "hygiene",
|
|
1095
1256
|
unplanned_events: "hygiene",
|
|
1257
|
+
ga4_automatic_event: "hygiene",
|
|
1096
1258
|
planned_out_of_scope: "hygiene",
|
|
1097
1259
|
matches_plan: "hygiene",
|
|
1098
1260
|
},
|
|
@@ -1351,7 +1513,7 @@ const tr = {
|
|
|
1351
1513
|
// ---- html.consent: strings of src/html/consent.js, edited only by its builder ----
|
|
1352
1514
|
consent: {
|
|
1353
1515
|
statusLabel: "Platform başına onay durumu",
|
|
1354
|
-
cols: { before: "Seçim yok", accept: "Kabul", reject: "Reddet", analytics: "Yalnızca analitik" },
|
|
1516
|
+
cols: { before: "Seçim yok", ignore: "Seçimsiz sonraki sayfa", accept: "Kabul", reject: "Reddet", analytics: "Yalnızca analitik" },
|
|
1355
1517
|
state: { denied: "reddedildi", granted: "verildi", none: "sinyal yok" },
|
|
1356
1518
|
tally: (n, state) => `${n} · ${state}`,
|
|
1357
1519
|
scenarios: "Senaryolar",
|
|
@@ -1364,6 +1526,9 @@ const tr = {
|
|
|
1364
1526
|
noDefault: "Varsayılan yok",
|
|
1365
1527
|
v2: "v2",
|
|
1366
1528
|
v2Missing: "v2 eksik",
|
|
1529
|
+
tagState: "Google etiketinin kendi durumu",
|
|
1530
|
+
tagFlags: (usedDefault, usedUpdate, late, timedOut) => `${usedDefault ? "varsayılan uygulandı" : "varsayılan uygulanmadı"}${usedUpdate ? ", güncelleme uygulandı" : ""}${late ? ", varsayılan geç ayarlandı" : ""}${timedOut ? ", wait_for_update süresi doldu" : ""}`,
|
|
1531
|
+
defaultViaTag: "dataLayer'da onay komutu yok: varsayılan başka bir yerde, örneğin bir onay platformunun GTM şablonunda ayarlandı ve Google etiketi onu uyguladı.",
|
|
1367
1532
|
timing: (lo, hi) => (lo === hi ? `${lo} ms` : `${lo}–${hi} ms`),
|
|
1368
1533
|
runsWith: (k, n) => (k === n ? `${n} çalıştırma` : `${n} çalıştırmadan ${k} tanesi`),
|
|
1369
1534
|
resent: (n) => `${n} sayfa yüklemesinde daha yeniden gönderildi`,
|