Skill Tracer
Skills › Archify › archify › en.json

en.json

488 lines · archify/locales/en.json at a406594

1{
2 "page.title": "{title} Diagram",
3 "diagram.description.architecture": "An architecture diagram generated by Archify.",
4 "diagram.description.workflow": "A workflow diagram generated by Archify.",
5 "diagram.description.sequence": "A sequence diagram generated by Archify.",
6 "diagram.description.dataflow": "A data-flow diagram generated by Archify.",
7 "diagram.description.lifecycle": "A lifecycle diagram generated by Archify.",
8 "node.focus": "Focus {label}",
9 "node.focus.detail": "Focus {label}, {detail}",
10 "node.context.architecture": "Architecture component",
11 "node.context.workflow": "Workflow node",
12 "node.context.sequence": "Sequence participant",
13 "node.context.dataflow": "Data-flow node",
14 "node.context.lifecycle": "Lifecycle state",
15 "legend.title": "Legend",
16 "legend.architecture.frontend": "Frontend",
17 "legend.architecture.backend": "Backend",
18 "legend.architecture.database": "Database",
19 "legend.architecture.cloud": "Cloud",
20 "legend.architecture.security": "Security",
21 "legend.architecture.messagebus": "Message bus",
22 "legend.architecture.external": "External",
23 "legend.workflow.frontend": "User UI",
24 "legend.workflow.backend": "Agent logic",
25 "legend.workflow.security": "Policy",
26 "legend.workflow.messagebus": "Tool action",
27 "legend.workflow.database": "Context / trace",
28 "legend.workflow.cloud": "Cloud service",
29 "legend.workflow.external": "External system",
30 "legend.sequence.emphasis": "main request",
31 "legend.sequence.return": "return",
32 "legend.sequence.security": "security",
33 "legend.sequence.dashed": "async trace",
34 "legend.sequence.default": "message",
35 "legend.dataflow.emphasis": "primary data",
36 "legend.dataflow.security": "policy / PII",
37 "legend.dataflow.dashed": "async batch",
38 "legend.dataflow.database": "data store",
39 "legend.dataflow.default": "data flow",
40 "legend.lifecycle.start": "initial state",
41 "legend.lifecycle.active": "active",
42 "legend.lifecycle.waiting": "waiting",
43 "legend.lifecycle.decision": "decision",
44 "legend.lifecycle.success": "success",
45 "legend.lifecycle.failure": "failure / exit",
46 "legend.lifecycle.neutral": "neutral",
47 "legend.lifecycle.external": "external",
48 "legend.lifecycle.final": "final state",
49 "viewer.kind.frontend": "Frontend",
50 "viewer.kind.backend": "Backend",
51 "viewer.kind.database": "Database",
52 "viewer.kind.cloud": "Cloud",
53 "viewer.kind.security": "Security",
54 "viewer.kind.messagebus": "Message bus",
55 "viewer.kind.external": "External",
56 "viewer.kind.neutral": "Neutral",
57 "viewer.kind.node": "Node",
58 "viewer.kind.start": "Start",
59 "viewer.kind.active": "Active",
60 "viewer.kind.waiting": "Waiting",
61 "viewer.kind.decision": "Decision",
62 "viewer.kind.success": "Success",
63 "viewer.kind.failure": "Failure",
64 "viewer.toolbar.actions": "Diagram actions",
65 "viewer.theme.toggle.title": "Toggle theme (T)",
66 "viewer.theme.toggle": "Toggle color theme",
67 "viewer.theme.dark": "Dark",
68 "viewer.theme.light": "Light",
69 "viewer.preset.choose.title": "Choose visual style (S cycles)",
70 "viewer.preset.choose": "Choose visual style",
71 "viewer.preset.style": "Style",
72 "viewer.preset.menu": "Visual style",
73 "viewer.preset.identity": "Visual identity",
74 "viewer.preset.cycles": "to cycle",
75 "viewer.preset.classic": "Classic",
76 "viewer.preset.classic.short": "Classic",
77 "viewer.preset.classic.hint": "Stable technical default",
78 "viewer.preset.flow": "Signal Flow",
79 "viewer.preset.flow.short": "Flow",
80 "viewer.preset.flow.hint": "Motion-forward presentation",
81 "viewer.preset.blueprint": "Blueprint",
82 "viewer.preset.blueprint.hint": "Engineering review",
83 "viewer.preset.editorial": "Editorial",
84 "viewer.preset.editorial.hint": "Publication and launch notes",
85 "viewer.preset.badge.signalFlow": "SIGNAL FLOW",
86 "viewer.preset.badge.blueprint": "BLUEPRINT / REV 01",
87 "viewer.preset.badge.editorial": "EDITORIAL / FIELD NOTE",
88 "viewer.preset.badge.editorialPlate": "ARCHIFY / PLATE 04",
89 "viewer.preset.current": "Visual style: {style}. Choose visual style",
90 "viewer.motion.live": "Live",
91 "viewer.motion.still": "Still",
92 "viewer.motion.pause": "Pause motion",
93 "viewer.motion.resume": "Resume motion",
94 "viewer.motion.reduced": "Motion paused by reduced-motion preference",
95 "viewer.motion.hidden": "Motion paused while this page is hidden",
96 "viewer.motion.yielding": "Pause motion; currently yielding to {owner}",
97 "viewer.motion.yielding.title": "Live preview enabled · yielding to {owner}",
98 "viewer.owner.route": "Route Probe",
99 "viewer.owner.lens": "Semantic Lens",
100 "viewer.owner.relationship": "Relationship Preview",
101 "viewer.owner.intent": "Intent Trace",
102 "viewer.owner.focus": "semantic focus",
103 "viewer.owner.legend": "legend preview",
104 "viewer.owner.reader": "reader interaction",
105 "viewer.present.enter": "Enter presentation stage",
106 "viewer.present.enter.title": "Presentation stage (F)",
107 "viewer.present.exit": "Exit presentation stage",
108 "viewer.present.exit.title": "Exit presentation stage (F or Escape)",
109 "viewer.present.present": "Present",
110 "viewer.present.exit.label": "Exit",
111 "viewer.export.button": "Export",
112 "viewer.export.button.title": "Export diagram (E)",
113 "viewer.export.diagram": "Export diagram",
114 "viewer.export.menu": "Export",
115 "viewer.export.subtitle": "Portable, clean outputs",
116 "viewer.export.share": "Share",
117 "viewer.export.shareCard": "Share Card",
118 "viewer.export.routeShareCard": "Route Share Card",
119 "viewer.export.reachShareCard": "Reach Share Card",
120 "viewer.export.copyDiagram": "Copy diagram",
121 "viewer.export.clipboardPng": "PNG to clipboard",
122 "viewer.export.raster": "Raster images",
123 "viewer.export.image": "Image",
124 "viewer.export.lossless": "Lossless image",
125 "viewer.export.compact": "Compact image",
126 "viewer.export.modern": "Modern image",
127 "viewer.export.vectorMotion": "Vector and motion",
128 "viewer.export.vectorMotion.heading": "Vector & motion",
129 "viewer.export.editable": "Editable vector",
130 "viewer.export.svg.auto": "SVG · Auto",
131 "viewer.export.svg.auto.hint": "Matches host theme",
132 "viewer.export.svg.light": "SVG · Light",
133 "viewer.export.svg.light.hint": "Always light",
134 "viewer.export.svg.dark": "SVG · Dark",
135 "viewer.export.svg.dark.hint": "Always dark",
136 "viewer.export.motion6s": "6s motion",
137 "viewer.export.unsupported": "Not supported by this browser",
138 "viewer.export.clipboardUnsupported": "Clipboard image write not supported by this browser",
139 "viewer.export.clipboardUnsupported.short": "Clipboard image write not supported in this browser.",
140 "viewer.export.motionUnavailable": "Motion capture unavailable in this browser",
141 "viewer.export.webmUnavailable": "WebM unavailable in this browser",
142 "viewer.export.failed": "Export failed: {message}",
143 "viewer.export.unknownVariant": "Unknown Share Card variant: {variant}",
144 "viewer.export.routeRequired": "Trace a route before exporting a Route Share Card",
145 "viewer.export.reachRequired": "Trace authored reach before exporting a Reach Share Card",
146 "viewer.export.unknown": "unknown",
147 "viewer.export.routeFailed": "Route Share Card export failed: {message}",
148 "viewer.export.reachFailed": "Reach Share Card export failed: {message}",
149 "viewer.export.copyFailed": "Copy failed: {message}",
150 "viewer.export.copiedPng": "Copied PNG to clipboard",
151 "viewer.export.downloadedRoute": "Downloaded Route Share Card",
152 "viewer.export.downloadedReach": "Downloaded Reach Share Card",
153 "viewer.export.downloadedWebm": "Downloaded WebM",
154 "viewer.export.recording": "Recording 6 seconds of motion…",
155 "viewer.export.card.routeSummary.one": "Path: {source} → {target} · {count} step",
156 "viewer.export.card.routeSummary.other": "Path: {source} → {target} · {count} steps",
157 "viewer.export.card.reachSummary": "Authored {direction} from {origin} · {nodes} · {links} · max {hops}",
158 "viewer.export.card.node.one": "{count} node",
159 "viewer.export.card.node.other": "{count} nodes",
160 "viewer.export.card.link.one": "{count} link",
161 "viewer.export.card.link.other": "{count} links",
162 "viewer.export.card.hop.one": "{count} hop",
163 "viewer.export.card.hop.other": "{count} hops",
164 "viewer.export.card.routeBadge": "ARCHIFY · ROUTE · {hops}",
165 "viewer.export.card.reachBadge": "ARCHIFY · {direction} REACH",
166 "viewer.export.direction.upstream": "Upstream",
167 "viewer.export.direction.downstream": "Downstream",
168 "viewer.export.error.canvasUnavailable": "Canvas unavailable for {label}",
169 "viewer.export.error.contextUnavailable": "2D canvas context unavailable for {label}",
170 "viewer.export.error.toBlobUnavailable": "canvas.toBlob unavailable for {label}",
171 "viewer.export.error.toBlobNull": "canvas.toBlob returned no data for {label}",
172 "viewer.export.error.variantsCombined": "Share Card variants cannot be combined",
173 "viewer.export.error.viewerState": "Share Card export could not remove temporary viewer state",
174 "viewer.export.error.routeState": "Route Card export could not preserve the resolved route safely",
175 "viewer.export.error.reachState": "Reach Card export could not preserve authored reach safely",
176 "viewer.export.error.webmRequirements": "WebM motion export requires a trace animation and browser MediaRecorder support",
177 "viewer.export.error.mediaRecorder": "MediaRecorder failed",
178 "viewer.export.error.emptyWebm": "MediaRecorder produced an empty WebM",
179 "viewer.export.error.webmBackground": "SVG background could not be loaded for WebM export",
180 "viewer.guide.title": "Explore this system",
181 "viewer.focus.selectedNodes": "{count} selected nodes",
182 "viewer.guide.eyebrow": "Diagram guide",
183 "viewer.guide.close": "Close diagram guide",
184 "viewer.guide.inspecting": "Inspecting compiled semantics",
185 "viewer.guide.actions": "Diagram exploration actions",
186 "viewer.guide.find": "Find any node",
187 "viewer.guide.find.hint": "Search labels, responsibilities, kinds, and stable IDs.",
188 "viewer.guide.route": "Trace a route",
189 "viewer.guide.route.aria": "Trace a directed route",
190 "viewer.guide.route.hint": "Ask how two semantic nodes connect in authored direction.",
191 "viewer.guide.map": "See the whole system",
192 "viewer.guide.map.hint": "Open Semantic Radar with a live viewport and stable nodes.",
193 "viewer.guide.lens": "Compare semantic kinds",
194 "viewer.guide.lens.hint": "Count roles, reveal their traffic, and compare direct authored links.",
195 "viewer.guide.present": "Enter Presentation Stage",
196 "viewer.guide.present.hint": "Give the live diagram the viewport without changing export.",
197 "viewer.guide.shortcuts": "Additional keyboard shortcuts",
198 "viewer.guide.shortcut.export": "Export",
199 "viewer.guide.shortcut.theme": "Theme",
200 "viewer.guide.shortcut.style": "Style",
201 "viewer.guide.shortcut.reset": "Reset",
202 "viewer.guide.shortcut.zoomIn": "Zoom in",
203 "viewer.guide.shortcut.zoomOut": "Zoom out",
204 "viewer.guide.shortcut.close": "Close",
205 "viewer.guide.credit": "Find Archify useful? A star on GitHub helps",
206 "viewer.guide.star": "Star",
207 "viewer.guide.facts": "{nodes} · {relationships}",
208 "viewer.guide.fact.node.one": "{count} semantic node",
209 "viewer.guide.fact.node.other": "{count} semantic nodes",
210 "viewer.guide.fact.relationship.one": "{count} relationship",
211 "viewer.guide.fact.relationship.other": "{count} relationships",
212 "viewer.guide.open": "Open diagram guide",
213 "viewer.finder.title": "Find a node",
214 "viewer.finder.close": "Close node finder",
215 "viewer.finder.placeholder": "Search labels or IDs",
216 "viewer.finder.search": "Search diagram nodes",
217 "viewer.finder.results": "Diagram nodes",
218 "viewer.finder.empty": "No matching nodes",
219 "viewer.finder.result.focus": "Focus {label}",
220 "viewer.finder.result.routeStart": "Choose {label} as route start",
221 "viewer.finder.result.routeTarget": "Choose {label} as route destination, {links}",
222 "viewer.finder.status.empty": "No matching nodes",
223 "viewer.finder.status.count.one": "{count} matching node",
224 "viewer.finder.status.count.other": "{count} matching nodes",
225 "viewer.finder.noun.nodes": "nodes",
226 "viewer.finder.link.one": "{count} link",
227 "viewer.finder.link.other": "{count} links",
228 "viewer.finder.result.focus.one": "Focus {label}, {count} related connection",
229 "viewer.finder.result.focus.other": "Focus {label}, {count} related connections",
230 "viewer.finder.status.filtered": "{visible} of {available} {noun}",
231 "viewer.finder.status.all": "{available} {noun}",
232 "viewer.passport.eyebrow": "Semantic passport",
233 "viewer.passport.metadata": "Node metadata",
234 "viewer.passport.evidence": "Verified source evidence",
235 "viewer.passport.verified": "Verified source",
236 "viewer.passport.verificationScope": "Verified against local Git at the pinned revision. Remote access has not been checked.",
237 "viewer.passport.reach": "Authored reach",
238 "viewer.passport.reach.trace": "Trace authored reachability",
239 "viewer.passport.upstream": "Upstream",
240 "viewer.passport.downstream": "Downstream",
241 "viewer.passport.upstream.trace": "Trace upstream authored reachability",
242 "viewer.passport.downstream.trace": "Trace downstream authored reachability",
243 "viewer.passport.close": "Close semantic passport",
244 "viewer.passport.move": "Move semantic passport. Drag, use arrow keys, or press Home to reset.",
245 "viewer.passport.copy": "Copy link",
246 "viewer.passport.copy.focus": "Copy link to focused node",
247 "viewer.passport.relations": "Relations",
248 "viewer.passport.relations.show": "Show connected relationships",
249 "viewer.passport.relations.hide": "Hide connected relationships",
250 "viewer.passport.relations.list": "Connected relationships",
251 "viewer.passport.copyRelation": "Copy relation",
252 "viewer.passport.copyNode": "Copy node",
253 "viewer.passport.copyPinned": "Copy link to pinned relationship",
254 "viewer.passport.copySource": "Copy link to source node",
255 "viewer.passport.copy.focused.success": "Focused node link copied",
256 "viewer.passport.copy.pinned.success": "Pinned relationship link copied",
257 "viewer.passport.copy.focused.failed": "Could not copy focused node link",
258 "viewer.passport.copy.pinned.failed": "Could not copy pinned relationship link",
259 "viewer.passport.relationship.none": "No connected relationships",
260 "viewer.passport.relationship.count.one": "{count} relation",
261 "viewer.passport.relationship.count.other": "{count} relations",
262 "viewer.passport.relationship.show.one": "Show {count} connected relationship",
263 "viewer.passport.relationship.show.other": "Show {count} connected relationships",
264 "viewer.passport.relationship.summary": "{out} outgoing · {in} incoming{loops}",
265 "viewer.passport.relationship.loops": " · {count} loop",
266 "viewer.passport.relationship.explorer": "Direct relationship explorer",
267 "viewer.passport.relationship.help": "Use arrow keys to explore relationships. Press Enter or Space to pin details; Escape clears.",
268 "viewer.passport.relationship.loopsBack": "loops back",
269 "viewer.passport.relationship.connectsTo": "connects to",
270 "viewer.passport.relationship.connectsFrom": "connects from",
271 "viewer.passport.relationship.pinned": "Pinned relationship · {from} → {to} · {label}",
272 "viewer.passport.relationship.inspect": "Inspect relationship {index} of {total}: {from} to {to}, {label}. Press Enter for details.",
273 "viewer.passport.relationship.group.out": "Outgoing",
274 "viewer.passport.relationship.group.in": "Incoming",
275 "viewer.passport.relationship.group.loop": "Self loops",
276 "viewer.passport.relationship.row": "{group}: {relationship}, {neighbor}",
277 "viewer.passport.relationship.direction.out": "OUT →",
278 "viewer.passport.relationship.direction.in": "← IN",
279 "viewer.passport.relationship.direction.loop": "LOOP",
280 "viewer.passport.sourceCount.one": "{count} verified source reference",
281 "viewer.passport.sourceCount.other": "{count} verified source references",
282 "viewer.passport.repository.open": "Open verified repository revision {revision}",
283 "viewer.passport.source.open": "Open verified source {path} at revision {revision}",
284 "viewer.passport.source.openLink": "Open ↗",
285 "viewer.passport.reach.upstream.one": "Trace {count} upstream authored node",
286 "viewer.passport.reach.upstream.other": "Trace {count} upstream authored nodes",
287 "viewer.passport.reach.downstream.one": "Trace {count} downstream authored node",
288 "viewer.passport.reach.downstream.other": "Trace {count} downstream authored nodes",
289 "viewer.passport.reach.noUpstream": "No upstream authored nodes",
290 "viewer.passport.reach.noDownstream": "No downstream authored nodes",
291 "viewer.passport.reach.status": "{direction} · {nodes} nodes · {links} links · max {hops} hops",
292 "viewer.route.eyebrow": "Path",
293 "viewer.route.start": "Click where the path starts",
294 "viewer.route.start.find": "Find start",
295 "viewer.route.start.find.aria": "Find a route start",
296 "viewer.route.copy": "Copy link",
297 "viewer.route.copy.aria": "Copy link to traced route",
298 "viewer.route.clear": "Clear",
299 "viewer.route.clear.aria": "Clear route probe",
300 "viewer.route.traced": "Path",
301 "viewer.route.pickTwo": "Click two nodes on the diagram",
302 "viewer.route.pickOne": "Click a node on the diagram",
303 "viewer.route.controls": "Route journey controls",
304 "viewer.route.previous": "Previous route position",
305 "viewer.route.play": "Play route journey",
306 "viewer.route.pause": "Pause route journey",
307 "viewer.route.replay": "Replay route journey",
308 "viewer.route.next": "Next route position",
309 "viewer.route.journey": "Journey",
310 "viewer.route.pause.label": "Pause",
311 "viewer.route.replay.label": "Replay",
312 "viewer.route.overview": "Overview",
313 "viewer.route.overview.aria": "Show complete route overview",
314 "viewer.route.instructions": "Click a start, then an end. Paths follow the arrows.",
315 "viewer.route.destination": "Where does the path from {label} end?",
316 "viewer.route.destination.find": "Find target",
317 "viewer.route.destination.find.aria": "Find a reachable route destination",
318 "viewer.route.differentDestination": "Choose a different destination",
319 "viewer.route.distinct": "Pick two different nodes.",
320 "viewer.route.unreachable": "Cannot reach {label} from here",
321 "viewer.route.unreachable.detail": "{target} cannot be reached from {source} along the arrows. Pick a highlighted node.",
322 "viewer.route.start.instructions": "Next, pick the end. Only nodes you can reach will light up.",
323 "viewer.route.copy.success": "Traced route link copied",
324 "viewer.route.copy.failed": "Could not copy traced route link",
325 "viewer.route.position": "Route position {index} of {total}: {label}",
326 "viewer.route.step": "Step {index} of {total} · {phase} · {label}",
327 "viewer.route.motionRequired": "Automatic journey requires Live motion",
328 "viewer.route.trigger.clear": "Clear traced route",
329 "viewer.route.overview.status": "{nodes} · {hops} · shortest path",
330 "viewer.route.overview.node.one": "{count} node",
331 "viewer.route.overview.node.other": "{count} nodes",
332 "viewer.route.overview.hop.one": "{count} step",
333 "viewer.route.overview.hop.other": "{count} steps",
334 "viewer.route.phase.playing": "Playing",
335 "viewer.route.phase.complete": "Complete",
336 "viewer.route.phase.inspecting": "Inspecting",
337 "viewer.route.destination.count.one": "{count} reachable node is highlighted. Click it.",
338 "viewer.route.destination.count.other": "{count} reachable nodes are highlighted. Click one.",
339 "viewer.route.noOutgoing": "No arrows lead out of this node. Clear it and pick another start.",
340 "viewer.route.result.title": "{source} to {target}",
341 "viewer.route.finder.source.title": "Choose route start",
342 "viewer.route.finder.source.placeholder": "Search route sources",
343 "viewer.route.finder.source.empty": "No matching route sources",
344 "viewer.route.finder.source.results": "Nodes that can start a route",
345 "viewer.route.finder.source.noun": "route sources",
346 "viewer.route.finder.source.badge": "start",
347 "viewer.route.finder.target.title": "Destination from {label}",
348 "viewer.route.finder.target.placeholder": "Search reachable destinations",
349 "viewer.route.finder.target.empty": "No matching reachable destinations",
350 "viewer.route.finder.target.results": "Reachable route destinations",
351 "viewer.route.finder.target.noun": "reachable destinations",
352 "viewer.route.hop.one": "{count} hop",
353 "viewer.route.hop.other": "{count} hops",
354 "viewer.lens.eyebrow": "Semantic lens",
355 "viewer.lens.title": "Compare system roles",
356 "viewer.lens.close": "Close semantic lens",
357 "viewer.lens.instruction": "Choose up to two semantic kinds. One reveals its real traffic; two compare only direct authored relationships.",
358 "viewer.lens.kinds": "Semantic kinds",
359 "viewer.lens.choose": "Choose a kind to inspect its nodes and touching relationships.",
360 "viewer.lens.copy": "Copy link to semantic lens",
361 "viewer.lens.clear": "Clear semantic lens",
362 "viewer.lens.open": "Open semantic lens",
363 "viewer.lens.openActive": "Open active semantic lens",
364 "viewer.lens.legend": "Semantic legend",
365 "viewer.lens.legend.inspect.one": "Inspect {label}, {count} node",
366 "viewer.lens.legend.inspect.other": "Inspect {label}, {count} nodes",
367 "viewer.lens.kind.count.one": "{label}, {count} node",
368 "viewer.lens.kind.count.other": "{label}, {count} nodes",
369 "viewer.lens.compare.one": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} direct relationship",
370 "viewer.lens.compare.other": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} direct relationships",
371 "viewer.lens.single": "{nodes} · {relationships} · connected peers remain visible",
372 "viewer.lens.node.one": "{count} {label} node",
373 "viewer.lens.node.other": "{count} {label} nodes",
374 "viewer.lens.relationship.one": "{count} touching relationship",
375 "viewer.lens.relationship.other": "{count} touching relationships",
376 "viewer.radar.title": "Semantic radar",
377 "viewer.radar.building": "Building overview",
378 "viewer.radar.openFull": "Open full semantic radar",
379 "viewer.radar.open": "Open radar",
380 "viewer.radar.close": "Close semantic radar",
381 "viewer.radar.surface": "Diagram overview. Click a node to focus it, or use arrow keys to pan.",
382 "viewer.radar.click": "Click node",
383 "viewer.radar.drag": "Drag to pan",
384 "viewer.radar.space": "Semantic radar needs more MAP space.",
385 "viewer.radar.nodes": "Semantic diagram radar nodes",
386 "viewer.radar.focus": "Focus {label} from Semantic Radar",
387 "viewer.radar.status": "{count} nodes · {viewport}",
388 "viewer.radar.fullMap": "{count} nodes · full map",
389 "viewer.radar.compacted": "Radar compacted to avoid covering the Semantic Passport or MAP controls.",
390 "viewer.radar.cancelWaiting": "Cancel semantic radar waiting for more MAP space",
391 "viewer.radar.needsSpace": "Semantic radar needs more visible MAP space",
392 "viewer.radar.viewport.full": "full map",
393 "viewer.radar.viewport.width": "{percent}% width",
394 "viewer.radar.viewport.scale": "{percent}% viewport",
395 "viewer.nav.controls": "Diagram view controls",
396 "viewer.nav.route": "Trace a directed route",
397 "viewer.nav.route.title": "Trace route (R)",
398 "viewer.nav.route.short": "ROUTE",
399 "viewer.nav.radar": "Open semantic radar",
400 "viewer.nav.radar.title": "Semantic radar (M)",
401 "viewer.nav.radar.short": "MAP",
402 "viewer.nav.lens": "Open semantic lens",
403 "viewer.nav.lens.title": "Semantic lens (L)",
404 "viewer.nav.lens.short": "LENS",
405 "viewer.nav.find": "Find a node",
406 "viewer.nav.find.title": "Find a node (/)",
407 "viewer.outline.title": "Node index",
408 "viewer.rail.show": "Notes & index",
409 "viewer.rail.controls": "Side panel",
410 "viewer.rail.collapse": "Collapse side panel",
411 "viewer.rail.bottom": "Move panel below the diagram",
412 "viewer.rail.right": "Move panel beside the diagram",
413 "viewer.nav.guide": "Open diagram guide",
414 "viewer.nav.guide.title": "Diagram guide (?)",
415 "viewer.nav.zoomOut": "Zoom out",
416 "viewer.nav.zoomOut.title": "Zoom out (-)",
417 "viewer.nav.reset": "Reset diagram view",
418 "viewer.nav.reset.title": "Reset view (0)",
419 "viewer.nav.read": "READ",
420 "viewer.nav.zoomIn": "Zoom in",
421 "viewer.nav.zoomIn.title": "Zoom in (+)",
422 "viewer.nav.camera": "{hint}. Reset diagram view",
423 "viewer.nav.camera.title": "{semantic}{hint} · reset view (0)",
424 "viewer.nav.camera.semantic": "Semantic camera active · ",
425 "viewer.nav.level.map": "MAP",
426 "viewer.nav.level.read": "READ",
427 "viewer.nav.level.full": "FULL",
428 "viewer.nav.level.auto": "AUTO",
429 "viewer.nav.detail.map": "Zoom in to reveal relationship labels and node context",
430 "viewer.nav.detail.read": "Zoom in again to reveal tags and annotations",
431 "viewer.nav.detail.full": "Full diagram detail",
432 "viewer.intent.summary": "{label}. {out} outgoing, {in} incoming{loops}. {total} connections. Press Enter for details.",
433 "viewer.intent.loops": ", {count} self loop",
434 "viewer.common.copied": "Copied",
435 "viewer.common.copyFailed": "Copy failed",
436 "viewer.common.copyLink": "Copy link",
437 "viewer.common.clear": "Clear",
438 "viewer.common.close": "Close",
439 "diagram.description.erd": "An entity-relationship diagram generated by Archify.",
440 "node.context.erd": "Entity",
441 "legend.erd.pk": "Primary key",
442 "legend.erd.fk": "Foreign key",
443 "legend.erd.uk": "Unique key",
444 "legend.erd.one": "One",
445 "legend.erd.many": "Many",
446 "legend.erd.optional": "Optional",
447 "diagram.description.tree": "A hierarchy diagram generated by Archify.",
448 "node.context.tree.root": "Root",
449 "node.context.tree.branch": "Branch",
450 "node.context.tree.leaf": "Leaf",
451 "tree.toggle.collapse": "Collapse {label} ({count} below)",
452 "tree.toggle.expand": "Expand {label} ({count} hidden)",
453 "tree.expandAll": "Expand all",
454 "diagram.description.class": "A class and interface diagram generated by Archify.",
455 "node.context.class.class": "Class",
456 "node.context.class.abstract": "Abstract class",
457 "node.context.class.interface": "Interface",
458 "node.context.class.enum": "Enumeration",
459 "node.context.class.record": "Record",
460 "legend.class.dependency": "Depends on",
461 "legend.class.association": "Association",
462 "legend.class.inheritance": "Inherits",
463 "legend.class.realization": "Implements",
464 "legend.class.composition": "Composition",
465 "legend.class.aggregation": "Aggregation",
466 "diagram.description.timeline": "An event timeline generated by Archify.",
467 "timeline.axis": "Time",
468 "timeline.break": "Axis break: {duration} without events omitted",
469 "timeline.compressed": "{count} quiet period(s) compressed (≈)",
470 "timeline.evidence.observed": "Observed events",
471 "timeline.evidence.illustrative": "Illustrative data",
472 "legend.timeline.default": "Event",
473 "legend.timeline.change": "Change",
474 "legend.timeline.alert": "Alert",
475 "legend.timeline.action": "Response",
476 "legend.timeline.recovery": "Recovery",
477 "diagram.description.waterfall": "An execution waterfall generated by Archify.",
478 "waterfall.evidence.measured": "Measured timing",
479 "waterfall.evidence.illustrative": "Illustrative timing",
480 "waterfall.wall": "Wall-clock {duration}",
481 "waterfall.share": "{percent} of {total} wall-clock",
482 "waterfall.incomplete": "incomplete, ≥ {duration}",
483 "waterfall.operation": "Operation",
484 "legend.waterfall.ok": "Completed",
485 "legend.waterfall.error": "Error",
486 "legend.waterfall.cancelled": "Cancelled",
487 "legend.waterfall.incomplete": "Incomplete (no recorded end)"