@analitikisler/ai-tag-debugger 0.17.0 → 0.18.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 +9 -0
- package/README.md +12 -13
- package/README.tr.md +12 -13
- package/package.json +2 -2
- package/src/html/consent.js +152 -0
- package/src/html/css.js +1180 -0
- package/src/html/findings.js +493 -0
- package/src/html/journeys.js +449 -0
- package/src/html/lib.js +272 -0
- package/src/html/scope.js +350 -0
- package/src/html/script.js +300 -0
- package/src/html/shell.js +191 -0
- package/src/html/summary.js +288 -0
- package/src/i18n.js +380 -166
- package/src/metrics.js +9 -3
- package/src/plan-html.js +71 -25
- package/src/report-shared.js +123 -0
- package/src/report.js +23 -1504
package/src/i18n.js
CHANGED
|
@@ -32,18 +32,11 @@ const en = {
|
|
|
32
32
|
eyebrow: "AI tracking audit",
|
|
33
33
|
paramsShort: "params",
|
|
34
34
|
noParameters: "No parameters.",
|
|
35
|
-
pushMatchHint: "dataLayer pushes in this step with the same event name.",
|
|
36
35
|
noMatchingPush: "No dataLayer push with this event name in this step. The tag may fire from a page view, a click trigger or a hardcoded pixel.",
|
|
37
|
-
otherInStep: "Other dataLayer pushes and network calls",
|
|
38
36
|
noHits: "No tracking events",
|
|
39
|
-
hasProblems: "Has problems",
|
|
40
|
-
stepsShort: "steps",
|
|
41
|
-
eventsShort: "events",
|
|
42
|
-
problemsShort: "problems",
|
|
43
37
|
findings: "Findings",
|
|
44
38
|
what: "What",
|
|
45
39
|
where: "Where",
|
|
46
|
-
causeAndFix: "Cause and fix",
|
|
47
40
|
likelyCause: "Likely cause",
|
|
48
41
|
gtmTags: "In your GTM container",
|
|
49
42
|
gtmNoTag: "No tag in the container export sends this event.",
|
|
@@ -57,14 +50,10 @@ const en = {
|
|
|
57
50
|
fix: "Fix",
|
|
58
51
|
captured: "Captured",
|
|
59
52
|
noProblems: "No problems found.",
|
|
60
|
-
noExplanation: "No model explanation in this run. The consequence, owner and fix below do not need one.",
|
|
61
|
-
matchingPlan: "Matching the plan",
|
|
62
53
|
timeline: "Journeys and event timeline",
|
|
63
|
-
timelineLead: "Every step of every journey. Events are grouped by platform; open one to see its parameters, the dataLayer push behind it and the network request that carried it. Steps with problems are open.",
|
|
64
54
|
completed: "Completed",
|
|
65
55
|
notCompleted: "Not completed",
|
|
66
56
|
step: "step",
|
|
67
|
-
trackingHits: "Tracking hits",
|
|
68
57
|
dataLayer: "dataLayer pushes",
|
|
69
58
|
network: "Network calls",
|
|
70
59
|
platform: "Platform",
|
|
@@ -74,8 +63,6 @@ const en = {
|
|
|
74
63
|
method: "Method",
|
|
75
64
|
status: "Status",
|
|
76
65
|
vendor: "Vendor",
|
|
77
|
-
blockedNote: "blocked by this audit: answered locally, never reached the vendor",
|
|
78
|
-
blockedNoteVendor: (vendor) => `blocked by this audit: answered locally, never reached ${vendor}`,
|
|
79
66
|
clickedThrough: "clicked through an overlapping element",
|
|
80
67
|
generatedBy: "Generated by AI Tag Debugger",
|
|
81
68
|
nothing: "None",
|
|
@@ -84,48 +71,31 @@ const en = {
|
|
|
84
71
|
acceptedLine: (n) => (n === 1 ? "1 accepted finding from the baseline is not counted" : `${n} accepted findings from the baseline are not counted`),
|
|
85
72
|
whereStep: (journey, viewport, step) => `${journey} (${viewport})${step ? `, step "${step}"` : ""}`,
|
|
86
73
|
allGood: "All planned events fired correctly on every journey tested.",
|
|
87
|
-
tabEvents: "Events",
|
|
88
|
-
tabTimeline: "Timeline",
|
|
89
|
-
timelineGtmEvent: "GTM event",
|
|
90
|
-
timelineConsent: "Consent command",
|
|
91
|
-
timelineNoEvent: "No GTM event (data only)",
|
|
92
|
-
timelineNoHits: "No platform hit followed this push.",
|
|
93
|
-
timelineOther: "Hits without a dataLayer push",
|
|
94
74
|
bodyDropped: "Request body not stored: this audit reached its 2 MB limit for stored request bodies.",
|
|
95
75
|
tabNetwork: "Network requests",
|
|
96
|
-
filterBy: "Filter by source",
|
|
97
76
|
all: "All",
|
|
98
77
|
items: "Items",
|
|
99
78
|
customItemParams: "Custom item parameters",
|
|
100
|
-
itemsCount: (n) => `${n} ${n === 1 ? "item" : "items"}`,
|
|
101
79
|
noItems: "no items",
|
|
102
80
|
serverSideTag: "server-side",
|
|
103
81
|
source: "Source",
|
|
104
82
|
request: "Request",
|
|
105
|
-
noRequest: "No matching request",
|
|
106
83
|
noPushes: "No dataLayer pushes in this step.",
|
|
107
84
|
noRequests: "No requests to the chosen providers in this step.",
|
|
108
85
|
eventParams: "Event parameters",
|
|
109
86
|
contextParams: "Session, device, page and consent parameters",
|
|
110
87
|
rawRequest: "Raw request",
|
|
111
|
-
rawJson: "Raw JSON",
|
|
112
88
|
inBatch: (i, n) => `${i} of ${n} in one request`,
|
|
113
89
|
impact: "Impact",
|
|
114
90
|
evidence: "Evidence",
|
|
115
91
|
fixSteps: "Fix",
|
|
116
92
|
verify: "How to verify",
|
|
117
93
|
owners: { developer: "Developer", gtm: "Tag Manager", marketing: "Marketing" },
|
|
118
|
-
ownerHint: { developer: "Site code and dataLayer", gtm: "Tags, triggers and consent setup", marketing: "The measurement plan" },
|
|
119
94
|
places: (n) => `${n} ${n === 1 ? "place" : "places"}`,
|
|
120
95
|
alsoCheck: "Not in the findings list, but worth checking",
|
|
121
|
-
providersChecked: "Providers checked:",
|
|
122
|
-
outOfScope: (list, n) => `Out of scope: ${list} (${n} ${n === 1 ? "request" : "requests"} skipped)`,
|
|
123
96
|
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}.`,
|
|
124
|
-
tabOverview: "Overview",
|
|
125
97
|
tabJourneys: "Journeys",
|
|
126
|
-
tabScope: "Scope and plan",
|
|
127
98
|
sections: "Report sections",
|
|
128
|
-
headerMeta: (journeys, providers) => `${journeys} ${journeys === 1 ? "journey" : "journeys"} · ${providers} ${providers === 1 ? "provider" : "providers"}`,
|
|
129
99
|
checkedAgainst: (id) => `Checked against plan ${id}`,
|
|
130
100
|
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`),
|
|
131
101
|
planVsSite: "Plan vs. site",
|
|
@@ -133,22 +103,15 @@ const en = {
|
|
|
133
103
|
changesLead: (id, mode) => `Compared with run ${id}, by ${mode === "plan" ? "plan coverage" : "health findings"}`,
|
|
134
104
|
changesLine: (ch) => ch.fixed.length || ch.new.length ? [ch.fixed.length ? `${ch.fixed.length} ${ch.mode === "plan" ? (ch.fixed.length === 1 ? "event" : "events") : (ch.fixed.length === 1 ? "problem" : "problems")} fixed` : "", ch.new.length ? `${ch.new.length} new ${ch.new.length === 1 ? "problem" : "problems"}` : ""].filter(Boolean).join(", ") : "No changes since the last run",
|
|
135
105
|
changeFixed: "Fixed",
|
|
136
|
-
changeWas: (what) => `was: ${what}`,
|
|
137
106
|
changeNew: "New",
|
|
138
107
|
noSavedRun: "No saved run for this site yet. Run `aitd run` first; each run is compared with the one before it.",
|
|
139
108
|
routeChanged: (list) => `The AI took a different route through the site than in the last run: ${list}`,
|
|
140
109
|
noPreviousRun: "This is the first saved run for this site, so there is nothing to compare yet.",
|
|
141
|
-
planVsSiteLead: "Each planned event, and what the site actually sent",
|
|
142
110
|
coverageLine: (c) => `Coverage ${c.implemented} of ${c.checkable}${c.percent === null ? "" : ` (${c.percent}%)`}${c.not_checked ? `, ${c.not_checked} ${c.not_checked === 1 ? "event" : "events"} not checked` : ""}`,
|
|
143
111
|
bucket: { implemented: "Implemented", missing: "Missing", missing_params: "Missing params", wrong_values: "Wrong values", unplanned: "Unplanned", not_checked: "Not checked" },
|
|
144
112
|
bucketCol: "Result",
|
|
145
|
-
summaryLead: "AI summary, most important first",
|
|
146
|
-
noSummary: "No model summary in this run. The verdict and the findings below stand on their own.",
|
|
147
|
-
seeAllFindings: "See all findings →",
|
|
148
113
|
journey: "Journey",
|
|
149
114
|
stepsCol: "Steps",
|
|
150
|
-
problemsCol: "Problems",
|
|
151
|
-
scopeCard: "Scope",
|
|
152
115
|
site: "Site",
|
|
153
116
|
runCard: "This run",
|
|
154
117
|
runPlatforms: "Platforms",
|
|
@@ -166,45 +129,32 @@ const en = {
|
|
|
166
129
|
junitSite: "site",
|
|
167
130
|
consentDefault: "Default",
|
|
168
131
|
consentUpdate: "Update",
|
|
169
|
-
consentLead: "Consent Mode commands the site sent, in order.",
|
|
170
|
-
consentNone: "The site sent no Consent Mode commands on this journey.",
|
|
171
132
|
scenarios: "Consent scenarios",
|
|
172
|
-
scenariosLead: (cmp) => `The home page was opened once per consent choice, answered through ${cmp === "banner" ? "the banner's buttons" : cmp}. Each cell is how many hits the tag sent after that choice. A red number is data the visitor had refused.`,
|
|
173
133
|
scenarioCols: { before: "No choice yet", accept: "Accept all", reject: "Reject all", analytics: "Analytics only" },
|
|
174
134
|
scenarioNotRun: "Not supported here",
|
|
175
135
|
scenarioTag: "Tag",
|
|
176
136
|
skippedLine: (list, n) => `${n} out-of-scope ${n === 1 ? "request was" : "requests were"} skipped: ${list}.`,
|
|
177
|
-
findingHint: "Open a finding to see its likely cause, evidence and fix steps.",
|
|
178
|
-
spread: (j, s) => `${j} ${j === 1 ? "journey" : "journeys"}${s ? ` · ${s} ${s === 1 ? "step" : "steps"}` : ""}`,
|
|
179
137
|
chooseJourney: "Choose a journey",
|
|
180
|
-
stepsNav: "Steps",
|
|
181
|
-
stepMeta: (t, events, pushes, skipped) => `${t} · ${events} ${events === 1 ? "event" : "events"} · ${pushes} dataLayer${skipped ? ` · ${skipped} out-of-scope ${skipped === 1 ? "request" : "requests"} skipped` : ""}`,
|
|
182
138
|
noSteps: "This journey has no steps.",
|
|
183
139
|
planCoverage: "Measurement plan coverage",
|
|
184
|
-
planCoverageLead: "Whether each planned event was sent on each journey",
|
|
185
|
-
coverageLegend: "✓ sent · ✗ not sent · – not expected on this journey",
|
|
186
140
|
notChecked: "not checked",
|
|
187
141
|
noPlan: "No measurement plan was given, so there is nothing to compare against.",
|
|
188
142
|
providers: "Providers",
|
|
189
143
|
inventoryTitle: "Tag inventory",
|
|
190
|
-
inventoryLead: "Every vendor the site sent requests to, and where",
|
|
191
144
|
vendorCol: "Vendor",
|
|
192
145
|
partyCol: "Party",
|
|
193
146
|
pagesCol: "Pages",
|
|
194
147
|
cookiesCol: "Cookies",
|
|
195
148
|
party: { first: "First party", third: "Third party", both: "Both" },
|
|
196
|
-
morePages: (n) => `+${n} more`,
|
|
197
149
|
otherCookies: "Other cookies",
|
|
198
150
|
noInventory: "No vendor requests were recorded.",
|
|
199
151
|
provider: "Provider",
|
|
200
|
-
requestsCol: "Requests",
|
|
201
152
|
checked: "Checked",
|
|
202
153
|
outOfScopeStatus: "Out of scope",
|
|
203
154
|
missing: "missing",
|
|
204
155
|
requestTo: (p) => `${p} request`,
|
|
205
156
|
by: "by",
|
|
206
157
|
credit: (atd) => `This report was made with the open source ${atd}.`,
|
|
207
|
-
timelineLeadV2: "Every step has three tabs: the events it sent, its dataLayer pushes and its network requests. Events and requests can be filtered by source. Steps with problems are open.",
|
|
208
158
|
// The run history (src/history.js): the trend lines after a run, in the alert and in `aitd history`.
|
|
209
159
|
history: {
|
|
210
160
|
noRuns: "No saved run for this site yet. Run `aitd run` first; the trend starts with the second run.",
|
|
@@ -502,34 +452,23 @@ const en = {
|
|
|
502
452
|
themeLight: "Theme: light",
|
|
503
453
|
themeDark: "Theme: dark",
|
|
504
454
|
newTab: "opens in a new tab",
|
|
505
|
-
ownerSplit: (parts) => `${parts.join(", ")}.`,
|
|
506
|
-
forOwner: { developer: (n) => `${n} for the developer`, gtm: (n) => `${n} for Tag Manager`, marketing: (n) => `${n} for marketing` },
|
|
507
455
|
aiSummary: "AI summary",
|
|
508
456
|
platformsChecked: "Platforms checked",
|
|
509
457
|
campaignCheck: "Campaign check",
|
|
510
|
-
campaignChecked: "UTM, gclid and fbclid on the landing page",
|
|
511
|
-
consentModeOn: "consent mode on",
|
|
512
458
|
consentModeSeen: "Consent Mode commands seen",
|
|
513
459
|
cmpBanner: "banner",
|
|
514
460
|
scenariosRun: (n) => `${n} ${n === 1 ? "scenario" : "scenarios"}`,
|
|
515
461
|
runsAllCompleted: (n) => `${n} ${n === 1 ? "run" : "runs"}, all completed`,
|
|
516
462
|
runsCompleted: (done, n) => `${done} of ${n} runs completed`,
|
|
517
|
-
fixFirst: "What to fix first",
|
|
518
|
-
fixFirstLead: "Grouped by who fixes it, most points first. Each line opens its finding.",
|
|
519
|
-
pointsToRecover: (n) => `+${n} points when fixed`,
|
|
520
|
-
nothingFor: (owner) => `Nothing for ${owner} in this run.`,
|
|
521
463
|
moreInFindings: (n) => `${n} more in Findings →`,
|
|
522
464
|
working: "What is working",
|
|
523
465
|
whatWasChecked: "What was checked",
|
|
524
466
|
nothingVerified: "Nothing was verified in this run.",
|
|
525
|
-
coverageVerified: (done, total, pct) => `${done} of ${total} planned events verified${pct === null ? "" : ` (${pct}%)`}.`,
|
|
526
467
|
allRuns: (n) => `all ${n} runs`,
|
|
527
468
|
onlyOn: (places) => `${places.join(", ")} only`,
|
|
528
|
-
journeysLead: "Steps walked, hits captured and the problem cards that point at each run.",
|
|
529
469
|
viewport: "Viewport",
|
|
530
470
|
hitsCol: "Hits",
|
|
531
471
|
trend: "Trend",
|
|
532
|
-
trendLead: "Problem counts over the saved runs, oldest left. A hollow point is a run where a journey did not finish.",
|
|
533
472
|
trendDirection: { improving: "Improving", worsening: "Getting worse", flat: "No change" },
|
|
534
473
|
trendSpan: (n, first, last) => `over ${n} runs, ${first} to ${last}`,
|
|
535
474
|
runIncomplete: "a journey did not finish",
|
|
@@ -538,10 +477,6 @@ const en = {
|
|
|
538
477
|
openLongest: "Open longest",
|
|
539
478
|
openSince: (date, runs, places) => `open since ${date} · ${runs} ${runs === 1 ? "run" : "runs"} · ${places} ${places === 1 ? "place" : "places"}`,
|
|
540
479
|
score: "Data quality score",
|
|
541
|
-
scoreLead: "100 minus 15 per broken problem, 10 per risk and 5 per warning, doubled on a conversion event.",
|
|
542
|
-
scoreLost: (n) => `${n} points lost`,
|
|
543
|
-
findingsLead: "Open a finding for its evidence, where it happened and how to verify the fix.",
|
|
544
|
-
okInOverview: (n) => `${n} OK ${n === 1 ? "result is" : "results are"} listed in the overview.`,
|
|
545
480
|
noModel: "No model explanation in this run. The evidence, owner and verify links below do not need one.",
|
|
546
481
|
accepted: "Accepted",
|
|
547
482
|
acceptedNote: "This finding is in the baseline: it is known and does not count against the run.",
|
|
@@ -550,44 +485,28 @@ const en = {
|
|
|
550
485
|
findingLink: "Finding →",
|
|
551
486
|
consentMode: "Consent Mode",
|
|
552
487
|
consentTiming: (ms, before, v2, missing) => `Default set ${ms === null ? "on the first page" : `${Math.round(ms)} ms into the first page`}${before === null ? "" : before ? ", before the first Google hit" : ", after the first Google hit"} · v2 signals ${v2 ? "present" : `missing: ${missing.join(", ")}`}.`,
|
|
553
|
-
consentNoDefault: "No Consent Mode default was pushed on this journey.",
|
|
554
|
-
consentResent: (n) => `The default and the update are re-sent on ${n} more ${n === 1 ? "page load" : "page loads"}, so the stored choice is restored each time.`,
|
|
555
|
-
consentOnHit: "Consent on this hit:",
|
|
556
|
-
scenariosLead: (cmp) => `The home page was opened once per consent choice, answered through ${cmp === "banner" ? "the banner's buttons" : cmp}. Each cell is how many hits the tag sent after that choice.`,
|
|
557
|
-
scenariosLegend: "A marked number is data the visitor had refused. \"cookieless\" is a Consent Mode ping with storage denied, which is allowed.",
|
|
558
488
|
cellCookieless: "cookieless",
|
|
559
489
|
cellAdDenied: "ad storage denied",
|
|
560
490
|
cellWithCookies: "with cookies",
|
|
561
491
|
cellProblem: "problem:",
|
|
562
492
|
cellShouldNot: "should not have been sent",
|
|
563
|
-
stepsTitle: "Steps and the hits each one sent",
|
|
564
|
-
stepsLead: "Open a row for the parameters, the dataLayer pushes and the requests. Rows with a finding are open.",
|
|
565
|
-
stepCol: "Step",
|
|
566
493
|
timeCol: "Time",
|
|
567
|
-
hasFinding: (sev) => `has a ${sev.toLowerCase()} finding`,
|
|
568
|
-
stepDetails: (hits, pushes) => `Details · ${hits} ${hits === 1 ? "hit" : "hits"} · ${pushes} dataLayer`,
|
|
569
494
|
hitsInStep: "Hits in this step",
|
|
570
495
|
blockedBy: (platform) => `blocked by the audit: answered locally, never reached ${platform}`,
|
|
571
496
|
problems: (n) => `${n} ${n === 1 ? "problem" : "problems"}`,
|
|
572
497
|
funnel: "Expected vs observed",
|
|
573
498
|
funnelLead: (observed, expected, ok) => `${observed} of ${expected} expected events fired, ${ok} with every required parameter.`,
|
|
574
|
-
funnelBreaks: (event) => `The funnel breaks at ${event}.`,
|
|
575
499
|
conversion: "conversion",
|
|
576
500
|
sent: "sent",
|
|
577
501
|
notSent: "not sent",
|
|
578
|
-
firstAt: "First at",
|
|
579
502
|
page: "Page",
|
|
580
503
|
params: (list) => `without ${list.join(", ")}`,
|
|
581
504
|
paramsShort: "params",
|
|
582
505
|
parity: "Platform parity",
|
|
583
|
-
parityLead: "The same event on two platforms, and what differs between them.",
|
|
584
506
|
perPlatform: "Per platform",
|
|
585
|
-
difference: "Difference",
|
|
586
507
|
agree: "agree",
|
|
587
508
|
mismatch: { count: "count differs", value: "value differs", currency: "currency differs", value_missing: "value on one side only" },
|
|
588
|
-
onlyOnPlatform: "Only on one platform:",
|
|
589
509
|
detailsCol: "Details",
|
|
590
|
-
coverageLegend: "✓ sent with its parameters · params: sent without required parameters · ✗ not sent · – not expected on this journey",
|
|
591
510
|
needs: (list) => `needs ${list.join(", ")}`,
|
|
592
511
|
notExpected: "not expected",
|
|
593
512
|
conversions: "Conversion integrity",
|
|
@@ -598,15 +517,204 @@ const en = {
|
|
|
598
517
|
pass: "pass",
|
|
599
518
|
fail: "fail",
|
|
600
519
|
notApplicable: "not applicable",
|
|
601
|
-
seenOn: "Seen on",
|
|
602
520
|
checkedNotSeen: "Checked, not seen",
|
|
603
521
|
neverSeen: (list) => `Checked but never seen: ${list}. No request reached them on any page.`,
|
|
604
522
|
timing: "Timing",
|
|
605
|
-
timingLead: "How long each run took and how far behind each step its first hit came. Includes the audit's own waiting time.",
|
|
606
523
|
duration: "Duration",
|
|
607
524
|
medianFirstHit: "Median first hit",
|
|
608
525
|
slowestHit: "Slowest hit",
|
|
609
526
|
planChanges: "Plan changes",
|
|
527
|
+
|
|
528
|
+
// ---- html.shell: top bar, rail, section tools and footer of src/html/shell.js ----
|
|
529
|
+
shell: {
|
|
530
|
+
skip: "Skip to the report",
|
|
531
|
+
eyebrow: "Tracking audit",
|
|
532
|
+
heading: (site) => `Tracking audit of ${site}`,
|
|
533
|
+
railLabel: "Report sections",
|
|
534
|
+
sections: { summary: "Summary", findings: "Findings", journeys: "Journeys", consent: "Consent", coverage: "Coverage", inventory: "Inventory", run: "Run" },
|
|
535
|
+
railTip: (label, token) => `${label} · ${token}`,
|
|
536
|
+
collapse: "Collapse sidebar",
|
|
537
|
+
expand: "Expand sidebar",
|
|
538
|
+
expandAll: "Expand all",
|
|
539
|
+
collapseAll: "Collapse all",
|
|
540
|
+
clear: "Clear",
|
|
541
|
+
filterCount: (shown, total) => `${shown} of ${total}`,
|
|
542
|
+
score: "Score",
|
|
543
|
+
outOf: "/100",
|
|
544
|
+
scoreLabel: (score, verdict) => `Score ${score} of 100, verdict ${verdict}`,
|
|
545
|
+
noScore: (verdict) => `No score, verdict ${verdict}`,
|
|
546
|
+
themeAuto: "Theme: follows your system",
|
|
547
|
+
themeLight: "Theme: light",
|
|
548
|
+
themeDark: "Theme: dark",
|
|
549
|
+
},
|
|
550
|
+
// ---- end of html.shell ----
|
|
551
|
+
|
|
552
|
+
// ---- html.summary: strings of src/html/summary.js, edited only by its builder ----
|
|
553
|
+
summary: {
|
|
554
|
+
about: "About this run",
|
|
555
|
+
events: "Events checked",
|
|
556
|
+
noPlan: "No measurement plan given",
|
|
557
|
+
plannedSeen: (planned, seen) => `${planned} <small>planned</small> · ${seen} <small>seen</small>`,
|
|
558
|
+
withParams: (percent) => `${percent}% with required parameters`,
|
|
559
|
+
seen: "seen",
|
|
560
|
+
notSeen: "not seen",
|
|
561
|
+
seenOf: (seen, total) => `${seen} of ${total} seen`,
|
|
562
|
+
noRuns: "No journey ran",
|
|
563
|
+
runState: { completed: "completed", incomplete: "incomplete" },
|
|
564
|
+
steps: (n) => `${n} ${n === 1 ? "step" : "steps"}`,
|
|
565
|
+
hits: (n) => `${n} ${n === 1 ? "hit" : "hits"}`,
|
|
566
|
+
problems: (n) => `${n} ${n === 1 ? "problem" : "problems"}`,
|
|
567
|
+
completedOf: (done, total) => `${done} of ${total} completed`,
|
|
568
|
+
stoppedAt: (step) => `stopped at step ${step}`,
|
|
569
|
+
// chip is HTML (the consent state chip, with its leading space); range is "27–53" or null when no timing was seen.
|
|
570
|
+
defaultAt: (chip, range) => `Default${chip}${range === null ? "" : ` <small>at ${range} ms</small>`}`,
|
|
571
|
+
noDefault: "No default seen",
|
|
572
|
+
mixed: "mixed",
|
|
573
|
+
noBanner: "No banner found",
|
|
574
|
+
bannerNotReached: "Banner not reached",
|
|
575
|
+
scripted: "Scripted, no model",
|
|
576
|
+
deterministic: "Deterministic checks only",
|
|
577
|
+
explains: "Explains causes and fixes",
|
|
578
|
+
seconds: (s) => `${s} s`,
|
|
579
|
+
runs: (n) => `${n} ${n === 1 ? "run" : "runs"}`,
|
|
580
|
+
more: (n) => `${n} more`,
|
|
581
|
+
moreInFindings: (n) => `${n} more in Findings`,
|
|
582
|
+
// The score's cost lines; event and params arrive as HTML (<code>).
|
|
583
|
+
cost: {
|
|
584
|
+
missingParams: (event, params) => `${event} sent without ${params}`,
|
|
585
|
+
missingParamsAny: (event) => `${event} sent without its required parameters`,
|
|
586
|
+
beforeConsent: (event) => `${event} sent before consent`,
|
|
587
|
+
afterReject: (event) => `${event} sent after reject all`,
|
|
588
|
+
duplicate: (event, n) => (n ? `${event} sent ${n} times per click` : `${event} sent more than once per click`),
|
|
589
|
+
missingEvent: (event) => `${event} never sent`,
|
|
590
|
+
stopped: (step, runs) => (step === null ? "Journeys stopped early" : `${runs === 1 ? "Journey" : "Journeys"} stopped at step ${step}`),
|
|
591
|
+
noConsentDefault: "No Consent Mode default",
|
|
592
|
+
},
|
|
593
|
+
},
|
|
594
|
+
// ---- end of html.summary ----
|
|
595
|
+
|
|
596
|
+
// ---- html.findings: strings of src/html/findings.js, edited only by its builder ----
|
|
597
|
+
findings: {
|
|
598
|
+
severity: "Severity",
|
|
599
|
+
filterLabel: "Filter findings",
|
|
600
|
+
search: "Search",
|
|
601
|
+
searchLabel: "Search findings: event, parameter, page",
|
|
602
|
+
filters: "Filters",
|
|
603
|
+
groups: { failed: "Failed", unverified: "Unverified", passed: "Passed" },
|
|
604
|
+
empty: "No finding matches these filters.",
|
|
605
|
+
details: (title) => `${title}: details`,
|
|
606
|
+
runs: (n) => `${n} runs`,
|
|
607
|
+
showWhere: "Show where",
|
|
608
|
+
// Short row titles, at most eight words; event and parameter names are quoted and shown as code.
|
|
609
|
+
title: {
|
|
610
|
+
missing_params: (event, params) => `${q(event)} was sent without ${andList(sortParams(params).map(q), "and")}`,
|
|
611
|
+
duplicate: (event, n) => `${q(event)} was sent ${n} times per action`,
|
|
612
|
+
before_consent: (event) => `${q(event)} was sent before the consent choice`,
|
|
613
|
+
after_reject: (event) => `${q(event)} was still sent after Reject all`,
|
|
614
|
+
missing_event: (event) => `${q(event)} was not sent`,
|
|
615
|
+
consent_default_missing: () => "No Consent Mode default was set",
|
|
616
|
+
journey_incomplete: (step) => (step === null ? "The journey did not finish" : `The journey stopped at step ${step}`),
|
|
617
|
+
},
|
|
618
|
+
notReached: "not reached",
|
|
619
|
+
passed: {
|
|
620
|
+
campaign: "Campaign parameters survived the redirect",
|
|
621
|
+
coverage: (done, total, percent) => `${done} of ${total} planned events complete${percent === null ? "" : ` (${percent}%)`}`,
|
|
622
|
+
consentDefault: (onTime) => (onTime ? "Consent Mode default set before the first Google hit" : "Consent Mode default set"),
|
|
623
|
+
conversion: (event, amount) => `${q(event)} carried ${amount}`,
|
|
624
|
+
},
|
|
625
|
+
fineOn: (place, amount) => `Fine on ${place}${amount ? `: ${amount}` : ""}`,
|
|
626
|
+
pushLacks: (params) => `The dataLayer push already lacks ${andList(sortParams(params).map(q), "and")}.`,
|
|
627
|
+
pushCarries: "The dataLayer push carries them; the tag drops them.",
|
|
628
|
+
pushRaw: "dataLayer push",
|
|
629
|
+
perAction: (n) => `${n} ${n === 1 ? "time" : "times"} per action`,
|
|
630
|
+
noSignal: "no signal",
|
|
631
|
+
stillSent: "still sent",
|
|
632
|
+
stopped: "stopped",
|
|
633
|
+
stoppedAt: "Stopped at",
|
|
634
|
+
error: "Error",
|
|
635
|
+
defaultIn: (present, total) => `default in ${present} of ${total} runs`,
|
|
636
|
+
replay: "Replay",
|
|
637
|
+
ai: "The model's explanation",
|
|
638
|
+
noModel: "No model explanation in this run.",
|
|
639
|
+
},
|
|
640
|
+
// ---- end of html.findings ----
|
|
641
|
+
|
|
642
|
+
// ---- html.journeys: strings of src/html/journeys.js, edited only by its builder ----
|
|
643
|
+
journeys: {
|
|
644
|
+
steps: "Steps",
|
|
645
|
+
pickViewport: "Viewport",
|
|
646
|
+
dataLayer: "Data Layer",
|
|
647
|
+
startStep: "Before the first step",
|
|
648
|
+
stats: (steps, hits, secs) => `${steps} ${steps === 1 ? "step" : "steps"} · ${hits} ${hits === 1 ? "hit" : "hits"}${secs === null ? "" : ` · ${secs} s`}`,
|
|
649
|
+
noRuns: "No journey was run.",
|
|
650
|
+
nothing: "Nothing was sent in this step.",
|
|
651
|
+
noSignal: "no signal",
|
|
652
|
+
noSignalTitle: "No consent signal on this hit",
|
|
653
|
+
signals: { ad_storage: "ad", analytics_storage: "an", ad_user_data: "ud", ad_personalization: "ap" },
|
|
654
|
+
blocked: "blocked",
|
|
655
|
+
clear: "clear",
|
|
656
|
+
colUrl: "URL",
|
|
657
|
+
colId: "ID",
|
|
658
|
+
colName: "Name",
|
|
659
|
+
colPrice: "Price",
|
|
660
|
+
colQty: "Qty",
|
|
661
|
+
itemMore: "Item parameters",
|
|
662
|
+
hitsOf: (count, platform) => `${count} ${platform} ${count === 1 ? "hit" : "hits"}`,
|
|
663
|
+
stepOf: (i) => `Step ${i}`,
|
|
664
|
+
},
|
|
665
|
+
// ---- end of html.journeys ----
|
|
666
|
+
|
|
667
|
+
// ---- html.consent: strings of src/html/consent.js, edited only by its builder ----
|
|
668
|
+
consent: {
|
|
669
|
+
statusLabel: "Consent status per platform",
|
|
670
|
+
cols: { before: "No choice", accept: "Accept", reject: "Reject", analytics: "Analytics only" },
|
|
671
|
+
state: { denied: "denied", granted: "granted", none: "no signal" },
|
|
672
|
+
tally: (n, state) => `${n} · ${state}`,
|
|
673
|
+
scenarios: "Scenarios",
|
|
674
|
+
notSupported: "not supported",
|
|
675
|
+
sent: "Sent",
|
|
676
|
+
problems: (n) => `${n} ${n === 1 ? "problem" : "problems"}`,
|
|
677
|
+
noProblems: "No problems",
|
|
678
|
+
defaultFirst: "Default first",
|
|
679
|
+
defaultLate: "Default late",
|
|
680
|
+
noDefault: "No default",
|
|
681
|
+
v2: "v2",
|
|
682
|
+
v2Missing: "v2 missing",
|
|
683
|
+
timing: (lo, hi) => (lo === hi ? `${lo} ms` : `${lo}–${hi} ms`),
|
|
684
|
+
runsWith: (k, n) => (k === n ? `${n} ${n === 1 ? "run" : "runs"}` : `${k} of ${n} runs`),
|
|
685
|
+
resent: (n) => `Sent again on ${n} more page ${n === 1 ? "load" : "loads"}`,
|
|
686
|
+
},
|
|
687
|
+
// ---- end of html.consent ----
|
|
688
|
+
|
|
689
|
+
// ---- html.scope: strings of src/html/scope.js, edited only by its builder ----
|
|
690
|
+
scope: {
|
|
691
|
+
ofEvents: (n, total) => `${n} of ${total}`,
|
|
692
|
+
problemPoints: "Problem points",
|
|
693
|
+
barLabel: (ok, params, missing) => `${ok} complete, ${params} with a missing parameter, ${missing} not sent`,
|
|
694
|
+
missingParams: (n) => `${n} missing params`,
|
|
695
|
+
notSentCount: (n) => `${n} not sent`,
|
|
696
|
+
notCheckedCount: (n) => `${n} not checked`,
|
|
697
|
+
searchEvents: "Search events",
|
|
698
|
+
needs: "Needs",
|
|
699
|
+
keyOk: "sent with its parameters",
|
|
700
|
+
keyParams: "a required parameter is missing",
|
|
701
|
+
keyMissing: "never sent",
|
|
702
|
+
keyNotExpected: "not expected on this journey",
|
|
703
|
+
purchasesPass: (n, total) => `${n} of ${total} pass`,
|
|
704
|
+
purchasesFail: (n) => `${n} fail`,
|
|
705
|
+
seen: "Seen",
|
|
706
|
+
hosts: "Hosts",
|
|
707
|
+
noneSeen: "None seen",
|
|
708
|
+
requests: (n, num = n) => `${num} ${n === 1 ? "request" : "requests"}`,
|
|
709
|
+
pages: (n, num = n) => `${num} ${n === 1 ? "page" : "pages"}`,
|
|
710
|
+
cookies: (n, num = n) => `${num} ${n === 1 ? "cookie" : "cookies"}`,
|
|
711
|
+
generated: "Generated",
|
|
712
|
+
runs: "Runs",
|
|
713
|
+
files: "Files",
|
|
714
|
+
firstHit: (range) => `first hit ${range} ms`,
|
|
715
|
+
runCol: "Run",
|
|
716
|
+
},
|
|
717
|
+
// ---- end of html.scope ----
|
|
610
718
|
},
|
|
611
719
|
};
|
|
612
720
|
|
|
@@ -620,18 +728,11 @@ const tr = {
|
|
|
620
728
|
eyebrow: "Yapay zekâ ile izleme denetimi",
|
|
621
729
|
paramsShort: "parametre",
|
|
622
730
|
noParameters: "Parametre yok.",
|
|
623
|
-
pushMatchHint: "Bu adımda aynı olay adına sahip dataLayer gönderimleri.",
|
|
624
731
|
noMatchingPush: "Bu adımda bu olay adıyla bir dataLayer gönderimi yok. Etiket bir sayfa görüntüleme, tıklama tetikleyicisi ya da sayfaya gömülü bir pikselden tetikleniyor olabilir.",
|
|
625
|
-
otherInStep: "Diğer dataLayer gönderimleri ve ağ çağrıları",
|
|
626
732
|
noHits: "İzleme olayı yok",
|
|
627
|
-
hasProblems: "Sorun var",
|
|
628
|
-
stepsShort: "adım",
|
|
629
|
-
eventsShort: "olay",
|
|
630
|
-
problemsShort: "sorun",
|
|
631
733
|
findings: "Bulgular",
|
|
632
734
|
what: "Ne",
|
|
633
735
|
where: "Nerede",
|
|
634
|
-
causeAndFix: "Neden ve çözüm",
|
|
635
736
|
likelyCause: "Olası neden",
|
|
636
737
|
gtmTags: "GTM container'ınızda",
|
|
637
738
|
gtmNoTag: "Container dışa aktarımındaki hiçbir etiket bu olayı göndermiyor.",
|
|
@@ -645,14 +746,10 @@ const tr = {
|
|
|
645
746
|
fix: "Çözüm",
|
|
646
747
|
captured: "Yakalanan",
|
|
647
748
|
noProblems: "Sorun bulunamadı.",
|
|
648
|
-
noExplanation: "Bu çalıştırmada model açıklaması yok. Aşağıdaki etki, sorumlu ve çözüm bilgileri için gerekmiyor.",
|
|
649
|
-
matchingPlan: "Plana uygun olanlar",
|
|
650
749
|
timeline: "Yolculuklar ve olay zaman çizelgesi",
|
|
651
|
-
timelineLead: "Her yolculuğun her adımı. Olaylar platforma göre gruplanır; bir olayı açınca parametrelerini, arkasındaki dataLayer gönderimini ve onu taşıyan ağ isteğini görürsünüz. Sorunlu adımlar açık gösterilir.",
|
|
652
750
|
completed: "Tamamlandı",
|
|
653
751
|
notCompleted: "Tamamlanmadı",
|
|
654
752
|
step: "adım",
|
|
655
|
-
trackingHits: "İzleme istekleri",
|
|
656
753
|
dataLayer: "dataLayer gönderimleri",
|
|
657
754
|
network: "Ağ çağrıları",
|
|
658
755
|
platform: "Platform",
|
|
@@ -662,8 +759,6 @@ const tr = {
|
|
|
662
759
|
method: "Metot",
|
|
663
760
|
status: "Durum",
|
|
664
761
|
vendor: "Sağlayıcı",
|
|
665
|
-
blockedNote: "bu denetim engelledi: yerel olarak yanıtlandı, sağlayıcıya hiç ulaşmadı",
|
|
666
|
-
blockedNoteVendor: (vendor) => `bu denetim engelledi: yerel olarak yanıtlandı, ${vendor} platformuna hiç ulaşmadı`,
|
|
667
762
|
clickedThrough: "üstündeki bir öğeye rağmen tıklandı",
|
|
668
763
|
generatedBy: "AI Tag Debugger ile oluşturuldu",
|
|
669
764
|
nothing: "Yok",
|
|
@@ -672,48 +767,31 @@ const tr = {
|
|
|
672
767
|
acceptedLine: (n) => `Temel dosyada kabul edilen ${n} bulgu sayılmadı`,
|
|
673
768
|
whereStep: (journey, viewport, step) => `${journey} (${viewport})${step ? `, "${step}" adımı` : ""}`,
|
|
674
769
|
allGood: "Test edilen tüm yolculuklarda plandaki tüm olaylar doğru çalıştı.",
|
|
675
|
-
tabEvents: "Olaylar",
|
|
676
|
-
tabTimeline: "Zaman çizelgesi",
|
|
677
|
-
timelineGtmEvent: "GTM olayı",
|
|
678
|
-
timelineConsent: "İzin komutu",
|
|
679
|
-
timelineNoEvent: "GTM olayı yok (yalnızca veri)",
|
|
680
|
-
timelineNoHits: "Bu gönderimin ardından platform isteği gelmedi.",
|
|
681
|
-
timelineOther: "dataLayer gönderimi olmayan istekler",
|
|
682
770
|
bodyDropped: "İstek gövdesi saklanmadı: bu denetim, saklanan istek gövdeleri için 2 MB sınırına ulaştı.",
|
|
683
771
|
tabNetwork: "Ağ istekleri",
|
|
684
|
-
filterBy: "Kaynağa göre filtrele",
|
|
685
772
|
all: "Tümü",
|
|
686
773
|
items: "Ürünler",
|
|
687
774
|
customItemParams: "Özel ürün parametreleri",
|
|
688
|
-
itemsCount: (n) => `${n} ürün`,
|
|
689
775
|
noItems: "ürün yok",
|
|
690
776
|
serverSideTag: "sunucu tarafı",
|
|
691
777
|
source: "Kaynak",
|
|
692
778
|
request: "İstek",
|
|
693
|
-
noRequest: "Eşleşen istek yok",
|
|
694
779
|
noPushes: "Bu adımda dataLayer gönderimi yok.",
|
|
695
780
|
noRequests: "Bu adımda seçilen sağlayıcılara istek yok.",
|
|
696
781
|
eventParams: "Olay parametreleri",
|
|
697
782
|
contextParams: "Oturum, cihaz, sayfa ve onay parametreleri",
|
|
698
783
|
rawRequest: "Ham istek",
|
|
699
|
-
rawJson: "Ham JSON",
|
|
700
784
|
inBatch: (i, n) => `tek istekte ${n} olaydan ${i}.`,
|
|
701
785
|
impact: "Etkisi",
|
|
702
786
|
evidence: "Kanıt",
|
|
703
787
|
fixSteps: "Çözüm",
|
|
704
788
|
verify: "Nasıl doğrulanır",
|
|
705
789
|
owners: { developer: "Yazılımcı", gtm: "Tag Manager", marketing: "Pazarlama" },
|
|
706
|
-
ownerHint: { developer: "Site kodu ve dataLayer", gtm: "Etiketler, tetikleyiciler ve onay ayarları", marketing: "Ölçüm planı" },
|
|
707
790
|
places: (n) => `${n} yer`,
|
|
708
791
|
alsoCheck: "Bulgu listesinde olmayan, ama kontrol edilmesi gerekenler",
|
|
709
|
-
providersChecked: "Kontrol edilen sağlayıcılar:",
|
|
710
|
-
outOfScope: (list, n) => `Kapsam dışı: ${list} (${n} istek atlandı)`,
|
|
711
792
|
skippedInStep: (list, n) => `Yalnızca seçilen sağlayıcıların istekleri gösterilir. Bu adımda kapsam dışı ${n} istek atlandı: ${list}.`,
|
|
712
|
-
tabOverview: "Genel bakış",
|
|
713
793
|
tabJourneys: "Yolculuklar",
|
|
714
|
-
tabScope: "Kapsam ve plan",
|
|
715
794
|
sections: "Rapor bölümleri",
|
|
716
|
-
headerMeta: (journeys, providers) => `${journeys} yolculuk · ${providers} sağlayıcı`,
|
|
717
795
|
checkedAgainst: (id) => `${id} planına göre kontrol edildi`,
|
|
718
796
|
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`),
|
|
719
797
|
planVsSite: "Plan ve site",
|
|
@@ -721,22 +799,15 @@ const tr = {
|
|
|
721
799
|
changesLead: (id, mode) => `${id} çalıştırmasıyla ${mode === "plan" ? "plan kapsamına" : "sağlık bulgularına"} göre karşılaştırıldı`,
|
|
722
800
|
changesLine: (ch) => ch.fixed.length || ch.new.length ? [ch.fixed.length ? `${ch.fixed.length} ${ch.mode === "plan" ? "olay" : "sorun"} düzeldi` : "", ch.new.length ? `${ch.new.length} yeni sorun` : ""].filter(Boolean).join(", ") : "Son çalıştırmadan bu yana değişiklik yok",
|
|
723
801
|
changeFixed: "Düzeldi",
|
|
724
|
-
changeWas: (what) => `önceki durum: ${what}`,
|
|
725
802
|
changeNew: "Yeni",
|
|
726
803
|
noSavedRun: "Bu site için henüz kayıtlı çalıştırma yok. Önce `aitd run` çalıştırın; her çalıştırma bir öncekiyle karşılaştırılır.",
|
|
727
804
|
routeChanged: (list) => `Yapay zeka siteyi son çalıştırmadan farklı bir yoldan gezdi: ${list}`,
|
|
728
805
|
noPreviousRun: "Bu site için kayıtlı ilk çalıştırma bu, karşılaştırılacak bir şey henüz yok.",
|
|
729
|
-
planVsSiteLead: "Plandaki her olay ve sitenin gerçekte gönderdiği",
|
|
730
806
|
coverageLine: (c) => `Kapsam ${c.checkable} olaydan ${c.implemented}${c.percent === null ? "" : ` (%${c.percent})`}${c.not_checked ? `, ${c.not_checked} olay kontrol edilmedi` : ""}`,
|
|
731
807
|
bucket: { implemented: "Uygulanmış", missing: "Eksik", missing_params: "Eksik parametre", wrong_values: "Hatalı değer", unplanned: "Planda yok", not_checked: "Kontrol edilmedi" },
|
|
732
808
|
bucketCol: "Sonuç",
|
|
733
|
-
summaryLead: "Yapay zekâ özeti, öncelik sırasıyla",
|
|
734
|
-
noSummary: "Bu çalıştırmada model özeti yok. Karar ve aşağıdaki bulgular tek başına yeterli.",
|
|
735
|
-
seeAllFindings: "Tüm bulguları gör →",
|
|
736
809
|
journey: "Yolculuk",
|
|
737
810
|
stepsCol: "Adım",
|
|
738
|
-
problemsCol: "Sorun",
|
|
739
|
-
scopeCard: "Kapsam",
|
|
740
811
|
site: "Site",
|
|
741
812
|
runCard: "Bu çalıştırma",
|
|
742
813
|
runPlatforms: "Platformlar",
|
|
@@ -754,45 +825,32 @@ const tr = {
|
|
|
754
825
|
junitSite: "site",
|
|
755
826
|
consentDefault: "Varsayılan",
|
|
756
827
|
consentUpdate: "Güncelleme",
|
|
757
|
-
consentLead: "Sitenin gönderdiği Consent Mode komutları, sırasıyla.",
|
|
758
|
-
consentNone: "Site bu yolculukta Consent Mode komutu göndermedi.",
|
|
759
828
|
scenarios: "Onay senaryoları",
|
|
760
|
-
scenariosLead: (cmp) => `Ana sayfa her onay seçimi için bir kez açıldı; seçim ${cmp === "banner" ? "banner düğmeleriyle" : `${cmp} üzerinden`} yapıldı. Her hücre, etiketin o seçimden sonra gönderdiği istek sayısıdır. Kırmızı sayı, ziyaretçinin reddettiği veridir.`,
|
|
761
829
|
scenarioCols: { before: "Henüz seçim yok", accept: "Tümünü kabul", reject: "Tümünü reddet", analytics: "Yalnızca analitik" },
|
|
762
830
|
scenarioNotRun: "Burada desteklenmiyor",
|
|
763
831
|
scenarioTag: "Etiket",
|
|
764
832
|
skippedLine: (list, n) => `Kapsam dışı ${n} istek atlandı: ${list}.`,
|
|
765
|
-
findingHint: "Bir bulguyu açınca olası neden, kanıt ve çözüm adımları görünür.",
|
|
766
|
-
spread: (j, s) => `${j} yolculuk${s ? ` · ${s} adım` : ""}`,
|
|
767
833
|
chooseJourney: "Yolculuk seç",
|
|
768
|
-
stepsNav: "Adımlar",
|
|
769
|
-
stepMeta: (t, events, pushes, skipped) => `${t} · ${events} olay · ${pushes} dataLayer${skipped ? ` · kapsam dışı ${skipped} istek atlandı` : ""}`,
|
|
770
834
|
noSteps: "Bu yolculukta adım yok.",
|
|
771
835
|
planCoverage: "Ölçüm planı kapsamı",
|
|
772
|
-
planCoverageLead: "Plandaki her olayın her yolculukta gönderilip gönderilmediği",
|
|
773
|
-
coverageLegend: "✓ gönderildi · ✗ gönderilmedi · – bu yolculukta beklenmiyor",
|
|
774
836
|
notChecked: "kontrol edilmedi",
|
|
775
837
|
noPlan: "Ölçüm planı verilmediği için karşılaştırılacak bir şey yok.",
|
|
776
838
|
providers: "Sağlayıcılar",
|
|
777
839
|
inventoryTitle: "Etiket envanteri",
|
|
778
|
-
inventoryLead: "Sitenin istek gönderdiği tüm sağlayıcılar ve hangi sayfalarda",
|
|
779
840
|
vendorCol: "Sağlayıcı",
|
|
780
841
|
partyCol: "Taraf",
|
|
781
842
|
pagesCol: "Sayfalar",
|
|
782
843
|
cookiesCol: "Çerezler",
|
|
783
844
|
party: { first: "Birinci taraf", third: "Üçüncü taraf", both: "İkisi de" },
|
|
784
|
-
morePages: (n) => `+${n} daha`,
|
|
785
845
|
otherCookies: "Diğer çerezler",
|
|
786
846
|
noInventory: "Sağlayıcıya giden istek kaydedilmedi.",
|
|
787
847
|
provider: "Sağlayıcı",
|
|
788
|
-
requestsCol: "İstek",
|
|
789
848
|
checked: "Kontrol edildi",
|
|
790
849
|
outOfScopeStatus: "Kapsam dışı",
|
|
791
850
|
missing: "yok",
|
|
792
851
|
requestTo: (p) => `${p} isteği`,
|
|
793
852
|
by: "by",
|
|
794
853
|
credit: (atd) => `Bu rapor açık kaynak ${atd} ile oluşturuldu.`,
|
|
795
|
-
timelineLeadV2: "Her adımda üç sekme var: o adımda gönderilen olaylar, dataLayer gönderimleri ve ağ istekleri. Olayları ve istekleri kaynağa göre filtreleyebilirsiniz. Sorunlu adımlar açık gösterilir.",
|
|
796
854
|
history: {
|
|
797
855
|
noRuns: "Bu site için henüz kayıtlı çalıştırma yok. Önce `aitd run` çalıştırın; eğilim ikinci çalıştırmayla başlar.",
|
|
798
856
|
oneRun: (id) => `Tek kayıtlı çalıştırma var (${id}); eğilim bir sonrakiyle başlar.`,
|
|
@@ -1080,34 +1138,23 @@ const tr = {
|
|
|
1080
1138
|
themeLight: "Tema: açık",
|
|
1081
1139
|
themeDark: "Tema: koyu",
|
|
1082
1140
|
newTab: "yeni sekmede açılır",
|
|
1083
|
-
ownerSplit: (parts) => `${parts.join(", ")}.`,
|
|
1084
|
-
forOwner: { developer: (n) => `geliştirici için ${n}`, gtm: (n) => `Tag Manager için ${n}`, marketing: (n) => `pazarlama için ${n}` },
|
|
1085
1141
|
aiSummary: "Yapay zekâ özeti",
|
|
1086
1142
|
platformsChecked: "Kontrol edilen platformlar",
|
|
1087
1143
|
campaignCheck: "Kampanya kontrolü",
|
|
1088
|
-
campaignChecked: "Açılış sayfasında UTM, gclid ve fbclid",
|
|
1089
|
-
consentModeOn: "consent mode açık",
|
|
1090
1144
|
consentModeSeen: "Consent Mode komutları görüldü",
|
|
1091
1145
|
cmpBanner: "banner",
|
|
1092
1146
|
scenariosRun: (n) => `${n} senaryo`,
|
|
1093
1147
|
runsAllCompleted: (n) => `${n} çalıştırma, hepsi tamamlandı`,
|
|
1094
1148
|
runsCompleted: (done, n) => `${n} çalıştırmadan ${done} tanesi tamamlandı`,
|
|
1095
|
-
fixFirst: "Önce ne düzeltilmeli",
|
|
1096
|
-
fixFirstLead: "Düzeltecek kişiye göre gruplandı, en çok puan kazandıran önce. Her satır bulgusunu açar.",
|
|
1097
|
-
pointsToRecover: (n) => `düzeltilince +${n} puan`,
|
|
1098
|
-
nothingFor: (owner) => `Bu çalıştırmada ${owner} için bir şey yok.`,
|
|
1099
1149
|
moreInFindings: (n) => `Bulgular'da ${n} tane daha →`,
|
|
1100
1150
|
working: "Çalışanlar",
|
|
1101
1151
|
whatWasChecked: "Neler kontrol edildi",
|
|
1102
1152
|
nothingVerified: "Bu çalıştırmada hiçbir şey doğrulanmadı.",
|
|
1103
|
-
coverageVerified: (done, total, pct) => `Planlanan ${total} olaydan ${done} tanesi doğrulandı${pct === null ? "" : ` (%${pct})`}.`,
|
|
1104
1153
|
allRuns: (n) => `${n} çalıştırmanın hepsi`,
|
|
1105
1154
|
onlyOn: (places) => `yalnızca ${places.join(", ")}`,
|
|
1106
|
-
journeysLead: "Yürünen adımlar, yakalanan istekler ve her çalıştırmayı gösteren sorun kartları.",
|
|
1107
1155
|
viewport: "Görünüm",
|
|
1108
1156
|
hitsCol: "İstekler",
|
|
1109
1157
|
trend: "Eğilim",
|
|
1110
|
-
trendLead: "Kayıtlı çalıştırmalardaki sorun sayıları, en eski solda. İçi boş nokta, bir yolculuğun tamamlanmadığı çalıştırmadır.",
|
|
1111
1158
|
trendDirection: { improving: "İyileşiyor", worsening: "Kötüleşiyor", flat: "Değişmedi" },
|
|
1112
1159
|
trendSpan: (n, first, last) => `${n} çalıştırmada, ${first} – ${last}`,
|
|
1113
1160
|
runIncomplete: "bir yolculuk tamamlanmadı",
|
|
@@ -1116,10 +1163,6 @@ const tr = {
|
|
|
1116
1163
|
openLongest: "En uzun süredir açık",
|
|
1117
1164
|
openSince: (date, runs, places) => `${date} tarihinden beri açık · ${runs} çalıştırma · ${places} yer`,
|
|
1118
1165
|
score: "Veri kalitesi puanı",
|
|
1119
|
-
scoreLead: "100 eksi her bozuk sorun için 15, her risk için 10 ve her uyarı için 5; dönüşüm olaylarında iki katı.",
|
|
1120
|
-
scoreLost: (n) => `${n} puan kaybedildi`,
|
|
1121
|
-
findingsLead: "Kanıtı, nerede olduğunu ve düzeltmenin nasıl doğrulanacağını görmek için bir bulguyu açın.",
|
|
1122
|
-
okInOverview: (n) => `${n} sorunsuz sonuç genel bakışta listeleniyor.`,
|
|
1123
1166
|
noModel: "Bu çalıştırmada model açıklaması yok. Aşağıdaki kanıt, sorumlu ve doğrulama bağlantıları için gerekmiyor.",
|
|
1124
1167
|
accepted: "Kabul edildi",
|
|
1125
1168
|
acceptedNote: "Bu bulgu temel çizgide: biliniyor ve çalıştırmanın aleyhine sayılmıyor.",
|
|
@@ -1128,44 +1171,28 @@ const tr = {
|
|
|
1128
1171
|
findingLink: "Bulgu →",
|
|
1129
1172
|
consentMode: "Consent Mode",
|
|
1130
1173
|
consentTiming: (ms, before, v2, missing) => `Varsayılan ${ms === null ? "ilk sayfada" : `ilk sayfanın ${Math.round(ms)}. milisaniyesinde`} ayarlandı${before === null ? "" : before ? ", ilk Google isteğinden önce" : ", ilk Google isteğinden sonra"} · v2 sinyalleri ${v2 ? "mevcut" : `eksik: ${missing.join(", ")}`}.`,
|
|
1131
|
-
consentNoDefault: "Bu yolculukta Consent Mode varsayılanı gönderilmedi.",
|
|
1132
|
-
consentResent: (n) => `Varsayılan ve güncelleme ${n} sayfa yüklemesinde daha yeniden gönderildi; kayıtlı tercih her seferinde geri yükleniyor.`,
|
|
1133
|
-
consentOnHit: "Bu istekteki onay:",
|
|
1134
|
-
scenariosLead: (cmp) => `Ana sayfa her onay seçeneği için bir kez açıldı; yanıt ${cmp === "banner" ? "bandın düğmeleriyle" : cmp} verildi. Her hücre, etiketin o seçimden sonra gönderdiği istek sayısıdır.`,
|
|
1135
|
-
scenariosLegend: "İşaretli sayı, ziyaretçinin reddettiği veridir. \"cookieless\", depolama reddedilmişken atılan Consent Mode ping'idir ve izinlidir.",
|
|
1136
1174
|
cellCookieless: "cookieless",
|
|
1137
1175
|
cellAdDenied: "ad storage reddedilmiş",
|
|
1138
1176
|
cellWithCookies: "çerezlerle",
|
|
1139
1177
|
cellProblem: "sorun:",
|
|
1140
1178
|
cellShouldNot: "gönderilmemeliydi",
|
|
1141
|
-
stepsTitle: "Adımlar ve her birinin gönderdiği istekler",
|
|
1142
|
-
stepsLead: "Parametreler, dataLayer gönderimleri ve istekler için bir satırı açın. Bulgusu olan satırlar açık.",
|
|
1143
|
-
stepCol: "Adım",
|
|
1144
1179
|
timeCol: "Zaman",
|
|
1145
|
-
hasFinding: (sev) => `${sev.toLowerCase()} bulgusu var`,
|
|
1146
|
-
stepDetails: (hits, pushes) => `Ayrıntılar · ${hits} istek · ${pushes} dataLayer`,
|
|
1147
1180
|
hitsInStep: "Bu adımdaki istekler",
|
|
1148
1181
|
blockedBy: (platform) => `denetim engelledi: yerel olarak yanıtlandı, ${platform} platformuna hiç ulaşmadı`,
|
|
1149
1182
|
problems: (n) => `${n} sorun`,
|
|
1150
1183
|
funnel: "Beklenen ve gözlenen",
|
|
1151
1184
|
funnelLead: (observed, expected, ok) => `Beklenen ${expected} olaydan ${observed} tanesi tetiklendi, ${ok} tanesi tüm zorunlu parametrelerle.`,
|
|
1152
|
-
funnelBreaks: (event) => `Huni ${event} olayında kopuyor.`,
|
|
1153
1185
|
conversion: "dönüşüm",
|
|
1154
1186
|
sent: "gönderildi",
|
|
1155
1187
|
notSent: "gönderilmedi",
|
|
1156
|
-
firstAt: "İlk görüldüğü yer",
|
|
1157
1188
|
page: "Sayfa",
|
|
1158
1189
|
params: (list) => `${list.join(", ")} olmadan`,
|
|
1159
1190
|
paramsShort: "param.",
|
|
1160
1191
|
parity: "Platform tutarlılığı",
|
|
1161
|
-
parityLead: "Aynı olayın iki platformdaki hâli ve aralarındaki farklar.",
|
|
1162
1192
|
perPlatform: "Platforma göre",
|
|
1163
|
-
difference: "Fark",
|
|
1164
1193
|
agree: "uyumlu",
|
|
1165
1194
|
mismatch: { count: "sayı farklı", value: "değer farklı", currency: "para birimi farklı", value_missing: "değer yalnızca bir tarafta" },
|
|
1166
|
-
onlyOnPlatform: "Yalnızca tek platformda:",
|
|
1167
1195
|
detailsCol: "Ayrıntılar",
|
|
1168
|
-
coverageLegend: "✓ parametreleriyle gönderildi · param.: zorunlu parametreler olmadan gönderildi · ✗ gönderilmedi · – bu yolculukta beklenmiyor",
|
|
1169
1196
|
needs: (list) => `gerekli: ${list.join(", ")}`,
|
|
1170
1197
|
notExpected: "beklenmiyor",
|
|
1171
1198
|
conversions: "Dönüşüm bütünlüğü",
|
|
@@ -1176,15 +1203,202 @@ const tr = {
|
|
|
1176
1203
|
pass: "geçti",
|
|
1177
1204
|
fail: "başarısız",
|
|
1178
1205
|
notApplicable: "uygulanamaz",
|
|
1179
|
-
seenOn: "Görüldüğü sayfalar",
|
|
1180
1206
|
checkedNotSeen: "Kontrol edildi, görülmedi",
|
|
1181
1207
|
neverSeen: (list) => `Kontrol edildi ama hiç görülmedi: ${list}. Hiçbir sayfada onlara istek gitmedi.`,
|
|
1182
1208
|
timing: "Zamanlama",
|
|
1183
|
-
timingLead: "Her çalıştırmanın süresi ve her adımın ilk isteğinin ne kadar geç geldiği. Denetimin kendi bekleme süresi dahildir.",
|
|
1184
1209
|
duration: "Süre",
|
|
1185
1210
|
medianFirstHit: "Ortanca ilk istek",
|
|
1186
1211
|
slowestHit: "En yavaş istek",
|
|
1187
1212
|
planChanges: "Plan değişiklikleri",
|
|
1213
|
+
|
|
1214
|
+
// ---- html.shell: top bar, rail, section tools and footer of src/html/shell.js ----
|
|
1215
|
+
shell: {
|
|
1216
|
+
skip: "Rapora atla",
|
|
1217
|
+
eyebrow: "İzleme denetimi",
|
|
1218
|
+
heading: (site) => `${site} izleme denetimi`,
|
|
1219
|
+
railLabel: "Rapor bölümleri",
|
|
1220
|
+
sections: { summary: "Özet", findings: "Bulgular", journeys: "Yolculuklar", consent: "Onay", coverage: "Kapsam", inventory: "Envanter", run: "Çalıştırma" },
|
|
1221
|
+
railTip: (label, token) => `${label} · ${token}`,
|
|
1222
|
+
collapse: "Kenar çubuğunu daralt",
|
|
1223
|
+
expand: "Kenar çubuğunu genişlet",
|
|
1224
|
+
expandAll: "Tümünü aç",
|
|
1225
|
+
collapseAll: "Tümünü kapat",
|
|
1226
|
+
clear: "Temizle",
|
|
1227
|
+
filterCount: (shown, total) => `${shown} / ${total} gösteriliyor`,
|
|
1228
|
+
score: "Puan",
|
|
1229
|
+
outOf: "/100",
|
|
1230
|
+
scoreLabel: (score, verdict) => `Puan 100 üzerinden ${score}, sonuç: ${verdict}`,
|
|
1231
|
+
noScore: (verdict) => `Puan yok, sonuç: ${verdict}`,
|
|
1232
|
+
themeAuto: "Tema: sistemi izler",
|
|
1233
|
+
themeLight: "Tema: açık",
|
|
1234
|
+
themeDark: "Tema: koyu",
|
|
1235
|
+
},
|
|
1236
|
+
// ---- end of html.shell ----
|
|
1237
|
+
|
|
1238
|
+
// ---- html.summary: strings of src/html/summary.js, edited only by its builder ----
|
|
1239
|
+
summary: {
|
|
1240
|
+
about: "Bu çalıştırma hakkında",
|
|
1241
|
+
events: "Kontrol edilen olaylar",
|
|
1242
|
+
noPlan: "Ölçüm planı verilmedi",
|
|
1243
|
+
plannedSeen: (planned, seen) => `${planned} <small>planlı</small> · ${seen} <small>görülen</small>`,
|
|
1244
|
+
withParams: (percent) => `%${percent} gerekli parametreleriyle`,
|
|
1245
|
+
seen: "görüldü",
|
|
1246
|
+
notSeen: "görülmedi",
|
|
1247
|
+
seenOf: (seen, total) => `Görülen: ${seen} / ${total}`,
|
|
1248
|
+
noRuns: "Hiç yolculuk çalışmadı",
|
|
1249
|
+
runState: { completed: "tamamlandı", incomplete: "tamamlanmadı" },
|
|
1250
|
+
steps: (n) => `${n} adım`,
|
|
1251
|
+
hits: (n) => `${n} istek`,
|
|
1252
|
+
problems: (n) => `${n} sorun`,
|
|
1253
|
+
completedOf: (done, total) => `${done}/${total} tamamlandı`,
|
|
1254
|
+
stoppedAt: (step) => `${step}. adımda durdu`,
|
|
1255
|
+
defaultAt: (chip, range) => `Varsayılan${chip}${range === null ? "" : ` <small>${range} ms'de</small>`}`,
|
|
1256
|
+
noDefault: "Varsayılan görülmedi",
|
|
1257
|
+
mixed: "karışık",
|
|
1258
|
+
noBanner: "Banner bulunamadı",
|
|
1259
|
+
bannerNotReached: "Banner'a ulaşılamadı",
|
|
1260
|
+
scripted: "Betikle, model olmadan",
|
|
1261
|
+
deterministic: "Yalnızca kural tabanlı kontroller",
|
|
1262
|
+
explains: "Nedenleri ve düzeltmeleri açıklar",
|
|
1263
|
+
seconds: (s) => `${s} sn`,
|
|
1264
|
+
runs: (n) => `${n} çalıştırma`,
|
|
1265
|
+
more: (n) => `${n} tane daha`,
|
|
1266
|
+
moreInFindings: (n) => `Bulgular'da ${n} tane daha`,
|
|
1267
|
+
cost: {
|
|
1268
|
+
missingParams: (event, params) => `${event} içinde ${params} yok`,
|
|
1269
|
+
missingParamsAny: (event) => `${event} içinde gerekli parametreler yok`,
|
|
1270
|
+
beforeConsent: (event) => `${event} onaydan önce gönderildi`,
|
|
1271
|
+
afterReject: (event) => `${event} tümü reddedildikten sonra gönderildi`,
|
|
1272
|
+
duplicate: (event, n) => (n ? `${event} tıklama başına ${n} kez gönderildi` : `${event} tıklama başına birden çok kez gönderildi`),
|
|
1273
|
+
missingEvent: (event) => `${event} hiç gönderilmedi`,
|
|
1274
|
+
stopped: (step, runs) => (step === null ? "Yolculuklar erken durdu" : `${runs === 1 ? "Yolculuk" : "Yolculuklar"} ${step}. adımda durdu`),
|
|
1275
|
+
noConsentDefault: "Consent Mode varsayılanı yok",
|
|
1276
|
+
},
|
|
1277
|
+
},
|
|
1278
|
+
// ---- end of html.summary ----
|
|
1279
|
+
|
|
1280
|
+
// ---- html.findings: strings of src/html/findings.js, edited only by its builder ----
|
|
1281
|
+
findings: {
|
|
1282
|
+
severity: "Önem",
|
|
1283
|
+
filterLabel: "Bulguları filtrele",
|
|
1284
|
+
search: "Ara",
|
|
1285
|
+
searchLabel: "Bulgularda ara: olay, parametre, sayfa",
|
|
1286
|
+
filters: "Filtreler",
|
|
1287
|
+
groups: { failed: "Başarısız", unverified: "Doğrulanmadı", passed: "Geçti" },
|
|
1288
|
+
empty: "Bu filtrelere uyan bulgu yok.",
|
|
1289
|
+
details: (title) => `${title}: ayrıntılar`,
|
|
1290
|
+
runs: (n) => `${n} çalıştırma`,
|
|
1291
|
+
showWhere: "Nerede olduğunu göster",
|
|
1292
|
+
// Kısa satır başlıkları, en fazla sekiz kelime; olay ve parametre adları tırnak içinde, kod olarak gösterilir.
|
|
1293
|
+
title: {
|
|
1294
|
+
missing_params: (event, params) => `${q(event)} olayı ${andList(sortParams(params).map(q), "ve")} olmadan gönderildi`,
|
|
1295
|
+
duplicate: (event, n) => `${q(event)} tek işlemde ${n} kez gönderildi`,
|
|
1296
|
+
before_consent: (event) => `${q(event)} onay seçiminden önce gönderildi`,
|
|
1297
|
+
after_reject: (event) => `${q(event)} "Tümünü reddet"ten sonra da gönderildi`,
|
|
1298
|
+
missing_event: (event) => `${q(event)} gönderilmedi`,
|
|
1299
|
+
consent_default_missing: () => "Consent Mode varsayılanı ayarlanmadı",
|
|
1300
|
+
journey_incomplete: (step) => (step === null ? "Yolculuk tamamlanmadı" : `Yolculuk ${step}. adımda durdu`),
|
|
1301
|
+
},
|
|
1302
|
+
notReached: "ulaşılmadı",
|
|
1303
|
+
passed: {
|
|
1304
|
+
campaign: "Kampanya parametreleri yönlendirmeden geçti",
|
|
1305
|
+
coverage: (done, total, percent) => `Planlanan ${total} olaydan ${done} tanesi eksiksiz${percent === null ? "" : ` (%${percent})`}`,
|
|
1306
|
+
consentDefault: (onTime) => (onTime ? "Consent Mode varsayılanı ilk Google isteğinden önce ayarlandı" : "Consent Mode varsayılanı ayarlandı"),
|
|
1307
|
+
conversion: (event, amount) => `${q(event)} ${amount} ile gönderildi`,
|
|
1308
|
+
},
|
|
1309
|
+
fineOn: (place, amount) => `${place} sorunsuz${amount ? `: ${amount}` : ""}`,
|
|
1310
|
+
pushLacks: (params) => `dataLayer gönderiminde ${andList(sortParams(params).map(q), "ve")} zaten yok.`,
|
|
1311
|
+
pushCarries: "dataLayer gönderimi bunları taşıyor; etiket onları düşürüyor.",
|
|
1312
|
+
pushRaw: "dataLayer gönderimi",
|
|
1313
|
+
perAction: (n) => `işlem başına ${n} kez`,
|
|
1314
|
+
noSignal: "sinyal yok",
|
|
1315
|
+
stillSent: "yine gönderildi",
|
|
1316
|
+
stopped: "durdu",
|
|
1317
|
+
stoppedAt: "Durduğu yer",
|
|
1318
|
+
error: "Hata",
|
|
1319
|
+
defaultIn: (present, total) => `${total} çalıştırmanın ${present} tanesinde varsayılan var`,
|
|
1320
|
+
replay: "Yeniden oynatma",
|
|
1321
|
+
ai: "Modelin açıklaması",
|
|
1322
|
+
noModel: "Bu çalıştırmada model açıklaması yok.",
|
|
1323
|
+
},
|
|
1324
|
+
// ---- end of html.findings ----
|
|
1325
|
+
|
|
1326
|
+
// ---- html.journeys: strings of src/html/journeys.js, edited only by its builder ----
|
|
1327
|
+
journeys: {
|
|
1328
|
+
steps: "Adımlar",
|
|
1329
|
+
pickViewport: "Görünüm",
|
|
1330
|
+
dataLayer: "Veri katmanı",
|
|
1331
|
+
startStep: "İlk adımdan önce",
|
|
1332
|
+
stats: (steps, hits, secs) => `${steps} adım · ${hits} istek${secs === null ? "" : ` · ${secs} sn`}`,
|
|
1333
|
+
noRuns: "Hiç yolculuk çalıştırılmadı.",
|
|
1334
|
+
nothing: "Bu adımda hiçbir şey gönderilmedi.",
|
|
1335
|
+
noSignal: "sinyal yok",
|
|
1336
|
+
noSignalTitle: "Bu istekte onay sinyali yok",
|
|
1337
|
+
signals: { ad_storage: "ad", analytics_storage: "an", ad_user_data: "ud", ad_personalization: "ap" },
|
|
1338
|
+
blocked: "engellendi",
|
|
1339
|
+
clear: "temizleme",
|
|
1340
|
+
colUrl: "URL",
|
|
1341
|
+
colId: "Kimlik",
|
|
1342
|
+
colName: "Ad",
|
|
1343
|
+
colPrice: "Fiyat",
|
|
1344
|
+
colQty: "Adet",
|
|
1345
|
+
itemMore: "Ürün parametreleri",
|
|
1346
|
+
hitsOf: (count, platform) => `${count} ${platform} isteği`,
|
|
1347
|
+
stepOf: (i) => `Adım ${i}`,
|
|
1348
|
+
},
|
|
1349
|
+
// ---- end of html.journeys ----
|
|
1350
|
+
|
|
1351
|
+
// ---- html.consent: strings of src/html/consent.js, edited only by its builder ----
|
|
1352
|
+
consent: {
|
|
1353
|
+
statusLabel: "Platform başına onay durumu",
|
|
1354
|
+
cols: { before: "Seçim yok", accept: "Kabul", reject: "Reddet", analytics: "Yalnızca analitik" },
|
|
1355
|
+
state: { denied: "reddedildi", granted: "verildi", none: "sinyal yok" },
|
|
1356
|
+
tally: (n, state) => `${n} · ${state}`,
|
|
1357
|
+
scenarios: "Senaryolar",
|
|
1358
|
+
notSupported: "desteklenmiyor",
|
|
1359
|
+
sent: "Gönderildi",
|
|
1360
|
+
problems: (n) => `${n} sorun`,
|
|
1361
|
+
noProblems: "Sorun yok",
|
|
1362
|
+
defaultFirst: "Varsayılan önce",
|
|
1363
|
+
defaultLate: "Varsayılan geç",
|
|
1364
|
+
noDefault: "Varsayılan yok",
|
|
1365
|
+
v2: "v2",
|
|
1366
|
+
v2Missing: "v2 eksik",
|
|
1367
|
+
timing: (lo, hi) => (lo === hi ? `${lo} ms` : `${lo}–${hi} ms`),
|
|
1368
|
+
runsWith: (k, n) => (k === n ? `${n} çalıştırma` : `${n} çalıştırmadan ${k} tanesi`),
|
|
1369
|
+
resent: (n) => `${n} sayfa yüklemesinde daha yeniden gönderildi`,
|
|
1370
|
+
},
|
|
1371
|
+
// ---- end of html.consent ----
|
|
1372
|
+
|
|
1373
|
+
// ---- html.scope: strings of src/html/scope.js, edited only by its builder ----
|
|
1374
|
+
scope: {
|
|
1375
|
+
ofEvents: (n, total) => `${total} olaydan ${n}`,
|
|
1376
|
+
problemPoints: "Sorun puanı",
|
|
1377
|
+
barLabel: (ok, params, missing) => `${ok} eksiksiz, ${params} olayda zorunlu parametre eksik, ${missing} olay gönderilmedi`,
|
|
1378
|
+
missingParams: (n) => `${n} olayda eksik parametre`,
|
|
1379
|
+
notSentCount: (n) => `${n} olay gönderilmedi`,
|
|
1380
|
+
notCheckedCount: (n) => `${n} olay kontrol edilmedi`,
|
|
1381
|
+
searchEvents: "Olay ara",
|
|
1382
|
+
needs: "Gerekenler",
|
|
1383
|
+
keyOk: "parametreleriyle gönderildi",
|
|
1384
|
+
keyParams: "zorunlu bir parametre eksik",
|
|
1385
|
+
keyMissing: "hiç gönderilmedi",
|
|
1386
|
+
keyNotExpected: "bu yolculukta beklenmiyor",
|
|
1387
|
+
purchasesPass: (n, total) => `${total} satın almadan ${n} geçti`,
|
|
1388
|
+
purchasesFail: (n) => `${n} başarısız`,
|
|
1389
|
+
seen: "Görüldü",
|
|
1390
|
+
hosts: "Alan adları",
|
|
1391
|
+
noneSeen: "Görülmedi",
|
|
1392
|
+
requests: (n, num = n) => `${num} istek`,
|
|
1393
|
+
pages: (n, num = n) => `${num} sayfa`,
|
|
1394
|
+
cookies: (n, num = n) => `${num} çerez`,
|
|
1395
|
+
generated: "Oluşturulma",
|
|
1396
|
+
runs: "Çalıştırmalar",
|
|
1397
|
+
files: "Dosyalar",
|
|
1398
|
+
firstHit: (range) => `ilk istek ${range} ms`,
|
|
1399
|
+
runCol: "Çalıştırma",
|
|
1400
|
+
},
|
|
1401
|
+
// ---- end of html.scope ----
|
|
1188
1402
|
},
|
|
1189
1403
|
};
|
|
1190
1404
|
|