feat: add section navigation and embedded Archify diagrams
Build and publish Eldorado documentation / build (pull_request) Successful in 29s

This commit is contained in:
jarvis-at-skic committed 2026-10-02 10:33:55 +00:00
1 parent 076a7e5329
commit 9ad62a2ed6
133 files changed
+131095 -28

No files matched your search

+55
View File
@@ -0,0 +1,55 @@
{
"schema_version": 1,
"diagram_type": "lifecycle",
"meta": {
"title": "Agent Run Lifecycle",
"output": "examples/lifecycle-agent-run.html",
"viewBox": [1030, 630],
"animation": "trace",
"quality_profile": "showcase"
},
"lanes": [
{ "id": "main", "label": "Lifecycle phases" },
{ "id": "waiting", "label": "Interruptions" },
{ "id": "exceptions", "label": "Recovery loop" },
{ "id": "terminal", "label": "Terminal exits" }
],
"states": [
{ "id": "queued", "type": "start", "label": "Queued", "sublabel": "request accepted", "lane": "main", "col": 0, "step": "01", "tag": "entry" },
{ "id": "planning", "type": "active", "label": "Planning", "sublabel": "build task graph", "lane": "main", "col": 1, "step": "02", "tag": "model" },
{ "id": "executing", "type": "active", "label": "Executing", "sublabel": "tool calls", "lane": "main", "col": 2, "step": "03", "tag": "work" },
{ "id": "reviewing", "type": "decision", "label": "Reviewing", "sublabel": "quality gate", "lane": "main", "col": 3, "step": "04", "tag": "check" },
{ "id": "completed", "type": "success", "label": "Completed", "sublabel": "final response", "lane": "main", "col": 4, "step": "05", "tag": "done" },
{ "id": "approval", "type": "waiting", "label": "Needs Approval", "sublabel": "human gate", "lane": "waiting", "col": 0, "tag": "pause" },
{ "id": "blocked", "type": "waiting", "label": "Blocked", "sublabel": "missing input", "lane": "waiting", "col": 1, "tag": "wait" },
{ "id": "failed", "type": "failure", "label": "Failed", "sublabel": "recoverable error", "lane": "exceptions", "col": 0, "yOffset": 78, "tag": "retryable" },
{ "id": "cancelled", "type": "failure", "label": "Cancelled", "sublabel": "user stopped", "lane": "terminal", "col": 0, "tag": "terminal" },
{ "id": "expired", "type": "failure", "label": "Expired", "sublabel": "timeout", "lane": "terminal", "col": 1, "tag": "terminal" }
],
"transitions": [
{ "id": "approval-needed", "from": "executing", "to": "approval", "variant": "security", "fromSide": "bottom", "toSide": "top", "route": "straight" },
{ "id": "review-blocked", "from": "reviewing", "to": "blocked", "variant": "default", "route": "drop" },
{ "id": "execution-failed", "from": "executing", "to": "failed", "variant": "security", "fromSide": "left", "toSide": "left", "via": [[320, 157], [320, 385]] },
{ "id": "failed-retry", "from": "failed", "to": "executing", "variant": "emphasis", "fromSide": "left", "toSide": "top", "via": [[20, 385], [20, 80], [402, 80]] },
{ "id": "block-expired", "from": "blocked", "to": "expired", "variant": "security", "fromSide": "bottom", "toSide": "top", "route": "straight" },
{ "id": "approval-cancelled", "from": "approval", "to": "cancelled", "variant": "security", "fromSide": "bottom", "toSide": "top", "via": [[480, 336], [480, 432], [402, 432]] }
],
"cards": [
{
"dot": "emerald",
"title": "Main Path + Waits",
"items": [
"The run has five ordered phases from queue to completion",
"Approval and missing input pause the run without ending it"
]
},
{
"dot": "rose",
"title": "Recovery + Terminal Exits",
"items": [
"Failed loops back while retry budget remains",
"Cancelled and Expired are terminal exits with no return path"
]
}
]
}
+74
View File
@@ -0,0 +1,74 @@
{
"schema_version": 2,
"diagram_type": "workflow",
"meta": {
"title": "Agent Tool Call Workflow",
"animation": "trace",
"visual_preset": "signal-flow",
"quality_profile": "showcase",
"output": "examples/workflow-agent-tool-call-rendered.html"
},
"lanes": [
{ "id": "ui", "label": "User Interface" },
{ "id": "agent", "label": "Agent Runtime" },
{ "id": "policy", "label": "Policy & Recovery", "variant": "exception" },
{ "id": "tools", "label": "Tool Execution & Evidence" }
],
"phases": [
{ "id": "intake", "label": "Intake", "fromCol": 0, "toCol": 1 },
{ "id": "reasoning", "label": "Plan + route", "fromCol": 2, "toCol": 3, "variant": "emphasis" },
{ "id": "execution", "label": "Execute + report", "fromCol": 4, "toCol": 5, "variant": "dashed" }
],
"groups": [
{ "id": "agent_loop", "label": "Planning loop", "lane": "agent", "fromCol": 2, "toCol": 3, "variant": "emphasis" },
{ "id": "exception_path", "label": "Human or policy stop", "lane": "policy", "fromCol": 3, "toCol": 5, "variant": "security" },
{ "id": "evidence_path", "label": "Evidence path", "lane": "tools", "fromCol": 1, "toCol": 2, "variant": "dashed" },
{ "id": "tool_work", "label": "Tool work", "lane": "tools", "fromCol": 4, "toCol": 5, "variant": "dashed" }
],
"mainPath": ["user", "chat", "planner", "router", "approval", "tool", "external", "final"],
"nodes": [
{ "id": "user", "lane": "ui", "col": 0, "type": "external", "label": "User", "sublabel": "asks for work", "width": 132 },
{ "id": "chat", "lane": "ui", "col": 1, "type": "frontend", "label": "Chat Surface", "sublabel": "thread + files", "width": 132 },
{ "id": "final", "lane": "ui", "col": 5, "type": "backend", "label": "Final Reply", "sublabel": "answer + changes", "width": 132 },
{ "id": "planner", "lane": "agent", "col": 2, "type": "backend", "label": "Agent Planner", "sublabel": "plan next step", "tag": "context aware", "width": 132 },
{ "id": "router", "lane": "agent", "col": 3, "type": "backend", "label": "Tool Router", "sublabel": "choose capability", "width": 132 },
{ "id": "approval", "lane": "policy", "col": 3, "type": "security", "label": "Approval Gate", "sublabel": "scope + consent", "tag": "block risky ops", "width": 132 },
{ "id": "blocked", "lane": "policy", "col": 4, "type": "security", "label": "Blocked", "sublabel": "wait or reject", "width": 132 },
{ "id": "retry", "lane": "policy", "col": 5, "type": "messagebus", "label": "Retry Path", "sublabel": "revise request", "width": 132 },
{ "id": "tool", "lane": "tools", "col": 4, "type": "messagebus", "label": "Tool Call", "sublabel": "shell / browser / MCP", "tag": "structured result", "width": 132 },
{ "id": "external", "lane": "tools", "col": 5, "type": "cloud", "label": "External API", "sublabel": "network service", "width": 132 },
{ "id": "store", "lane": "tools", "col": 1, "type": "database", "label": "Context Store", "sublabel": "repo + memory", "width": 132 },
{ "id": "trace", "lane": "tools", "col": 2, "type": "database", "label": "Trace Log", "sublabel": "events + output", "width": 132 }
],
"edges": [
{ "id": "request-chat", "from": "user", "to": "chat", "variant": "default" },
{ "id": "plan-request", "from": "chat", "to": "planner", "label": "plan", "variant": "emphasis" },
{ "id": "planner-route", "from": "planner", "to": "router", "variant": "default" },
{ "id": "approval-check", "from": "router", "to": "approval", "label": "needs approval?", "variant": "security" },
{ "id": "approved-tool", "from": "approval", "to": "tool", "variant": "emphasis" },
{ "id": "approval-denied", "from": "approval", "to": "blocked", "label": "denied", "variant": "security", "role": "error" },
{ "id": "retry-request", "from": "blocked", "to": "retry", "variant": "dashed", "role": "branch" },
{ "id": "tool-external-call", "from": "tool", "to": "external", "variant": "default" },
{ "id": "external-reply", "from": "external", "to": "final", "variant": "emphasis", "role": "return", "fromSide": "right", "toSide": "right", "route": "outside-right", "width": 1.2 },
{ "id": "record-result", "from": "external", "to": "trace", "label": "record result", "variant": "dashed", "fromSide": "bottom", "toSide": "bottom", "route": "bottom-channel", "labelSegment": 1 },
{ "id": "write-trace-memory", "from": "store", "to": "trace", "label": "trace + memory", "variant": "dashed" }
],
"cards": [
{
"dot": "cyan",
"title": "Compiler Contract",
"items": [
"Lanes and columns determine node placement",
"Labels reserve clearance; routes stay orthogonal"
]
},
{
"dot": "rose",
"title": "Runtime Semantics",
"items": [
"Approval gates risky work before tool execution",
"Evidence returns through isolated trace and memory"
]
}
]
}
@@ -0,0 +1,56 @@
{
"schema_version": 1,
"diagram_type": "sequence",
"meta": {
"title": "Async Job Roundtrip",
"output": "examples/async-job-roundtrip.html",
"viewBox": [820, 920],
"animation": "trace",
"visual_preset": "signal-flow",
"quality_profile": "showcase"
},
"participants": [
{ "id": "client", "type": "external", "label": "Client", "sublabel": "mobile app" },
{ "id": "api", "type": "backend", "label": "Jobs API", "sublabel": "request edge" },
{ "id": "queue", "type": "messagebus", "label": "Queue", "sublabel": "durable work" },
{ "id": "worker", "type": "backend", "label": "Worker", "sublabel": "background" },
{ "id": "provider", "type": "cloud", "label": "Provider", "sublabel": "external API" },
{ "id": "store", "type": "database", "label": "Job Store", "sublabel": "source of truth" },
{ "id": "notify", "type": "messagebus", "label": "Notifier", "sublabel": "webhook" }
],
"segments": [
{ "from": 150, "to": 288, "label": "Accept" },
{ "from": 306, "to": 538, "label": "Background work" },
{ "from": 554, "to": 800, "label": "Notify + reconcile" }
],
"messages": [
{ "from": "client", "to": "api", "y": 180, "label": "POST /jobs", "variant": "emphasis" },
{ "from": "api", "to": "queue", "y": 222, "label": "enqueue job", "variant": "emphasis" },
{ "from": "api", "to": "client", "y": 264, "label": "202 + job id", "variant": "return" },
{ "from": "queue", "to": "worker", "y": 326, "label": "deliver", "variant": "emphasis" },
{ "from": "worker", "to": "provider", "y": 368, "label": "perform work", "variant": "default" },
{ "from": "provider", "to": "worker", "y": 410, "label": "result / timeout", "variant": "return" },
{ "from": "worker", "to": "queue", "y": 452, "label": "retry if timeout", "variant": "dashed" },
{ "from": "worker", "to": "store", "y": 494, "label": "persist final state", "variant": "emphasis" },
{ "from": "worker", "to": "notify", "y": 566, "label": "job.completed", "variant": "dashed" },
{ "from": "notify", "to": "client", "y": 608, "label": "signed webhook", "variant": "dashed" },
{ "from": "client", "to": "api", "y": 650, "label": "GET /jobs/:id", "variant": "default" },
{ "from": "api", "to": "store", "y": 692, "label": "read status", "variant": "default" },
{ "from": "store", "to": "api", "y": 734, "label": "completed", "variant": "return" },
{ "from": "api", "to": "client", "y": 776, "label": "200 final result", "variant": "return" }
],
"activations": [
{ "participant": "api", "from": 174, "to": 272, "type": "backend" },
{ "participant": "queue", "from": 216, "to": 334, "type": "messagebus" },
{ "participant": "worker", "from": 320, "to": 574, "type": "backend" },
{ "participant": "provider", "from": 362, "to": 416, "type": "cloud" },
{ "participant": "store", "from": 488, "to": 742, "type": "database" },
{ "participant": "notify", "from": 560, "to": 616, "type": "messagebus" },
{ "participant": "api", "from": 644, "to": 784, "type": "backend" }
],
"cards": [
{ "dot": "cyan", "title": "Fast Acknowledgement", "items": ["The caller receives a durable job id before work begins", "Queue ownership is visible in the acceptance contract", "The original connection does not wait for provider latency"] },
{ "dot": "orange", "title": "Bounded Recovery", "items": ["Timeouts re-enter the queue with a retry policy", "Final state is persisted before notification", "The job store remains the source of truth"] },
{ "dot": "emerald", "title": "Two Observation Paths", "items": ["A signed webhook announces completion", "Status polling is a fallback, not a second workflow", "Both paths converge on the same final state"] }
]
}
@@ -0,0 +1,34 @@
{
"schema_version": 1,
"diagram_type": "architecture",
"meta": {
"title": "Brand-aware AI delivery",
"output": "brand-aware-delivery.html",
"quality_profile": "showcase",
"viewBox": [1120, 640]
},
"components": [
{ "id": "request", "type": "external", "label": "Product request", "sublabel": "Owner brief", "pos": [38, 260], "size": [138, 68] },
{ "id": "claude", "type": "frontend", "label": "Claude", "sublabel": "Plan and author", "brand": "claude", "pos": [220, 260], "size": [138, 68] },
{ "id": "github", "type": "messagebus", "label": "GitHub", "sublabel": "Review and merge", "brand": "github", "pos": [402, 260], "size": [138, 68] },
{ "id": "container", "type": "backend", "label": "Docker service", "sublabel": "Build and run", "brand": "docker", "pos": [584, 260], "size": [138, 68] },
{ "id": "edge", "type": "cloud", "label": "Cloudflare", "sublabel": "Global delivery", "brand": "cloudflare", "pos": [766, 260], "size": [138, 68] },
{ "id": "customer", "type": "external", "label": "Customers", "sublabel": "Web and mobile", "pos": [948, 260], "size": [138, 68] },
{ "id": "database", "type": "database", "label": "PostgreSQL", "sublabel": "Durable state", "brand": "postgresql", "pos": [584, 420], "size": [138, 68] },
{ "id": "billing", "type": "external", "label": "Stripe", "sublabel": "Billing events", "brand": "stripe", "pos": [766, 420], "size": [138, 68] }
],
"connections": [
{ "id": "brief-to-claude", "from": "request", "to": "claude", "label": "brief", "variant": "emphasis" },
{ "id": "claude-to-github", "from": "claude", "to": "github", "label": "change set", "labelDy": -28 },
{ "id": "github-to-container", "from": "github", "to": "container", "label": "approved build", "labelDy": -28 },
{ "id": "container-to-edge", "from": "container", "to": "edge", "label": "deploy" },
{ "id": "edge-to-customer", "from": "edge", "to": "customer", "label": "HTTPS", "variant": "emphasis" },
{ "id": "container-to-database", "from": "container", "to": "database", "label": "SQL", "fromSide": "bottom", "toSide": "top", "labelAt": [625, 370] },
{ "id": "container-to-billing", "from": "container", "to": "billing", "label": "create charge", "variant": "dashed", "fromSide": "bottom", "toSide": "top", "via": [[653, 374], [835, 374]] },
{ "id": "billing-to-database", "from": "billing", "to": "database", "label": "webhook", "variant": "dashed" }
],
"cards": [
{ "dot": "cyan", "title": "Identity at a glance", "items": ["Semantic color still explains technical role", "Brand badges identify the actual products"] },
{ "dot": "amber", "title": "Portable by default", "items": ["Preset marks ship inside Archify", "Every visual export keeps the same badge"] }
]
}
@@ -0,0 +1,77 @@
{
"schema_version": 1,
"diagram_type": "sequence",
"meta": {
"title": "Cache Miss Request Sequence",
"output": "examples/sequence-cache-miss-request.html",
"viewBox": [1080, 580],
"column_fit": "spread",
"animation": "trace",
"quality_profile": "showcase"
},
"participants": [
{ "id": "user", "type": "external", "label": "User", "sublabel": "browser session" },
{ "id": "web", "type": "frontend", "label": "Web App", "sublabel": "React UI" },
{ "id": "api", "type": "backend", "label": "API", "sublabel": "request handler" },
{ "id": "auth", "type": "security", "label": "Auth", "sublabel": "JWT verify" },
{ "id": "redis", "type": "database", "label": "Redis", "sublabel": "cache" },
{ "id": "db", "type": "database", "label": "Postgres", "sublabel": "source of truth" },
{ "id": "trace", "type": "messagebus", "label": "Trace", "sublabel": "async event" }
],
"segments": [
{ "from": 150, "to": 250, "label": "Request" },
{ "from": 260, "to": 370, "label": "Fallback" },
{ "from": 380, "to": 480, "label": "Response + trace" }
],
"messages": [
{ "id": "open-page", "from": "user", "to": "web", "y": 160, "label": "open page", "variant": "default" },
{ "id": "dashboard-request", "from": "web", "to": "api", "y": 185, "label": "GET /dashboard", "variant": "emphasis" },
{ "id": "verify-jwt", "from": "api", "to": "auth", "y": 210, "label": "verify JWT", "variant": "security" },
{ "id": "auth-claims", "from": "auth", "to": "api", "y": 238, "label": "claims ok", "variant": "return" },
{ "id": "cache-read", "from": "api", "to": "redis", "y": 270, "label": "read cache", "variant": "default" },
{ "id": "cache-miss", "from": "redis", "to": "api", "y": 298, "label": "miss", "variant": "return" },
{ "id": "profile-query", "from": "api", "to": "db", "y": 330, "label": "query profile + metrics", "variant": "emphasis" },
{ "id": "profile-rows", "from": "db", "to": "api", "y": 358, "label": "rows", "variant": "return" },
{ "id": "cache-write", "from": "api", "to": "redis", "y": 390, "label": "set cache", "variant": "dashed" },
{ "id": "trace-emit", "from": "api", "to": "trace", "y": 418, "label": "emit trace", "variant": "dashed" },
{ "id": "dashboard-response", "from": "api", "to": "web", "y": 443, "label": "200 JSON", "variant": "return" },
{ "id": "page-render", "from": "web", "to": "user", "y": 468, "label": "render", "variant": "return" }
],
"activations": [
{ "participant": "web", "from": 180, "to": 474, "type": "frontend" },
{ "participant": "api", "from": 185, "to": 450, "type": "backend" },
{ "participant": "auth", "from": 205, "to": 244, "type": "security" },
{ "participant": "redis", "from": 265, "to": 304, "type": "database" },
{ "participant": "db", "from": 325, "to": 364, "type": "database" },
{ "participant": "trace", "from": 413, "to": 449, "type": "messagebus" }
],
"cards": [
{
"dot": "emerald",
"title": "Happy Path",
"items": [
"The main request is Web App -> API -> data source -> response",
"Return messages are quieter than forward calls",
"Activation bars make ownership duration visible"
]
},
{
"dot": "rose",
"title": "Policy + Fallback",
"items": [
"JWT verification is colored as a security interaction",
"Cache miss is visible without overpowering the main path",
"Database access only appears after cache fallback"
]
},
{
"dot": "orange",
"title": "Async Trace",
"items": [
"Trace emission is dashed and secondary",
"It does not block the response path",
"The diagram separates user-facing latency from observability"
]
}
]
}
@@ -0,0 +1,32 @@
{
"schema_version": 1,
"diagram_type": "architecture",
"meta": {
"title": "Checkout Platform — Baseline",
"output": "checkout-platform.base.html",
"visual_preset": "signal-flow"
},
"components": [
{ "id": "buyers", "type": "external", "label": "Buyers", "sublabel": "Web + mobile", "pos": [40, 250], "size": [120, 60] },
{ "id": "edge", "type": "cloud", "label": "Edge Gateway", "sublabel": "TLS + routing", "pos": [220, 250], "size": [130, 60] },
{ "id": "checkout", "type": "backend", "label": "Checkout API", "sublabel": "v1 service", "pos": [430, 250], "size": [130, 60] },
{ "id": "cache", "type": "database", "label": "Session Cache", "sublabel": "Redis", "pos": [430, 100], "size": [130, 60] },
{ "id": "orders", "type": "database", "label": "Orders", "sublabel": "PostgreSQL", "pos": [640, 250], "size": [130, 60] },
{ "id": "queue", "type": "messagebus", "label": "Order Events", "sublabel": "durable queue", "pos": [430, 400], "size": [130, 60] },
{ "id": "worker", "type": "backend", "label": "Fulfilment", "sublabel": "async worker", "pos": [640, 400], "size": [130, 60] },
{ "id": "payments", "type": "external", "label": "Payment Rail", "sublabel": "external", "pos": [850, 250], "size": [130, 60] }
],
"boundaries": [
{ "kind": "region", "label": "Production region", "wraps": ["edge", "checkout", "cache", "orders", "queue", "worker"] },
{ "kind": "security-group", "label": "Checkout trust zone", "wraps": ["checkout", "orders"] }
],
"connections": [
{ "id": "buyer-request", "from": "buyers", "to": "edge", "label": "HTTPS", "variant": "emphasis" },
{ "id": "edge-checkout", "from": "edge", "to": "checkout" },
{ "id": "session-read", "from": "checkout", "to": "cache", "label": "session", "fromSide": "top", "toSide": "bottom", "labelDy": -66 },
{ "id": "persist-order", "from": "checkout", "to": "orders", "label": "SQL" },
{ "id": "publish-order", "from": "checkout", "to": "queue", "label": "accepted", "variant": "dashed", "fromSide": "bottom", "toSide": "top", "labelDy": 66 },
{ "id": "consume-order", "from": "queue", "to": "worker" },
{ "id": "authorize-payment", "from": "orders", "to": "payments", "label": "authorize", "variant": "security" }
]
}
@@ -0,0 +1,32 @@
{
"schema_version": 1,
"diagram_type": "architecture",
"meta": {
"title": "Checkout Platform — Fraud Gate",
"output": "checkout-platform.head.html",
"visual_preset": "signal-flow"
},
"components": [
{ "id": "buyers", "type": "external", "label": "Buyers", "sublabel": "Web + mobile", "pos": [40, 250], "size": [120, 60] },
{ "id": "edge", "type": "cloud", "label": "Edge Gateway", "sublabel": "TLS + routing", "pos": [220, 250], "size": [130, 60] },
{ "id": "checkout", "type": "backend", "label": "Checkout API", "sublabel": "v2 idempotent", "pos": [430, 250], "size": [130, 60] },
{ "id": "fraud", "type": "security", "label": "Fraud Gate", "sublabel": "policy scoring", "pos": [640, 100], "size": [130, 60], "tag": "new owner" },
{ "id": "orders", "type": "database", "label": "Orders", "sublabel": "PostgreSQL", "pos": [640, 250], "size": [130, 60] },
{ "id": "queue", "type": "messagebus", "label": "Order Events", "sublabel": "durable queue", "pos": [430, 420], "size": [130, 60] },
{ "id": "worker", "type": "backend", "label": "Fulfilment", "sublabel": "async worker", "pos": [640, 400], "size": [130, 60] },
{ "id": "payments", "type": "external", "label": "Payment Rail", "sublabel": "external", "pos": [850, 250], "size": [130, 60] }
],
"boundaries": [
{ "kind": "region", "label": "Production region", "wraps": ["edge", "checkout", "fraud", "orders", "queue", "worker"] },
{ "kind": "security-group", "label": "Checkout trust zone", "wraps": ["checkout", "fraud", "orders"] }
],
"connections": [
{ "id": "buyer-request", "from": "buyers", "to": "edge", "label": "HTTPS", "variant": "emphasis" },
{ "id": "edge-checkout", "from": "edge", "to": "checkout" },
{ "id": "fraud-check", "from": "checkout", "to": "fraud", "label": "screen", "variant": "security", "fromSide": "top", "toSide": "bottom", "labelDy": -66 },
{ "id": "persist-order", "from": "checkout", "to": "orders", "label": "SQL tx" },
{ "id": "publish-order", "from": "checkout", "to": "queue", "label": "accepted", "variant": "dashed", "fromSide": "bottom", "toSide": "top", "labelDy": 76 },
{ "id": "consume-order", "from": "queue", "to": "worker" },
{ "id": "authorize-payment", "from": "fraud", "to": "payments", "label": "authorize", "variant": "security", "fromSide": "right", "toSide": "top", "via": [[820, 130], [915, 130]] }
]
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,48 @@
{
"schema_version": 2,
"diagram_type": "lifecycle",
"meta": {
"title": "Deployment Release Lifecycle",
"output": "examples/deployment-release.html",
"animation": "trace",
"visual_preset": "signal-flow",
"quality_profile": "showcase"
},
"lanes": [
{ "id": "main", "label": "Release phases" },
{ "id": "waiting", "label": "Approval + health wait" },
{ "id": "recovery", "label": "Rollback controller" },
{ "id": "terminal", "label": "Terminal exits" }
],
"states": [
{ "id": "queued", "type": "start", "label": "Queued", "sublabel": "change accepted", "lane": "main", "col": 0, "step": "01", "tag": "pending" },
{ "id": "building", "type": "active", "label": "Building", "sublabel": "immutable image", "lane": "main", "col": 1, "step": "02", "tag": "running" },
{ "id": "verifying", "type": "decision", "label": "Verifying", "sublabel": "tests + policy", "lane": "main", "col": 2, "step": "03", "tag": "gate" },
{ "id": "ready", "type": "waiting", "label": "Ready", "sublabel": "promotion pending", "lane": "main", "col": 3, "step": "04", "tag": "approved" },
{ "id": "live", "type": "success", "label": "Live", "sublabel": "production healthy", "lane": "main", "col": 4, "step": "05", "tag": "success" },
{ "id": "approval", "type": "waiting", "label": "Needs Approval", "sublabel": "release owner", "lane": "waiting", "col": 2, "tag": "pause" },
{ "id": "rollback", "type": "active", "label": "Rolling Back", "sublabel": "last good image", "lane": "recovery", "col": 3, "tag": "automatic" },
{ "id": "paused", "type": "waiting", "label": "Health Paused", "sublabel": "SLO regression", "lane": "waiting", "col": 4, "tag": "observe" },
{ "id": "cancelled", "type": "failure", "label": "Cancelled", "sublabel": "approval denied", "lane": "terminal", "col": 2, "tag": "terminal" },
{ "id": "failed", "type": "failure", "label": "Failed", "sublabel": "rollback failed", "lane": "terminal", "col": 3, "tag": "terminal" },
{ "id": "rolled_back", "type": "success", "label": "Rolled Back", "sublabel": "service restored", "lane": "terminal", "col": 4, "tag": "terminal" }
],
"transitions": [
{ "from": "queued", "to": "building" },
{ "from": "building", "to": "verifying" },
{ "from": "verifying", "to": "ready" },
{ "from": "ready", "to": "live" },
{ "from": "verifying", "to": "approval", "variant": "security", "label": "needs sign-off" },
{ "from": "approval", "to": "ready", "label": "approved" },
{ "from": "approval", "to": "cancelled", "variant": "security" },
{ "from": "ready", "to": "rollback", "variant": "security" },
{ "from": "rollback", "to": "failed", "variant": "security" },
{ "from": "live", "to": "paused", "variant": "dashed" },
{ "from": "paused", "to": "rolled_back", "variant": "emphasis" }
],
"cards": [
{ "dot": "cyan", "title": "Promotion Rail", "items": ["The release object moves through five ordered phases", "Verification and approval remain distinct states", "Live means production health is currently proven"] },
{ "dot": "amber", "title": "Wait States", "items": ["Human approval can pause without consuming a worker", "A health regression pauses further rollout", "Every wait exposes the event required to continue"] },
{ "dot": "rose", "title": "Explicit Endings", "items": ["Denied approval ends as Cancelled", "Rollback controller failure ends as Failed", "Successful rollback is a terminal restored outcome"] }
]
}
+52
View File
@@ -0,0 +1,52 @@
{
"schema_version": 1,
"diagram_type": "dataflow",
"meta": {
"title": "Order Event-stream Topology",
"output": "examples/event-stream.html",
"viewBox": [1080, 780],
"animation": "trace",
"visual_preset": "signal-flow",
"quality_profile": "showcase"
},
"stages": [
{ "label": "Producers" },
{ "label": "Transit" },
{ "label": "Processors" },
{ "label": "State + recovery" },
{ "label": "Consumers" }
],
"nodes": [
{ "id": "checkout", "type": "frontend", "label": "Checkout API", "sublabel": "order producer", "stage": 0, "row": 0, "tag": "team commerce" },
{ "id": "billing", "type": "backend", "label": "Billing API", "sublabel": "payment producer", "stage": 0, "row": 2, "tag": "team money" },
{ "id": "orders", "type": "messagebus", "label": "orders.v1", "sublabel": "12 partitions", "stage": 1, "row": 0, "tag": "key: order_id" },
{ "id": "payments", "type": "messagebus", "label": "payments.v2", "sublabel": "8 partitions", "stage": 1, "row": 2, "tag": "key: order_id" },
{ "id": "validate", "type": "backend", "label": "Order Validate", "sublabel": "group fulfillment", "stage": 2, "row": 0, "tag": "ordered" },
{ "id": "enrich", "type": "backend", "label": "Payment Enrich", "sublabel": "group analytics", "stage": 2, "row": 2, "tag": "at-least-once" },
{ "id": "state", "type": "database", "label": "Order State", "sublabel": "materialized view", "stage": 3, "row": 1, "tag": "idempotent" },
{ "id": "dlq", "type": "messagebus", "label": "events.dlq", "sublabel": "poison events", "stage": 3, "row": 4, "tag": "7-day retention" },
{ "id": "fulfillment", "type": "backend", "label": "Fulfillment", "sublabel": "shipping workflow", "stage": 4, "row": 0, "tag": "consumer" },
{ "id": "analytics", "type": "database", "label": "Analytics", "sublabel": "streaming facts", "stage": 4, "row": 2, "tag": "consumer" },
{ "id": "replay", "type": "security", "label": "Replay Tool", "sublabel": "approved batch", "stage": 4, "row": 4, "tag": "operator gate" },
{ "id": "ops", "type": "external", "label": "On-call", "sublabel": "DLQ owner", "stage": 4, "row": 3, "yOffset": -18, "tag": "SRE" }
],
"flows": [
{ "from": "checkout", "to": "orders", "label": "OrderPlaced", "classification": "schema v1", "variant": "emphasis", "route": "straight" },
{ "from": "billing", "to": "payments", "label": "PaymentCaptured", "classification": "schema v2", "variant": "emphasis", "route": "straight" },
{ "from": "orders", "to": "validate", "label": "ordered orders", "classification": "consumer group", "variant": "emphasis", "route": "straight" },
{ "from": "payments", "to": "enrich", "label": "payment facts", "classification": "at-least-once", "variant": "emphasis", "route": "straight" },
{ "from": "validate", "to": "state", "label": "valid order", "classification": "idempotent", "variant": "emphasis", "route": "vertical-channel" },
{ "from": "enrich", "to": "state", "label": "enriched payment", "classification": "idempotent", "variant": "default", "route": "vertical-channel" },
{ "from": "state", "to": "fulfillment", "label": "ready orders", "classification": "read model", "variant": "emphasis", "route": "vertical-channel" },
{ "from": "state", "to": "analytics", "label": "order facts", "classification": "non-PII", "variant": "default", "route": "vertical-channel" },
{ "from": "validate", "to": "dlq", "label": "invalid event", "classification": "dead letter", "variant": "security", "fromSide": "top", "toSide": "top", "via": [[530, 80], [20, 80], [20, 550], [745, 550]], "labelAt": [300, 550] },
{ "from": "enrich", "to": "dlq", "label": "poison event", "classification": "dead letter", "variant": "security", "route": "bottom-channel", "labelDy": 30 },
{ "from": "dlq", "to": "ops", "label": "failure sample", "classification": "restricted", "variant": "security", "route": "vertical-channel" },
{ "from": "dlq", "to": "replay", "label": "approved replay", "classification": "audited batch", "variant": "dashed", "route": "straight", "labelDy": 30 }
],
"cards": [
{ "dot": "amber", "title": "Transit Contract", "items": ["Every event and topic is named", "Partition keys preserve per-order ordering", "Consumer groups expose processing ownership"] },
{ "dot": "emerald", "title": "State + Delivery", "items": ["Processors write an idempotent materialized view", "Fulfillment and analytics consume distinct assets", "At-least-once delivery never implies duplicate business effects"] },
{ "dot": "rose", "title": "Failure Ownership", "items": ["Poison events land in a retained dead-letter topic", "On-call inspects samples before replay", "Replay is gated, batched, and auditable"] }
]
}
+143
View File
@@ -0,0 +1,143 @@
{
"schema_version": 2,
"diagram_type": "workflow",
"meta": {
"title": "2026年剩余假期安排",
"locale": "zh-CN",
"quality_profile": "showcase",
"legend": {
"entries": {
"backend": {
"label": "假期"
},
"security": {
"label": "补班"
},
"external": {
"label": "时间节点"
}
}
},
"output": "holiday-planning.html"
},
"lanes": [
{
"id": "calendar",
"label": "时间线"
},
{
"id": "makeup",
"label": "调休"
}
],
"mainPath": [
"today",
"mid_autumn",
"national_day",
"year_end"
],
"nodes": [
{
"id": "today",
"lane": "calendar",
"col": 0,
"type": "external",
"label": "今天 9月22日",
"sublabel": "周二 · 距中秋3天",
"icon": "clock"
},
{
"id": "mid_autumn",
"lane": "calendar",
"col": 1,
"type": "backend",
"label": "中秋节",
"sublabel": "9月25日–27日 · 3天",
"tag": "无需调休",
"icon": "moon"
},
{
"id": "national_day",
"lane": "calendar",
"col": 3,
"type": "backend",
"label": "国庆节",
"sublabel": "10月1日–7日 · 7天",
"tag": "连休",
"icon": "calendar"
},
{
"id": "year_end",
"lane": "calendar",
"col": 5,
"type": "external",
"label": "此后至年底",
"sublabel": "无法定节假日",
"icon": "flag"
},
{
"id": "makeup_work",
"lane": "makeup",
"col": 3,
"type": "security",
"label": "调休上班",
"sublabel": "10月10日(周六)",
"tag": "补班",
"icon": "briefcase"
}
],
"edges": [
{
"id": "to_mid_autumn",
"from": "today",
"to": "mid_autumn",
"label": "3天后连休"
},
{
"id": "mid_to_national",
"from": "mid_autumn",
"to": "national_day",
"label": "节后上班3天"
},
{
"id": "to_year_end",
"from": "national_day",
"to": "year_end",
"label": "假期结束"
},
{
"id": "makeup_branch",
"from": "national_day",
"to": "makeup_work",
"label": "国庆调休",
"role": "branch",
"variant": "security"
}
],
"cards": [
{
"dot": "emerald",
"title": "中秋节",
"items": [
"9月25日(周五)至27日(周日)放假,共3天",
"与周末自然相连,无需额外调休上班"
]
},
{
"dot": "amber",
"title": "国庆节",
"items": [
"10月1日(周四)至7日(周三)放假调休,共7天",
"9月20日(周日)上班日已过",
"10月10日(周六)需补班"
]
},
{
"dot": "slate",
"title": "年底前",
"items": [
"国庆假期结束后,到2026年底不再有法定节假日安排"
]
}
]
}
+59
View File
@@ -0,0 +1,59 @@
{
"schema_version": 1,
"diagram_type": "workflow",
"meta": {
"title": "Incident Response Runbook",
"output": "examples/incident-response.html",
"animation": "trace",
"visual_preset": "signal-flow",
"quality_profile": "showcase"
},
"lanes": [
{ "id": "signals", "label": "Signals" },
{ "id": "responders", "label": "Incident Command" },
{ "id": "mitigation", "label": "Service Mitigation" },
{ "id": "recovery", "label": "Recovery Evidence" },
{ "id": "communication", "label": "Stakeholder Communication" },
{ "id": "exceptions", "label": "Escalation + Rollback", "variant": "exception" }
],
"phases": [
{ "id": "detect", "label": "Detect", "fromCol": 0, "toCol": 1 },
{ "id": "respond", "label": "Triage + mitigate", "fromCol": 2, "toCol": 3, "variant": "emphasis" },
{ "id": "recover", "label": "Verify + close", "fromCol": 4, "toCol": 5, "variant": "dashed" }
],
"groups": [
{ "id": "command", "label": "Incident command", "lane": "responders", "fromCol": 1, "toCol": 3, "variant": "emphasis" },
{ "id": "exception_actions", "label": "If impact persists", "lane": "exceptions", "fromCol": 3, "toCol": 5, "variant": "security" }
],
"mainPath": ["alert", "page", "triage", "contain", "recover", "verify", "close"],
"nodes": [
{ "id": "alert", "lane": "signals", "col": 0, "type": "messagebus", "label": "SLO Alert", "sublabel": "burn rate" },
{ "id": "page", "lane": "responders", "col": 1, "width": 76, "type": "external", "label": "Page On-call", "sublabel": "acknowledge" },
{ "id": "triage", "lane": "responders", "col": 2, "width": 64, "type": "backend", "label": "Triage", "sublabel": "scope impact" },
{ "id": "declare", "lane": "responders", "col": 3, "type": "security", "label": "Declare", "sublabel": "assign commander", "tag": "SEV-1/2" },
{ "id": "contain", "lane": "mitigation", "col": 3, "width": 72, "type": "backend", "label": "Contain", "sublabel": "stop growth" },
{ "id": "recover", "lane": "mitigation", "col": 4, "width": 52, "type": "cloud", "label": "Recover", "sublabel": "restore" },
{ "id": "verify", "lane": "recovery", "col": 5, "type": "database", "label": "Verify", "sublabel": "SLO + traces", "tag": "15 min stable" },
{ "id": "close", "lane": "communication", "col": 5, "type": "external", "label": "Resolve", "sublabel": "final update" },
{ "id": "update", "lane": "communication", "col": 3, "type": "frontend", "label": "Status Update", "sublabel": "impact + ETA" },
{ "id": "escalate", "lane": "exceptions", "col": 3, "width": 72, "type": "security", "label": "Escalate", "sublabel": "specialist" },
{ "id": "rollback", "lane": "exceptions", "col": 5, "type": "messagebus", "label": "Rollback", "sublabel": "last good" }
],
"edges": [
{ "from": "alert", "to": "page", "label": "page", "variant": "emphasis", "route": "drop", "fromSide": "bottom", "toSide": "top" },
{ "from": "page", "to": "triage", "route": "bottom-channel", "fromSide": "bottom", "toSide": "bottom" },
{ "from": "triage", "to": "contain", "variant": "emphasis", "route": "drop", "fromSide": "bottom", "toSide": "top" },
{ "from": "contain", "to": "recover", "route": "bottom-channel", "fromSide": "bottom", "toSide": "bottom" },
{ "from": "recover", "to": "verify", "variant": "emphasis", "route": "drop", "fromSide": "bottom", "toSide": "top" },
{ "from": "verify", "to": "close", "variant": "emphasis", "route": "drop", "fromSide": "bottom", "toSide": "top" },
{ "from": "triage", "to": "declare", "variant": "security" },
{ "from": "declare", "to": "update", "variant": "dashed", "fromSide": "top", "toSide": "left", "via": [[430, 16], [20, 16], [20, 615]] },
{ "from": "update", "to": "escalate", "variant": "security", "route": "drop", "fromSide": "bottom", "toSide": "top" },
{ "from": "verify", "to": "rollback", "variant": "security", "role": "error", "route": "outside-right", "fromSide": "right", "toSide": "right" }
],
"cards": [
{ "dot": "rose", "title": "Ownership First", "items": ["A page is not an incident until someone owns command", "Severity and scope are explicit before mitigation spreads", "Escalation names the missing expertise"] },
{ "dot": "emerald", "title": "Recovery Is Evidence", "items": ["Mitigation can reduce impact without proving recovery", "SLOs and traces must stay healthy for a fixed window", "The final update follows verification, not optimism"] },
{ "dot": "cyan", "title": "Communication Contract", "items": ["Stakeholders receive impact, action, and next update time", "Rollback remains visible as a deliberate response", "Every branch has an owner and observable exit"] }
]
}
File diff suppressed because it is too large. Load diff
+425
View File
@@ -0,0 +1,425 @@
{
"page.title": "{title} Diagramm",
"diagram.description.architecture": "Ein von Archify erstelltes Architekturdiagramm.",
"diagram.description.workflow": "Ein von Archify erstelltes Workflow-Diagramm.",
"diagram.description.sequence": "Ein von Archify erstelltes Sequenzdiagramm.",
"diagram.description.dataflow": "Ein von Archify erstelltes Datenfluss-Diagramm.",
"diagram.description.lifecycle": "Ein von Archify erstelltes Lifecycle-Diagramm.",
"node.focus": "{label} fokussieren",
"node.focus.detail": "{label} fokussieren, {detail}",
"node.context.architecture": "Architekturkomponente",
"node.context.workflow": "Workflow-Knoten",
"node.context.sequence": "Sequenzteilnehmer",
"node.context.dataflow": "Datenfluss-Knoten",
"node.context.lifecycle": "Lifecycle-Status",
"legend.title": "Legende",
"legend.architecture.frontend": "Frontend",
"legend.architecture.backend": "Backend",
"legend.architecture.database": "Datenbank",
"legend.architecture.cloud": "Cloud",
"legend.architecture.security": "Sicherheit",
"legend.architecture.messagebus": "Nachrichtenbus",
"legend.architecture.external": "Extern",
"legend.workflow.frontend": "Benutzeroberfläche",
"legend.workflow.backend": "Agentenlogik",
"legend.workflow.security": "Richtlinie",
"legend.workflow.messagebus": "Werkzeugaktion",
"legend.workflow.database": "Kontext / Trace",
"legend.workflow.cloud": "Cloud-Dienst",
"legend.workflow.external": "Externes System",
"legend.sequence.emphasis": "Hauptanfrage",
"legend.sequence.return": "Rückgabe",
"legend.sequence.security": "Sicherheit",
"legend.sequence.dashed": "asynchroner Trace",
"legend.sequence.default": "Nachricht",
"legend.dataflow.emphasis": "Primärdaten",
"legend.dataflow.security": "Richtlinie / PII",
"legend.dataflow.dashed": "asynchroner Batch",
"legend.dataflow.database": "Datenspeicher",
"legend.dataflow.default": "Datenfluss",
"legend.lifecycle.start": "Startzustand",
"legend.lifecycle.active": "aktiv",
"legend.lifecycle.waiting": "Wartend",
"legend.lifecycle.decision": "Entscheidung",
"legend.lifecycle.success": "Erfolg",
"legend.lifecycle.failure": "Fehler / Abbruch",
"legend.lifecycle.neutral": "neutral",
"legend.lifecycle.external": "extern",
"legend.lifecycle.final": "Endzustand",
"viewer.kind.frontend": "Frontend",
"viewer.kind.backend": "Backend",
"viewer.kind.database": "Datenbank",
"viewer.kind.cloud": "Cloud",
"viewer.kind.security": "Sicherheit",
"viewer.kind.messagebus": "Nachrichtenbus",
"viewer.kind.external": "Extern",
"viewer.kind.neutral": "Neutral",
"viewer.kind.node": "Knoten",
"viewer.kind.start": "Start",
"viewer.kind.active": "Aktiv",
"viewer.kind.waiting": "Wartend",
"viewer.kind.decision": "Entscheidung",
"viewer.kind.success": "Erfolg",
"viewer.kind.failure": "Fehler",
"viewer.toolbar.actions": "Diagrammaktionen",
"viewer.theme.toggle.title": "Design wechseln (T)",
"viewer.theme.toggle": "Farbdesign wechseln",
"viewer.theme.dark": "Dunkel",
"viewer.theme.light": "Hell",
"viewer.preset.choose.title": "Visuellen Stil wählen (S wechselt durch)",
"viewer.preset.choose": "Visuellen Stil wählen",
"viewer.preset.style": "Stil",
"viewer.preset.menu": "Visueller Stil",
"viewer.preset.identity": "Visuelle Identität",
"viewer.preset.cycles": "S wechselt durch",
"viewer.preset.classic": "Klassisch",
"viewer.preset.classic.short": "Klassisch",
"viewer.preset.classic.hint": "Stabiler technischer Standard",
"viewer.preset.flow": "Signalfluss",
"viewer.preset.flow.short": "Fluss",
"viewer.preset.flow.hint": "Bewegungsbetonte Präsentation",
"viewer.preset.blueprint": "Bauplan",
"viewer.preset.blueprint.hint": "Technisches Review",
"viewer.preset.editorial": "Editorial",
"viewer.preset.editorial.hint": "Für Veröffentlichungen und Launch-Notizen",
"viewer.preset.badge.signalFlow": "SIGNALFLUSS",
"viewer.preset.badge.blueprint": "BAUPLAN / REV. 01",
"viewer.preset.badge.editorial": "EDITORIAL / FELDNOTIZ",
"viewer.preset.badge.editorialPlate": "ARCHIFY / TAFEL 04",
"viewer.preset.current": "Visueller Stil: {style}. Visuellen Stil wählen",
"viewer.motion.live": "Live",
"viewer.motion.still": "Statisch",
"viewer.motion.pause": "Bewegung pausieren",
"viewer.motion.resume": "Bewegung fortsetzen",
"viewer.motion.reduced": "Bewegung wegen reduzierter Bewegungseinstellung pausiert",
"viewer.motion.hidden": "Bewegung pausiert, während diese Seite ausgeblendet ist",
"viewer.motion.yielding": "Bewegung pausieren; derzeit an {owner} abgegeben",
"viewer.motion.yielding.title": "Live-Vorschau aktiv · an {owner} abgegeben",
"viewer.owner.route": "Routensonde",
"viewer.owner.lens": "Semantische Linse",
"viewer.owner.relationship": "Beziehungsvorschau",
"viewer.owner.intent": "Intent Trace",
"viewer.owner.focus": "semantischer Fokus",
"viewer.owner.legend": "Legendenvorschau",
"viewer.owner.reader": "Leserinteraktion",
"viewer.present.enter": "Präsentationsmodus starten",
"viewer.present.enter.title": "Präsentationsmodus (F)",
"viewer.present.exit": "Präsentationsmodus beenden",
"viewer.present.exit.title": "Präsentationsmodus beenden (F oder Escape)",
"viewer.present.present": "Präsentieren",
"viewer.present.exit.label": "Beenden",
"viewer.export.button": "Exportieren",
"viewer.export.button.title": "Diagramm exportieren (E)",
"viewer.export.diagram": "Diagramm exportieren",
"viewer.export.menu": "Exportieren",
"viewer.export.subtitle": "Portable, saubere Ausgaben",
"viewer.export.share": "Teilen",
"viewer.export.shareCard": "Freigabekarte",
"viewer.export.routeShareCard": "Routen-Freigabekarte",
"viewer.export.reachShareCard": "Reichweiten-Freigabekarte",
"viewer.export.copyDiagram": "Diagramm kopieren",
"viewer.export.clipboardPng": "PNG in Zwischenablage",
"viewer.export.raster": "Rasterbilder",
"viewer.export.image": "Bild",
"viewer.export.lossless": "Verlustfreies Bild",
"viewer.export.compact": "Kompaktes Bild",
"viewer.export.modern": "Modernes Bild",
"viewer.export.vectorMotion": "Vektor und Bewegung",
"viewer.export.vectorMotion.heading": "Vektor & Bewegung",
"viewer.export.editable": "Editierbarer Vektor",
"viewer.export.motion6s": "6-Sekunden-Bewegung",
"viewer.export.unsupported": "Von diesem Browser nicht unterstützt",
"viewer.export.clipboardUnsupported": "Bild-Zwischenablage wird von diesem Browser nicht unterstützt",
"viewer.export.clipboardUnsupported.short": "Dieser Browser unterstützt keine Bild-Zwischenablage.",
"viewer.export.motionUnavailable": "Bewegungsaufnahme in diesem Browser nicht verfügbar",
"viewer.export.webmUnavailable": "WebM in diesem Browser nicht verfügbar",
"viewer.export.failed": "Export fehlgeschlagen: {message}",
"viewer.export.unknownVariant": "Unbekannter Freigabekarten-Typ: {variant}",
"viewer.export.routeRequired": "Route verfolgen, bevor eine Routen-Freigabekarte exportiert wird",
"viewer.export.reachRequired": "Verfasste Reichweite verfolgen, bevor eine Reichweiten-Freigabekarte exportiert wird",
"viewer.export.unknown": "unbekannt",
"viewer.export.routeFailed": "Export der Routen-Freigabekarte fehlgeschlagen: {message}",
"viewer.export.reachFailed": "Export der Reichweiten-Freigabekarte fehlgeschlagen: {message}",
"viewer.export.copyFailed": "Kopieren fehlgeschlagen: {message}",
"viewer.export.copiedPng": "PNG in Zwischenablage kopiert",
"viewer.export.downloadedRoute": "Routen-Freigabekarte heruntergeladen",
"viewer.export.downloadedReach": "Reichweiten-Freigabekarte heruntergeladen",
"viewer.export.downloadedWebm": "WebM heruntergeladen",
"viewer.export.recording": "6 Sekunden Bewegung werden aufgezeichnet …",
"viewer.export.card.routeSummary.one": "Route: {source} → {target} · {count} gerichteter Hop",
"viewer.export.card.routeSummary.other": "Route: {source} → {target} · {count} gerichtete Hops",
"viewer.export.card.reachSummary": "Verfasst {direction} von {origin} · {nodes} · {links} · max. {hops}",
"viewer.export.card.node.one": "{count} Knoten",
"viewer.export.card.node.other": "{count} Knoten",
"viewer.export.card.link.one": "{count} Verbindung",
"viewer.export.card.link.other": "{count} Verbindungen",
"viewer.export.card.hop.one": "{count} Hop",
"viewer.export.card.hop.other": "{count} Hops",
"viewer.export.card.routeBadge": "ARCHIFY · ROUTE · {hops}",
"viewer.export.card.reachBadge": "ARCHIFY · {direction} REICHWEITE",
"viewer.export.direction.upstream": "Vorgelagert",
"viewer.export.direction.downstream": "Nachgelagert",
"viewer.export.error.canvasUnavailable": "Canvas für {label} nicht verfügbar",
"viewer.export.error.contextUnavailable": "2D-Canvas-Kontext für {label} nicht verfügbar",
"viewer.export.error.toBlobUnavailable": "canvas.toBlob für {label} nicht verfügbar",
"viewer.export.error.toBlobNull": "canvas.toBlob lieferte keine Daten für {label}",
"viewer.export.error.variantsCombined": "Freigabekarten-Typen können nicht kombiniert werden",
"viewer.export.error.viewerState": "Beim Export der Freigabekarte konnte der temporäre Viewer-Zustand nicht entfernt werden",
"viewer.export.error.routeState": "Beim Export der Routenkarte konnte die aufgelöste Route nicht sicher erhalten werden",
"viewer.export.error.reachState": "Beim Export der Reichweitenkarte konnte die verfasste Reichweite nicht sicher erhalten werden",
"viewer.export.error.webmRequirements": "Der WebM-Bewegungsexport erfordert eine Trace-Animation und Browser-Unterstützung für MediaRecorder",
"viewer.export.error.mediaRecorder": "MediaRecorder fehlgeschlagen",
"viewer.export.error.emptyWebm": "MediaRecorder hat ein leeres WebM erzeugt",
"viewer.export.error.webmBackground": "SVG-Hintergrund konnte für den WebM-Export nicht geladen werden",
"viewer.guide.eyebrow": "Diagrammleitfaden",
"viewer.guide.close": "Diagrammleitfaden schließen",
"viewer.guide.inspecting": "Kompilierte Semantik wird geprüft",
"viewer.guide.actions": "Diagramm-Erkundungsaktionen",
"viewer.guide.find": "Beliebigen Knoten finden",
"viewer.guide.find.hint": "Labels, Zuständigkeiten, Arten und stabile IDs durchsuchen.",
"viewer.guide.route": "Eine Route verfolgen",
"viewer.guide.route.aria": "Eine gerichtete Route verfolgen",
"viewer.guide.route.hint": "Herausfinden, wie zwei semantische Knoten in verfasster Richtung verbunden sind.",
"viewer.guide.map": "Das gesamte System sehen",
"viewer.guide.map.hint": "Semantisches Radar mit Live-Ansicht und stabilen Knoten öffnen.",
"viewer.guide.lens": "Semantische Arten vergleichen",
"viewer.guide.lens.hint": "Rollen zählen, ihren Verkehr sichtbar machen und direkte verfasste Verbindungen vergleichen.",
"viewer.guide.present": "Präsentationsmodus starten",
"viewer.guide.present.hint": "Dem Live-Diagramm die gesamte Ansicht geben, ohne den Export zu verändern.",
"viewer.guide.shortcuts": "Weitere Tastenkombinationen",
"viewer.guide.shortcut.export": "Exportieren",
"viewer.guide.shortcut.theme": "Design",
"viewer.guide.shortcut.style": "Stil",
"viewer.guide.shortcut.reset": "Zurücksetzen",
"viewer.guide.shortcut.zoomIn": "Vergrößern",
"viewer.guide.shortcut.zoomOut": "Verkleinern",
"viewer.guide.shortcut.close": "Schließen",
"viewer.guide.facts": "{nodes} · {relationships}",
"viewer.guide.fact.node.one": "{count} semantischer Knoten",
"viewer.guide.fact.node.other": "{count} semantische Knoten",
"viewer.guide.fact.relationship.one": "{count} Beziehung",
"viewer.guide.fact.relationship.other": "{count} Beziehungen",
"viewer.guide.open": "Diagrammleitfaden öffnen",
"viewer.finder.title": "Knoten finden",
"viewer.finder.close": "Knotensuche schließen",
"viewer.finder.placeholder": "Labels oder IDs suchen",
"viewer.finder.search": "Diagrammknoten durchsuchen",
"viewer.finder.results": "Diagrammknoten",
"viewer.finder.empty": "Keine passenden Knoten",
"viewer.finder.result.focus": "{label} fokussieren",
"viewer.finder.result.routeStart": "{label} als Routenstart wählen",
"viewer.finder.result.routeTarget": "{label} als Routenziel wählen, {links}",
"viewer.finder.status.empty": "Keine passenden Knoten",
"viewer.finder.status.count.one": "{count} passender Knoten",
"viewer.finder.status.count.other": "{count} passende Knoten",
"viewer.finder.noun.nodes": "Knoten",
"viewer.finder.link.one": "{count} Verbindung",
"viewer.finder.link.other": "{count} Verbindungen",
"viewer.finder.result.focus.one": "{label} fokussieren, {count} zugehörige Verbindung",
"viewer.finder.result.focus.other": "{label} fokussieren, {count} zugehörige Verbindungen",
"viewer.finder.status.filtered": "{visible} von {available} {noun}",
"viewer.finder.status.all": "{available} {noun}",
"viewer.passport.eyebrow": "Semantischer Pass",
"viewer.passport.metadata": "Knoten-Metadaten",
"viewer.passport.evidence": "Verifizierter Quellnachweis",
"viewer.passport.verified": "Verifizierte Quelle",
"viewer.passport.verificationScope": "Verifiziert gegen lokales Git zur fixierten Revision. Remote-Zugriff wurde nicht geprüft.",
"viewer.passport.reach": "Verfasste Reichweite",
"viewer.passport.reach.trace": "Verfasste Erreichbarkeit verfolgen",
"viewer.passport.upstream": "Vorgelagert",
"viewer.passport.downstream": "Nachgelagert",
"viewer.passport.upstream.trace": "Vorgelagerte verfasste Erreichbarkeit verfolgen",
"viewer.passport.downstream.trace": "Nachgelagerte verfasste Erreichbarkeit verfolgen",
"viewer.passport.close": "Semantischen Pass schließen",
"viewer.passport.copy": "Link kopieren",
"viewer.passport.copy.focus": "Link zum fokussierten Knoten kopieren",
"viewer.passport.relations": "Beziehungen",
"viewer.passport.relations.show": "Verbundene Beziehungen anzeigen",
"viewer.passport.relations.hide": "Verbundene Beziehungen ausblenden",
"viewer.passport.relations.list": "Verbundene Beziehungen",
"viewer.passport.copyRelation": "Beziehung kopieren",
"viewer.passport.copyNode": "Knoten kopieren",
"viewer.passport.copyPinned": "Link zur angehefteten Beziehung kopieren",
"viewer.passport.copySource": "Link zum Quellknoten kopieren",
"viewer.passport.copy.focused.success": "Link des fokussierten Knotens kopiert",
"viewer.passport.copy.pinned.success": "Link der angehefteten Beziehung kopiert",
"viewer.passport.copy.focused.failed": "Link des fokussierten Knotens konnte nicht kopiert werden",
"viewer.passport.copy.pinned.failed": "Link der angehefteten Beziehung konnte nicht kopiert werden",
"viewer.passport.relationship.none": "Keine verbundenen Beziehungen",
"viewer.passport.relationship.count.one": "{count} Beziehung",
"viewer.passport.relationship.count.other": "{count} Beziehungen",
"viewer.passport.relationship.show.one": "{count} verbundene Beziehung anzeigen",
"viewer.passport.relationship.show.other": "{count} verbundene Beziehungen anzeigen",
"viewer.passport.relationship.summary": "{out} ausgehend · {in} eingehend{loops}",
"viewer.passport.relationship.loops": " · {count} Selbstschleife",
"viewer.passport.relationship.explorer": "Direkter Beziehungs-Explorer",
"viewer.passport.relationship.help": "Pfeiltasten zum Erkunden der Beziehungen verwenden. Enter oder Leertaste heftet Details an; Escape hebt die Auswahl auf.",
"viewer.passport.relationship.loopsBack": "schleift zurück",
"viewer.passport.relationship.connectsTo": "verbindet zu",
"viewer.passport.relationship.connectsFrom": "verbindet von",
"viewer.passport.relationship.pinned": "Angeheftete Beziehung · {from} → {to} · {label}",
"viewer.passport.relationship.inspect": "Beziehung {index} von {total} prüfen: {from} zu {to}, {label}. Enter für Details drücken.",
"viewer.passport.relationship.group.out": "Ausgehend",
"viewer.passport.relationship.group.in": "Eingehend",
"viewer.passport.relationship.group.loop": "Selbstschleifen",
"viewer.passport.relationship.row": "{group}: {relationship}, {neighbor}",
"viewer.passport.relationship.direction.out": "AUS →",
"viewer.passport.relationship.direction.in": "← EIN",
"viewer.passport.relationship.direction.loop": "SCHLEIFE",
"viewer.passport.sourceCount.one": "{count} verifizierte Quellenreferenz",
"viewer.passport.sourceCount.other": "{count} verifizierte Quellenreferenzen",
"viewer.passport.sourceMarker": "QUELLE",
"viewer.passport.beacon.one": "{count} verifizierte Quelle; diesen Knoten fokussieren, um sie zu prüfen",
"viewer.passport.beacon.other": "{count} verifizierte Quellen; diesen Knoten fokussieren, um sie zu prüfen",
"viewer.passport.repository.open": "Verifizierte Repository-Revision {revision} öffnen",
"viewer.passport.source.open": "Verifizierte Quelle {path} bei Revision {revision} öffnen",
"viewer.passport.source.openLink": "Öffnen ↗",
"viewer.passport.reach.upstream.one": "{count} vorgelagerten verfassten Knoten verfolgen",
"viewer.passport.reach.upstream.other": "{count} vorgelagerte verfasste Knoten verfolgen",
"viewer.passport.reach.downstream.one": "{count} nachgelagerten verfassten Knoten verfolgen",
"viewer.passport.reach.downstream.other": "{count} nachgelagerte verfasste Knoten verfolgen",
"viewer.passport.reach.noUpstream": "Keine vorgelagerten verfassten Knoten",
"viewer.passport.reach.noDownstream": "Keine nachgelagerten verfassten Knoten",
"viewer.passport.reach.status": "{direction} · {nodes} Knoten · {links} Verbindungen · max. {hops} Hops",
"viewer.route.eyebrow": "Routensonde",
"viewer.route.start": "Startknoten wählen",
"viewer.route.start.find": "Start finden",
"viewer.route.start.find.aria": "Einen Routenstart finden",
"viewer.route.copy": "Link kopieren",
"viewer.route.copy.aria": "Link zur verfolgten Route kopieren",
"viewer.route.clear": "Löschen",
"viewer.route.clear.aria": "Routensonde löschen",
"viewer.route.traced": "Verfolgte Route",
"viewer.route.pickTwo": "Zwei semantische Knoten im Diagramm auswählen",
"viewer.route.pickOne": "Einen semantischen Knoten im Diagramm auswählen",
"viewer.route.controls": "Routen-Verlaufssteuerung",
"viewer.route.previous": "Vorherige Routenposition",
"viewer.route.play": "Routenverlauf abspielen",
"viewer.route.pause": "Routenverlauf pausieren",
"viewer.route.replay": "Routenverlauf erneut abspielen",
"viewer.route.next": "Nächste Routenposition",
"viewer.route.journey": "Verlauf",
"viewer.route.pause.label": "Pausieren",
"viewer.route.replay.label": "Erneut abspielen",
"viewer.route.overview": "Übersicht",
"viewer.route.overview.aria": "Vollständige Routenübersicht anzeigen",
"viewer.route.instructions": "Quelle wählen, dann das Ziel. Die Richtung ist entscheidend.",
"viewer.route.destination": "Ziel ausgehend von {label} wählen",
"viewer.route.destination.find": "Ziel finden",
"viewer.route.destination.find.aria": "Ein erreichbares Routenziel finden",
"viewer.route.differentDestination": "Anderes Ziel wählen",
"viewer.route.distinct": "Eine Route benötigt zwei unterschiedliche semantische Knoten.",
"viewer.route.unreachable": "Keine gerichtete Route zu {label}",
"viewer.route.unreachable.detail": "{target} ist von {source} aus nicht erreichbar. Ein hervorgehobenes Ziel wählen.",
"viewer.route.start.instructions": "Quelle auswählen. Im nächsten Schritt werden nur gerichtete Ziele angezeigt.",
"viewer.route.copy.success": "Link zur verfolgten Route kopiert",
"viewer.route.copy.failed": "Link zur verfolgten Route konnte nicht kopiert werden",
"viewer.route.position": "Routenposition {index} von {total}: {label}",
"viewer.route.step": "Schritt {index} von {total} · {phase} · {label}",
"viewer.route.motionRequired": "Automatischer Verlauf erfordert Live-Bewegung",
"viewer.route.trigger.clear": "Verfolgte Route löschen",
"viewer.route.overview.status": "{nodes} · {hops} · kürzeste verfasste Route",
"viewer.route.overview.node.one": "{count} Knoten",
"viewer.route.overview.node.other": "{count} Knoten",
"viewer.route.overview.hop.one": "{count} gerichteter Hop",
"viewer.route.overview.hop.other": "{count} gerichtete Hops",
"viewer.route.phase.playing": "Läuft",
"viewer.route.phase.complete": "Abgeschlossen",
"viewer.route.phase.inspecting": "Wird geprüft",
"viewer.route.destination.count.one": "{count} gerichtetes Ziel verfügbar. Einen hervorgehobenen Knoten wählen.",
"viewer.route.destination.count.other": "{count} gerichtete Ziele verfügbar. Einen hervorgehobenen Knoten wählen.",
"viewer.route.noOutgoing": "Hier startet keine ausgehende Route. Löschen und eine andere Quelle wählen.",
"viewer.route.result.title": "{source} nach {target}",
"viewer.route.finder.source.title": "Routenstart wählen",
"viewer.route.finder.source.placeholder": "Routenquellen suchen",
"viewer.route.finder.source.empty": "Keine passenden Routenquellen",
"viewer.route.finder.source.results": "Knoten, die eine Route starten können",
"viewer.route.finder.source.noun": "Routenquellen",
"viewer.route.finder.source.badge": "Start",
"viewer.route.finder.target.title": "Ziel ausgehend von {label}",
"viewer.route.finder.target.placeholder": "Erreichbare Ziele suchen",
"viewer.route.finder.target.empty": "Keine passenden erreichbaren Ziele",
"viewer.route.finder.target.results": "Erreichbare Routenziele",
"viewer.route.finder.target.noun": "erreichbare Ziele",
"viewer.route.hop.one": "{count} Hop",
"viewer.route.hop.other": "{count} Hops",
"viewer.lens.eyebrow": "Semantische Linse",
"viewer.lens.title": "Systemrollen vergleichen",
"viewer.lens.close": "Semantische Linse schließen",
"viewer.lens.instruction": "Bis zu zwei semantische Arten wählen. Eine zeigt ihren echten Verkehr; zwei vergleichen nur direkte verfasste Beziehungen.",
"viewer.lens.kinds": "Semantische Arten",
"viewer.lens.choose": "Eine Art wählen, um ihre Knoten und berührenden Beziehungen zu prüfen.",
"viewer.lens.copy": "Link zur semantischen Linse kopieren",
"viewer.lens.clear": "Semantische Linse löschen",
"viewer.lens.open": "Semantische Linse öffnen",
"viewer.lens.openActive": "Aktive semantische Linse öffnen",
"viewer.lens.legend": "Semantische Legende",
"viewer.lens.legend.inspect.one": "{label} prüfen, {count} Knoten",
"viewer.lens.legend.inspect.other": "{label} prüfen, {count} Knoten",
"viewer.lens.kind.count.one": "{label}, {count} Knoten",
"viewer.lens.kind.count.other": "{label}, {count} Knoten",
"viewer.lens.compare.one": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} direkte Beziehung",
"viewer.lens.compare.other": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} direkte Beziehungen",
"viewer.lens.single": "{nodes} · {relationships} · verbundene Nachbarn bleiben sichtbar",
"viewer.lens.node.one": "{count} {label}-Knoten",
"viewer.lens.node.other": "{count} {label}-Knoten",
"viewer.lens.relationship.one": "{count} berührende Beziehung",
"viewer.lens.relationship.other": "{count} berührende Beziehungen",
"viewer.radar.title": "Semantisches Radar",
"viewer.radar.building": "Übersicht wird erstellt",
"viewer.radar.openFull": "Vollständiges semantisches Radar öffnen",
"viewer.radar.open": "Radar öffnen",
"viewer.radar.close": "Semantisches Radar schließen",
"viewer.radar.surface": "Diagrammübersicht. Auf einen Knoten klicken, um ihn zu fokussieren, oder mit den Pfeiltasten schwenken.",
"viewer.radar.click": "Knoten anklicken",
"viewer.radar.drag": "Ziehen zum Schwenken",
"viewer.radar.space": "Semantisches Radar benötigt mehr MAP-Platz.",
"viewer.radar.nodes": "Semantische Diagramm-Radarknoten",
"viewer.radar.focus": "{label} vom semantischen Radar fokussieren",
"viewer.radar.status": "{count} Knoten · {viewport}",
"viewer.radar.fullMap": "{count} Knoten · vollständige Karte",
"viewer.radar.compacted": "Radar verkleinert, um den semantischen Pass oder die MAP-Steuerung nicht zu verdecken.",
"viewer.radar.cancelWaiting": "Wartendes semantisches Radar auf mehr MAP-Platz abbrechen",
"viewer.radar.needsSpace": "Semantisches Radar benötigt mehr sichtbaren MAP-Platz",
"viewer.radar.viewport.full": "vollständige Karte",
"viewer.radar.viewport.width": "{percent}% Breite",
"viewer.radar.viewport.scale": "{percent}% Ansicht",
"viewer.nav.controls": "Diagrammansicht-Steuerung",
"viewer.nav.route": "Eine gerichtete Route verfolgen",
"viewer.nav.route.title": "Route verfolgen (R)",
"viewer.nav.route.short": "PFAD",
"viewer.nav.radar": "Semantisches Radar öffnen",
"viewer.nav.radar.title": "Semantisches Radar (M)",
"viewer.nav.radar.short": "KARTE",
"viewer.nav.lens": "Semantische Linse öffnen",
"viewer.nav.lens.title": "Semantische Linse (L)",
"viewer.nav.lens.short": "LINSE",
"viewer.nav.find": "Knoten finden",
"viewer.nav.find.title": "Knoten finden (/)",
"viewer.nav.guide": "Diagrammleitfaden öffnen",
"viewer.nav.guide.title": "Diagrammleitfaden (?)",
"viewer.nav.zoomOut": "Verkleinern",
"viewer.nav.zoomOut.title": "Verkleinern (-)",
"viewer.nav.reset": "Diagrammansicht zurücksetzen",
"viewer.nav.reset.title": "Ansicht zurücksetzen (0)",
"viewer.nav.read": "LESEN",
"viewer.nav.zoomIn": "Vergrößern",
"viewer.nav.zoomIn.title": "Vergrößern (+)",
"viewer.nav.camera": "{hint}. Diagrammansicht zurücksetzen",
"viewer.nav.camera.title": "{semantic}{hint} · Ansicht zurücksetzen (0)",
"viewer.nav.camera.semantic": "Semantische Kamera aktiv · ",
"viewer.nav.level.map": "KARTE",
"viewer.nav.level.read": "LESEN",
"viewer.nav.level.full": "VOLL",
"viewer.nav.level.auto": "AUTO",
"viewer.nav.detail.map": "Vergrößern, um Beziehungslabels und Knotenkontext anzuzeigen",
"viewer.nav.detail.read": "Erneut vergrößern, um Tags und Anmerkungen anzuzeigen",
"viewer.nav.detail.full": "Vollständige Diagrammdetails",
"viewer.intent.summary": "{label}. {out} ausgehend, {in} eingehend{loops}. {total} Verbindungen. Enter für Details drücken.",
"viewer.intent.loops": ", {count} Selbstschleife",
"viewer.common.copied": "Kopiert",
"viewer.common.copyFailed": "Kopieren fehlgeschlagen",
"viewer.common.copyLink": "Link kopieren",
"viewer.common.clear": "Löschen",
"viewer.common.close": "Schließen"
}
+440
View File
@@ -0,0 +1,440 @@
{
"page.title": "{title} · Diagrama",
"diagram.description.architecture": "Un diagrama de arquitectura generado por Archify.",
"diagram.description.workflow": "Un diagrama de flujo de trabajo generado por Archify.",
"diagram.description.sequence": "Un diagrama de secuencia generado por Archify.",
"diagram.description.dataflow": "Un diagrama de flujo de datos generado por Archify.",
"diagram.description.lifecycle": "Un diagrama de ciclo de vida generado por Archify.",
"node.focus": "Enfocar {label}",
"node.focus.detail": "Enfocar {label}, {detail}",
"node.context.architecture": "Componente de arquitectura",
"node.context.workflow": "Nodo de flujo de trabajo",
"node.context.sequence": "Participante de secuencia",
"node.context.dataflow": "Nodo de flujo de datos",
"node.context.lifecycle": "Estado del ciclo de vida",
"legend.title": "Leyenda",
"legend.architecture.frontend": "Frontend",
"legend.architecture.backend": "Backend",
"legend.architecture.database": "Base de datos",
"legend.architecture.cloud": "Nube",
"legend.architecture.security": "Seguridad",
"legend.architecture.messagebus": "Bus de mensajes",
"legend.architecture.external": "Externo",
"legend.workflow.frontend": "Interfaz de usuario",
"legend.workflow.backend": "Lógica del agente",
"legend.workflow.security": "Política",
"legend.workflow.messagebus": "Acción de herramienta",
"legend.workflow.database": "Contexto / traza",
"legend.workflow.cloud": "Servicio en la nube",
"legend.workflow.external": "Sistema externo",
"legend.sequence.emphasis": "solicitud principal",
"legend.sequence.return": "respuesta",
"legend.sequence.security": "seguridad",
"legend.sequence.dashed": "traza asíncrona",
"legend.sequence.default": "mensaje",
"legend.dataflow.emphasis": "datos primarios",
"legend.dataflow.security": "política / PII",
"legend.dataflow.dashed": "lote asíncrono",
"legend.dataflow.database": "almacén de datos",
"legend.dataflow.default": "flujo de datos",
"legend.lifecycle.start": "estado inicial",
"legend.lifecycle.active": "activo",
"legend.lifecycle.waiting": "en espera",
"legend.lifecycle.decision": "decisión",
"legend.lifecycle.success": "éxito",
"legend.lifecycle.failure": "fallo / salida",
"legend.lifecycle.neutral": "neutral",
"legend.lifecycle.external": "externo",
"legend.lifecycle.final": "estado final",
"viewer.kind.frontend": "Frontend",
"viewer.kind.backend": "Backend",
"viewer.kind.database": "Base de datos",
"viewer.kind.cloud": "Nube",
"viewer.kind.security": "Seguridad",
"viewer.kind.messagebus": "Bus de mensajes",
"viewer.kind.external": "Externo",
"viewer.kind.neutral": "Neutral",
"viewer.kind.node": "Nodo",
"viewer.kind.start": "Inicio",
"viewer.kind.active": "Activo",
"viewer.kind.waiting": "En espera",
"viewer.kind.decision": "Decisión",
"viewer.kind.success": "Éxito",
"viewer.kind.failure": "Fallo",
"viewer.toolbar.actions": "Acciones del diagrama",
"viewer.theme.toggle.title": "Cambiar tema (T)",
"viewer.theme.toggle": "Cambiar tema de color",
"viewer.theme.dark": "Oscuro",
"viewer.theme.light": "Claro",
"viewer.preset.choose.title": "Elegir estilo visual (S alterna)",
"viewer.preset.choose": "Elegir estilo visual",
"viewer.preset.style": "Estilo",
"viewer.preset.menu": "Estilo visual",
"viewer.preset.identity": "Identidad visual",
"viewer.preset.cycles": "alterna",
"viewer.preset.classic": "Clásico",
"viewer.preset.classic.short": "Clásico",
"viewer.preset.classic.hint": "Predeterminado técnico estable",
"viewer.preset.flow": "Flujo de señal",
"viewer.preset.flow.short": "Flujo",
"viewer.preset.flow.hint": "Presentación con énfasis en el movimiento",
"viewer.preset.blueprint": "Plano",
"viewer.preset.blueprint.hint": "Revisión de ingeniería",
"viewer.preset.editorial": "Editorial",
"viewer.preset.editorial.hint": "Notas de publicación y lanzamiento",
"viewer.preset.badge.signalFlow": "FLUJO DE SEÑAL",
"viewer.preset.badge.blueprint": "PLANO / REV 01",
"viewer.preset.badge.editorial": "EDITORIAL / NOTA DE CAMPO",
"viewer.preset.badge.editorialPlate": "ARCHIFY / LÁMINA 04",
"viewer.preset.current": "Estilo visual: {style}. Elegir estilo visual",
"viewer.motion.live": "Activa",
"viewer.motion.still": "Fija",
"viewer.motion.pause": "Pausar animación",
"viewer.motion.resume": "Reanudar animación",
"viewer.motion.reduced": "Animación pausada por la preferencia de movimiento reducido",
"viewer.motion.hidden": "Animación pausada mientras esta página está oculta",
"viewer.motion.yielding": "Pausar animación; cediendo a {owner}",
"viewer.motion.yielding.title": "Vista previa en vivo activada · cediendo a {owner}",
"viewer.owner.route": "Sonda de ruta",
"viewer.owner.lens": "Lente semántico",
"viewer.owner.relationship": "Vista previa de relación",
"viewer.owner.intent": "Traza de intención",
"viewer.owner.focus": "enfoque semántico",
"viewer.owner.legend": "vista previa de la leyenda",
"viewer.owner.reader": "interacción del lector",
"viewer.present.enter": "Entrar al modo presentación",
"viewer.present.enter.title": "Modo presentación (F)",
"viewer.present.exit": "Salir del modo presentación",
"viewer.present.exit.title": "Salir del modo presentación (F o Escape)",
"viewer.present.present": "Presentar",
"viewer.present.exit.label": "Salir",
"viewer.export.button": "Exportar",
"viewer.export.button.title": "Exportar diagrama (E)",
"viewer.export.diagram": "Exportar diagrama",
"viewer.export.menu": "Exportar",
"viewer.export.subtitle": "Salidas portables y limpias",
"viewer.export.share": "Compartir",
"viewer.export.shareCard": "Tarjeta para compartir",
"viewer.export.routeShareCard": "Tarjeta de ruta para compartir",
"viewer.export.reachShareCard": "Tarjeta de alcance para compartir",
"viewer.export.copyDiagram": "Copiar diagrama",
"viewer.export.clipboardPng": "PNG al portapapeles",
"viewer.export.raster": "Imágenes rasterizadas",
"viewer.export.image": "Imagen",
"viewer.export.lossless": "Imagen sin pérdida",
"viewer.export.compact": "Imagen compacta",
"viewer.export.modern": "Imagen moderna",
"viewer.export.vectorMotion": "Vector y movimiento",
"viewer.export.vectorMotion.heading": "Vector y movimiento",
"viewer.export.editable": "Vector editable",
"viewer.export.svg.auto": "SVG · Auto",
"viewer.export.svg.auto.hint": "Coincide con el tema del host",
"viewer.export.svg.light": "SVG · Claro",
"viewer.export.svg.light.hint": "Siempre claro",
"viewer.export.svg.dark": "SVG · Oscuro",
"viewer.export.svg.dark.hint": "Siempre oscuro",
"viewer.export.motion6s": "Movimiento de 6 s",
"viewer.export.unsupported": "No compatible con este navegador",
"viewer.export.clipboardUnsupported": "Este navegador no admite escribir imágenes en el portapapeles",
"viewer.export.clipboardUnsupported.short": "Escritura de imágenes en el portapapeles no admitida en este navegador.",
"viewer.export.motionUnavailable": "Captura de movimiento no disponible en este navegador",
"viewer.export.webmUnavailable": "WebM no disponible en este navegador",
"viewer.export.failed": "Falló la exportación: {message}",
"viewer.export.unknownVariant": "Variante de tarjeta para compartir desconocida: {variant}",
"viewer.export.routeRequired": "Traza una ruta antes de exportar una tarjeta de ruta para compartir",
"viewer.export.reachRequired": "Traza el alcance definido antes de exportar una tarjeta de alcance para compartir",
"viewer.export.unknown": "desconocido",
"viewer.export.routeFailed": "Falló la exportación de la tarjeta de ruta para compartir: {message}",
"viewer.export.reachFailed": "Falló la exportación de la tarjeta de alcance para compartir: {message}",
"viewer.export.copyFailed": "Error al copiar: {message}",
"viewer.export.copiedPng": "PNG copiado al portapapeles",
"viewer.export.downloadedRoute": "Tarjeta de ruta para compartir descargada",
"viewer.export.downloadedReach": "Tarjeta de alcance para compartir descargada",
"viewer.export.downloadedWebm": "WebM descargado",
"viewer.export.recording": "Grabando 6 segundos de movimiento…",
"viewer.export.card.routeSummary.one": "Ruta: {source} → {target} · {count} paso",
"viewer.export.card.routeSummary.other": "Ruta: {source} → {target} · {count} pasos",
"viewer.export.card.reachSummary": "Alcance definido {direction} desde {origin} · {nodes} · {links} · máx {hops}",
"viewer.export.card.node.one": "{count} nodo",
"viewer.export.card.node.other": "{count} nodos",
"viewer.export.card.link.one": "{count} enlace",
"viewer.export.card.link.other": "{count} enlaces",
"viewer.export.card.hop.one": "{count} salto",
"viewer.export.card.hop.other": "{count} saltos",
"viewer.export.card.routeBadge": "ARCHIFY · RUTA · {hops}",
"viewer.export.card.reachBadge": "ARCHIFY · ALCANCE {direction}",
"viewer.export.direction.upstream": "Ascendente",
"viewer.export.direction.downstream": "Descendente",
"viewer.export.error.canvasUnavailable": "Lienzo no disponible para {label}",
"viewer.export.error.contextUnavailable": "Contexto de lienzo 2D no disponible para {label}",
"viewer.export.error.toBlobUnavailable": "canvas.toBlob no disponible para {label}",
"viewer.export.error.toBlobNull": "canvas.toBlob no devolvió datos para {label}",
"viewer.export.error.variantsCombined": "Las variantes de tarjeta para compartir no se pueden combinar",
"viewer.export.error.viewerState": "La exportación de la tarjeta para compartir no pudo quitar el estado temporal del visor",
"viewer.export.error.routeState": "La exportación de la tarjeta de ruta no pudo preservar la ruta resuelta de forma segura",
"viewer.export.error.reachState": "La exportación de la tarjeta de alcance no pudo preservar el alcance definido de forma segura",
"viewer.export.error.webmRequirements": "La exportación de movimiento WebM requiere una animación de traza y compatibilidad del navegador con MediaRecorder",
"viewer.export.error.mediaRecorder": "MediaRecorder falló",
"viewer.export.error.emptyWebm": "MediaRecorder produjo un WebM vacío",
"viewer.export.error.webmBackground": "No se pudo cargar el fondo SVG para la exportación WebM",
"viewer.guide.title": "Explorar este sistema",
"viewer.focus.selectedNodes": "{count} nodos seleccionados",
"viewer.guide.eyebrow": "Guía del diagrama",
"viewer.guide.close": "Cerrar la guía del diagrama",
"viewer.guide.inspecting": "Inspeccionando la semántica compilada",
"viewer.guide.actions": "Acciones de exploración del diagrama",
"viewer.guide.find": "Buscar cualquier nodo",
"viewer.guide.find.hint": "Busca por etiquetas, responsabilidades, tipos e IDs estables.",
"viewer.guide.route": "Trazar una ruta",
"viewer.guide.route.aria": "Trazar una ruta dirigida",
"viewer.guide.route.hint": "Pregunta cómo se conectan dos nodos semánticos en el sentido definido.",
"viewer.guide.map": "Ver todo el sistema",
"viewer.guide.map.hint": "Abre el Radar semántico con un viewport en vivo y nodos estables.",
"viewer.guide.lens": "Comparar tipos semánticos",
"viewer.guide.lens.hint": "Cuenta roles, revela su tráfico y compara enlaces directos definidos.",
"viewer.guide.present": "Entrar al modo presentación",
"viewer.guide.present.hint": "Dale al diagrama en vivo todo el viewport sin cambiar la exportación.",
"viewer.guide.shortcuts": "Atajos de teclado adicionales",
"viewer.guide.shortcut.export": "Exportar",
"viewer.guide.shortcut.theme": "Tema",
"viewer.guide.shortcut.style": "Estilo",
"viewer.guide.shortcut.reset": "Restablecer",
"viewer.guide.shortcut.zoomIn": "Acercar",
"viewer.guide.shortcut.zoomOut": "Alejar",
"viewer.guide.shortcut.close": "Cerrar",
"viewer.guide.facts": "{nodes} · {relationships}",
"viewer.guide.fact.node.one": "{count} nodo semántico",
"viewer.guide.fact.node.other": "{count} nodos semánticos",
"viewer.guide.fact.relationship.one": "{count} relación",
"viewer.guide.fact.relationship.other": "{count} relaciones",
"viewer.guide.open": "Abrir la guía del diagrama",
"viewer.finder.title": "Buscar un nodo",
"viewer.finder.close": "Cerrar el buscador de nodos",
"viewer.finder.placeholder": "Buscar etiquetas o IDs",
"viewer.finder.search": "Buscar nodos del diagrama",
"viewer.finder.results": "Nodos del diagrama",
"viewer.finder.empty": "No hay nodos coincidentes",
"viewer.finder.result.focus": "Enfocar {label}",
"viewer.finder.result.routeStart": "Elegir {label} como inicio de la ruta",
"viewer.finder.result.routeTarget": "Elegir {label} como destino de la ruta, {links}",
"viewer.finder.status.empty": "No hay nodos coincidentes",
"viewer.finder.status.count.one": "{count} nodo coincidente",
"viewer.finder.status.count.other": "{count} nodos coincidentes",
"viewer.finder.noun.nodes": "nodos",
"viewer.finder.link.one": "{count} enlace",
"viewer.finder.link.other": "{count} enlaces",
"viewer.finder.result.focus.one": "Enfocar {label}, {count} conexión relacionada",
"viewer.finder.result.focus.other": "Enfocar {label}, {count} conexiones relacionadas",
"viewer.finder.status.filtered": "{visible} de {available} {noun}",
"viewer.finder.status.all": "{available} {noun}",
"viewer.passport.eyebrow": "Pasaporte semántico",
"viewer.passport.metadata": "Metadatos del nodo",
"viewer.passport.evidence": "Evidencia de fuente verificada",
"viewer.passport.verified": "Fuente verificada",
"viewer.passport.verificationScope": "Verificado contra el Git local en la revisión fijada. No se ha comprobado el acceso remoto.",
"viewer.passport.reach": "Alcance definido",
"viewer.passport.reach.trace": "Trazar la alcanzabilidad definida",
"viewer.passport.upstream": "Ascendente",
"viewer.passport.downstream": "Descendente",
"viewer.passport.upstream.trace": "Trazar la alcanzabilidad definida ascendente",
"viewer.passport.downstream.trace": "Trazar la alcanzabilidad definida descendente",
"viewer.passport.close": "Cerrar el pasaporte semántico",
"viewer.passport.move": "Mover el pasaporte semántico. Arrastra, usa las flechas o pulsa Inicio para restablecer.",
"viewer.passport.copy": "Copiar enlace",
"viewer.passport.copy.focus": "Copiar enlace al nodo enfocado",
"viewer.passport.relations": "Relaciones",
"viewer.passport.relations.show": "Mostrar relaciones conectadas",
"viewer.passport.relations.hide": "Ocultar relaciones conectadas",
"viewer.passport.relations.list": "Relaciones conectadas",
"viewer.passport.copyRelation": "Copiar relación",
"viewer.passport.copyNode": "Copiar nodo",
"viewer.passport.copyPinned": "Copiar enlace a la relación fijada",
"viewer.passport.copySource": "Copiar enlace al nodo de origen",
"viewer.passport.copy.focused.success": "Enlace del nodo enfocado copiado",
"viewer.passport.copy.pinned.success": "Enlace de la relación fijada copiado",
"viewer.passport.copy.focused.failed": "No se pudo copiar el enlace del nodo enfocado",
"viewer.passport.copy.pinned.failed": "No se pudo copiar el enlace de la relación fijada",
"viewer.passport.relationship.none": "No hay relaciones conectadas",
"viewer.passport.relationship.count.one": "{count} relación",
"viewer.passport.relationship.count.other": "{count} relaciones",
"viewer.passport.relationship.show.one": "Mostrar {count} relación conectada",
"viewer.passport.relationship.show.other": "Mostrar {count} relaciones conectadas",
"viewer.passport.relationship.summary": "{out} salientes · {in} entrantes{loops}",
"viewer.passport.relationship.loops": " · {count} bucle",
"viewer.passport.relationship.explorer": "Explorador de relaciones directas",
"viewer.passport.relationship.help": "Usa las flechas para explorar las relaciones. Pulsa Enter o Espacio para fijar detalles; Escape las borra.",
"viewer.passport.relationship.loopsBack": "vuelve sobre sí mismo",
"viewer.passport.relationship.connectsTo": "conecta a",
"viewer.passport.relationship.connectsFrom": "conecta desde",
"viewer.passport.relationship.pinned": "Relación fijada · {from} → {to} · {label}",
"viewer.passport.relationship.inspect": "Inspeccionar relación {index} de {total}: {from} a {to}, {label}. Pulsa Enter para ver detalles.",
"viewer.passport.relationship.group.out": "Salientes",
"viewer.passport.relationship.group.in": "Entrantes",
"viewer.passport.relationship.group.loop": "Bucles propios",
"viewer.passport.relationship.row": "{group}: {relationship}, {neighbor}",
"viewer.passport.relationship.direction.out": "SAL →",
"viewer.passport.relationship.direction.in": "← ENT",
"viewer.passport.relationship.direction.loop": "BUCLE",
"viewer.passport.sourceCount.one": "{count} referencia de fuente verificada",
"viewer.passport.sourceCount.other": "{count} referencias de fuente verificadas",
"viewer.passport.sourceMarker": "SRC",
"viewer.passport.beacon.one": "{count} fuente verificada; enfoca este nodo para inspeccionar",
"viewer.passport.beacon.other": "{count} fuentes verificadas; enfoca este nodo para inspeccionar",
"viewer.passport.repository.open": "Abrir la revisión verificada del repositorio {revision}",
"viewer.passport.source.open": "Abrir la fuente verificada {path} en la revisión {revision}",
"viewer.passport.source.openLink": "Abrir ↗",
"viewer.passport.reach.upstream.one": "Trazar {count} nodo definido ascendente",
"viewer.passport.reach.upstream.other": "Trazar {count} nodos definidos ascendentes",
"viewer.passport.reach.downstream.one": "Trazar {count} nodo definido descendente",
"viewer.passport.reach.downstream.other": "Trazar {count} nodos definidos descendentes",
"viewer.passport.reach.noUpstream": "No hay nodos definidos ascendentes",
"viewer.passport.reach.noDownstream": "No hay nodos definidos descendentes",
"viewer.passport.reach.status": "{direction} · {nodes} nodos · {links} enlaces · máx {hops} saltos",
"viewer.route.eyebrow": "Ruta",
"viewer.route.start": "Haz clic donde empieza la ruta",
"viewer.route.start.find": "Buscar inicio",
"viewer.route.start.find.aria": "Buscar un inicio de ruta",
"viewer.route.copy": "Copiar enlace",
"viewer.route.copy.aria": "Copiar enlace a la ruta trazada",
"viewer.route.clear": "Borrar",
"viewer.route.clear.aria": "Borrar la sonda de ruta",
"viewer.route.traced": "Ruta",
"viewer.route.pickTwo": "Haz clic en dos nodos del diagrama",
"viewer.route.pickOne": "Haz clic en un nodo del diagrama",
"viewer.route.controls": "Controles del recorrido de la ruta",
"viewer.route.previous": "Posición anterior de la ruta",
"viewer.route.play": "Reproducir el recorrido de la ruta",
"viewer.route.pause": "Pausar el recorrido de la ruta",
"viewer.route.replay": "Repetir el recorrido de la ruta",
"viewer.route.next": "Posición siguiente de la ruta",
"viewer.route.journey": "Recorrido",
"viewer.route.pause.label": "Pausar",
"viewer.route.replay.label": "Repetir",
"viewer.route.overview": "Vista general",
"viewer.route.overview.aria": "Mostrar la vista general completa de la ruta",
"viewer.route.instructions": "Haz clic en un inicio y luego en un final. La ruta sigue las flechas.",
"viewer.route.destination": "¿Dónde termina la ruta desde {label}?",
"viewer.route.destination.find": "Buscar destino",
"viewer.route.destination.find.aria": "Buscar un destino de ruta alcanzable",
"viewer.route.differentDestination": "Elige un destino diferente",
"viewer.route.distinct": "Elige dos nodos distintos.",
"viewer.route.unreachable": "No se llega a {label} desde aquí",
"viewer.route.unreachable.detail": "No se llega a {target} desde {source} siguiendo las flechas. Elige un nodo resaltado.",
"viewer.route.start.instructions": "Luego elige el final. Solo se iluminan los nodos alcanzables.",
"viewer.route.copy.success": "Enlace de la ruta trazada copiado",
"viewer.route.copy.failed": "No se pudo copiar el enlace de la ruta trazada",
"viewer.route.position": "Posición de la ruta {index} de {total}: {label}",
"viewer.route.step": "Paso {index} de {total} · {phase} · {label}",
"viewer.route.motionRequired": "El recorrido automático requiere la animación Activa",
"viewer.route.trigger.clear": "Borrar la ruta trazada",
"viewer.route.overview.status": "{nodes} · {hops} · ruta más corta",
"viewer.route.overview.node.one": "{count} nodo",
"viewer.route.overview.node.other": "{count} nodos",
"viewer.route.overview.hop.one": "{count} paso",
"viewer.route.overview.hop.other": "{count} pasos",
"viewer.route.phase.playing": "Reproduciendo",
"viewer.route.phase.complete": "Completo",
"viewer.route.phase.inspecting": "Inspeccionando",
"viewer.route.destination.count.one": "{count} nodo alcanzable está resaltado. Haz clic en él.",
"viewer.route.destination.count.other": "{count} nodos alcanzables están resaltados. Haz clic en uno.",
"viewer.route.noOutgoing": "Ninguna flecha sale de este nodo. Bórralo y elige otro inicio.",
"viewer.route.result.title": "{source} a {target}",
"viewer.route.finder.source.title": "Elegir el inicio de la ruta",
"viewer.route.finder.source.placeholder": "Buscar orígenes de ruta",
"viewer.route.finder.source.empty": "No hay orígenes de ruta coincidentes",
"viewer.route.finder.source.results": "Nodos que pueden iniciar una ruta",
"viewer.route.finder.source.noun": "orígenes de ruta",
"viewer.route.finder.source.badge": "inicio",
"viewer.route.finder.target.title": "Destino desde {label}",
"viewer.route.finder.target.placeholder": "Buscar destinos alcanzables",
"viewer.route.finder.target.empty": "No hay destinos alcanzables coincidentes",
"viewer.route.finder.target.results": "Destinos de ruta alcanzables",
"viewer.route.finder.target.noun": "destinos alcanzables",
"viewer.route.hop.one": "{count} salto",
"viewer.route.hop.other": "{count} saltos",
"viewer.lens.eyebrow": "Lente semántico",
"viewer.lens.title": "Comparar roles del sistema",
"viewer.lens.close": "Cerrar el lente semántico",
"viewer.lens.instruction": "Elige hasta dos tipos semánticos. Uno revela su tráfico real; dos comparan solo las relaciones directas definidas.",
"viewer.lens.kinds": "Tipos semánticos",
"viewer.lens.choose": "Elige un tipo para inspeccionar sus nodos y las relaciones que lo tocan.",
"viewer.lens.copy": "Copiar enlace al lente semántico",
"viewer.lens.clear": "Borrar el lente semántico",
"viewer.lens.open": "Abrir el lente semántico",
"viewer.lens.openActive": "Abrir el lente semántico activo",
"viewer.lens.legend": "Leyenda semántica",
"viewer.lens.legend.inspect.one": "Inspeccionar {label}, {count} nodo",
"viewer.lens.legend.inspect.other": "Inspeccionar {label}, {count} nodos",
"viewer.lens.kind.count.one": "{label}, {count} nodo",
"viewer.lens.kind.count.other": "{label}, {count} nodos",
"viewer.lens.compare.one": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} relación directa",
"viewer.lens.compare.other": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} relaciones directas",
"viewer.lens.single": "{nodes} · {relationships} · los pares conectados permanecen visibles",
"viewer.lens.node.one": "{count} nodo {label}",
"viewer.lens.node.other": "{count} nodos {label}",
"viewer.lens.relationship.one": "{count} relación en contacto",
"viewer.lens.relationship.other": "{count} relaciones en contacto",
"viewer.radar.title": "Radar semántico",
"viewer.radar.building": "Construyendo la vista general",
"viewer.radar.openFull": "Abrir el radar semántico completo",
"viewer.radar.open": "Abrir el radar",
"viewer.radar.close": "Cerrar el radar semántico",
"viewer.radar.surface": "Vista general del diagrama. Haz clic en un nodo para enfocarlo, o usa las flechas para desplazarte.",
"viewer.radar.click": "Clic en el nodo",
"viewer.radar.drag": "Arrastra para desplazar",
"viewer.radar.space": "El radar semántico necesita más espacio de MAPA.",
"viewer.radar.nodes": "Nodos del radar del diagrama semántico",
"viewer.radar.focus": "Enfocar {label} desde el Radar semántico",
"viewer.radar.status": "{count} nodos · {viewport}",
"viewer.radar.fullMap": "{count} nodos · mapa completo",
"viewer.radar.compacted": "Radar compactado para no tapar el Pasaporte semántico ni los controles de MAPA.",
"viewer.radar.cancelWaiting": "Cancelar la espera del radar semántico por más espacio de MAPA",
"viewer.radar.needsSpace": "El radar semántico necesita más espacio de MAPA visible",
"viewer.radar.viewport.full": "mapa completo",
"viewer.radar.viewport.width": "{percent}% de ancho",
"viewer.radar.viewport.scale": "{percent}% del viewport",
"viewer.nav.controls": "Controles de vista del diagrama",
"viewer.nav.route": "Trazar una ruta dirigida",
"viewer.nav.route.title": "Trazar ruta (R)",
"viewer.nav.route.short": "RUTA",
"viewer.nav.radar": "Abrir el radar semántico",
"viewer.nav.radar.title": "Radar semántico (M)",
"viewer.nav.radar.short": "MAPA",
"viewer.nav.lens": "Abrir el lente semántico",
"viewer.nav.lens.title": "Lente semántico (L)",
"viewer.nav.lens.short": "LENTE",
"viewer.nav.find": "Buscar un nodo",
"viewer.nav.find.title": "Buscar un nodo (/)",
"viewer.outline.title": "Índice de nodos",
"viewer.rail.show": "Notas e índice",
"viewer.rail.controls": "Panel lateral",
"viewer.rail.collapse": "Contraer panel lateral",
"viewer.rail.bottom": "Mover el panel debajo",
"viewer.rail.right": "Mover el panel al lado",
"viewer.nav.guide": "Abrir la guía del diagrama",
"viewer.nav.guide.title": "Guía del diagrama (?)",
"viewer.nav.zoomOut": "Alejar",
"viewer.nav.zoomOut.title": "Alejar (-)",
"viewer.nav.reset": "Restablecer la vista del diagrama",
"viewer.nav.reset.title": "Restablecer vista (0)",
"viewer.nav.read": "LEER",
"viewer.nav.zoomIn": "Acercar",
"viewer.nav.zoomIn.title": "Acercar (+)",
"viewer.nav.camera": "{hint}. Restablecer la vista del diagrama",
"viewer.nav.camera.title": "{semantic}{hint} · restablecer vista (0)",
"viewer.nav.camera.semantic": "Cámara semántica activa · ",
"viewer.nav.level.map": "MAPA",
"viewer.nav.level.read": "LEER",
"viewer.nav.level.full": "COMPLETO",
"viewer.nav.level.auto": "AUTO",
"viewer.nav.detail.map": "Acerca para revelar las etiquetas de relación y el contexto de los nodos",
"viewer.nav.detail.read": "Acerca de nuevo para revelar etiquetas y anotaciones",
"viewer.nav.detail.full": "Detalle completo del diagrama",
"viewer.intent.summary": "{label}. {out} salientes, {in} entrantes{loops}. {total} conexiones. Pulsa Enter para ver detalles.",
"viewer.intent.loops": ", {count} bucle propio",
"viewer.common.copied": "Copiado",
"viewer.common.copyFailed": "Error al copiar",
"viewer.common.copyLink": "Copiar enlace",
"viewer.common.clear": "Borrar",
"viewer.common.close": "Cerrar"
}
+425
View File
@@ -0,0 +1,425 @@
{
"page.title": "Diagramme {title}",
"diagram.description.architecture": "Un diagramme d'architecture généré par Archify.",
"diagram.description.workflow": "Un diagramme de workflow généré par Archify.",
"diagram.description.sequence": "Un diagramme de séquence généré par Archify.",
"diagram.description.dataflow": "Un diagramme de flux de données généré par Archify.",
"diagram.description.lifecycle": "Un diagramme de cycle de vie généré par Archify.",
"node.focus": "Centrer sur {label}",
"node.focus.detail": "Centrer sur {label}, {detail}",
"node.context.architecture": "Composant d'architecture",
"node.context.workflow": "Nœud de workflow",
"node.context.sequence": "Participant de séquence",
"node.context.dataflow": "Nœud de flux de données",
"node.context.lifecycle": "État de cycle de vie",
"legend.title": "Légende",
"legend.architecture.frontend": "Frontend",
"legend.architecture.backend": "Backend",
"legend.architecture.database": "Base de données",
"legend.architecture.cloud": "Cloud",
"legend.architecture.security": "Sécurité",
"legend.architecture.messagebus": "Bus de messages",
"legend.architecture.external": "Externe",
"legend.workflow.frontend": "Interface utilisateur",
"legend.workflow.backend": "Logique de l'agent",
"legend.workflow.security": "Politique",
"legend.workflow.messagebus": "Action d'outil",
"legend.workflow.database": "Contexte / trace",
"legend.workflow.cloud": "Service cloud",
"legend.workflow.external": "Système externe",
"legend.sequence.emphasis": "requête principale",
"legend.sequence.return": "retour",
"legend.sequence.security": "sécurité",
"legend.sequence.dashed": "trace asynchrone",
"legend.sequence.default": "message",
"legend.dataflow.emphasis": "donnée principale",
"legend.dataflow.security": "politique / PII",
"legend.dataflow.dashed": "lot asynchrone",
"legend.dataflow.database": "entrepôt de données",
"legend.dataflow.default": "flux de données",
"legend.lifecycle.start": "état initial",
"legend.lifecycle.active": "actif",
"legend.lifecycle.waiting": "attente",
"legend.lifecycle.decision": "décision",
"legend.lifecycle.success": "succès",
"legend.lifecycle.failure": "échec / sortie",
"legend.lifecycle.neutral": "neutre",
"legend.lifecycle.external": "externe",
"legend.lifecycle.final": "état final",
"viewer.kind.frontend": "Frontend",
"viewer.kind.backend": "Backend",
"viewer.kind.database": "Base de données",
"viewer.kind.cloud": "Cloud",
"viewer.kind.security": "Sécurité",
"viewer.kind.messagebus": "Bus de messages",
"viewer.kind.external": "Externe",
"viewer.kind.neutral": "Neutre",
"viewer.kind.node": "Nœud",
"viewer.kind.start": "Début",
"viewer.kind.active": "Actif",
"viewer.kind.waiting": "En attente",
"viewer.kind.decision": "Décision",
"viewer.kind.success": "Succès",
"viewer.kind.failure": "Échec",
"viewer.toolbar.actions": "Actions du diagramme",
"viewer.theme.toggle.title": "Changer de thème (T)",
"viewer.theme.toggle": "Changer le thème de couleur",
"viewer.theme.dark": "Sombre",
"viewer.theme.light": "Clair",
"viewer.preset.choose.title": "Choisir le style visuel (S pour changer)",
"viewer.preset.choose": "Choisir le style visuel",
"viewer.preset.style": "Style",
"viewer.preset.menu": "Style visuel",
"viewer.preset.identity": "Identité visuelle",
"viewer.preset.cycles": "S pour changer",
"viewer.preset.classic": "Classic",
"viewer.preset.classic.short": "Classic",
"viewer.preset.classic.hint": "Style technique stable par défaut",
"viewer.preset.flow": "Flux de signal",
"viewer.preset.flow.short": "Flux",
"viewer.preset.flow.hint": "Présentation animée et dynamique",
"viewer.preset.blueprint": "Plan",
"viewer.preset.blueprint.hint": "Revue technique",
"viewer.preset.editorial": "Éditorial",
"viewer.preset.editorial.hint": "Notes de publication et de lancement",
"viewer.preset.badge.signalFlow": "FLUX DE SIGNAL",
"viewer.preset.badge.blueprint": "PLAN / RÉV. 01",
"viewer.preset.badge.editorial": "ÉDITORIAL / NOTE DE TERRAIN",
"viewer.preset.badge.editorialPlate": "ARCHIFY / PLANCHE 04",
"viewer.preset.current": "Style visuel : {style}. Choisir le style visuel",
"viewer.motion.live": "Animé",
"viewer.motion.still": "Statique",
"viewer.motion.pause": "Mettre l'animation en pause",
"viewer.motion.resume": "Reprendre l'animation",
"viewer.motion.reduced": "Animation suspendue en raison de la préférence de mouvement réduit",
"viewer.motion.hidden": "Animation suspendue pendant que la page est masquée",
"viewer.motion.yielding": "Mettre l'animation en pause ; cède actuellement la place à {owner}",
"viewer.motion.yielding.title": "Aperçu en direct activé · cède la place à {owner}",
"viewer.owner.route": "Sonde d'itinéraire",
"viewer.owner.lens": "Lentille sémantique",
"viewer.owner.relationship": "Aperçu de relation",
"viewer.owner.intent": "Trace d'intention",
"viewer.owner.focus": "le focus sémantique",
"viewer.owner.legend": "l'aperçu de la légende",
"viewer.owner.reader": "l'interaction du lecteur",
"viewer.present.enter": "Entrer en mode présentation",
"viewer.present.enter.title": "Mode présentation (F)",
"viewer.present.exit": "Quitter le mode présentation",
"viewer.present.exit.title": "Quitter le mode présentation (F ou Échap)",
"viewer.present.present": "Présenter",
"viewer.present.exit.label": "Quitter",
"viewer.export.button": "Exporter",
"viewer.export.button.title": "Exporter le diagramme (E)",
"viewer.export.diagram": "Exporter le diagramme",
"viewer.export.menu": "Exporter",
"viewer.export.subtitle": "Des exports portables et soignés",
"viewer.export.share": "Partager",
"viewer.export.shareCard": "Carte de partage",
"viewer.export.routeShareCard": "Carte de partage d'itinéraire",
"viewer.export.reachShareCard": "Carte de partage de portée",
"viewer.export.copyDiagram": "Copier le diagramme",
"viewer.export.clipboardPng": "PNG vers le presse-papiers",
"viewer.export.raster": "Images matricielles",
"viewer.export.image": "Image",
"viewer.export.lossless": "Image sans perte",
"viewer.export.compact": "Image compacte",
"viewer.export.modern": "Image au format moderne",
"viewer.export.vectorMotion": "Vecteur et animation",
"viewer.export.vectorMotion.heading": "Vecteur et animation",
"viewer.export.editable": "Vecteur modifiable",
"viewer.export.motion6s": "Animation de 6 s",
"viewer.export.unsupported": "Non pris en charge par ce navigateur",
"viewer.export.clipboardUnsupported": "L'écriture d'image dans le presse-papiers n'est pas prise en charge par ce navigateur",
"viewer.export.clipboardUnsupported.short": "L'écriture d'image dans le presse-papiers n'est pas prise en charge par ce navigateur.",
"viewer.export.motionUnavailable": "Capture d'animation indisponible dans ce navigateur",
"viewer.export.webmUnavailable": "WebM indisponible dans ce navigateur",
"viewer.export.failed": "Échec de l'export : {message}",
"viewer.export.unknownVariant": "Variante de carte de partage inconnue : {variant}",
"viewer.export.routeRequired": "Tracez un itinéraire avant d'exporter une carte de partage d'itinéraire",
"viewer.export.reachRequired": "Tracez une portée éditée avant d'exporter une carte de partage de portée",
"viewer.export.unknown": "inconnu",
"viewer.export.routeFailed": "Échec de l'export de la carte de partage d'itinéraire : {message}",
"viewer.export.reachFailed": "Échec de l'export de la carte de partage de portée : {message}",
"viewer.export.copyFailed": "Échec de la copie : {message}",
"viewer.export.copiedPng": "PNG copié dans le presse-papiers",
"viewer.export.downloadedRoute": "Carte de partage d'itinéraire téléchargée",
"viewer.export.downloadedReach": "Carte de partage de portée téléchargée",
"viewer.export.downloadedWebm": "WebM téléchargé",
"viewer.export.recording": "Enregistrement de 6 secondes d'animation…",
"viewer.export.card.routeSummary.one": "Itinéraire : {source} → {target} · {count} saut orienté",
"viewer.export.card.routeSummary.other": "Itinéraire : {source} → {target} · {count} sauts orientés",
"viewer.export.card.reachSummary": "Portée {direction} éditée depuis {origin} · {nodes} · {links} · max {hops}",
"viewer.export.card.node.one": "{count} nœud",
"viewer.export.card.node.other": "{count} nœuds",
"viewer.export.card.link.one": "{count} lien",
"viewer.export.card.link.other": "{count} liens",
"viewer.export.card.hop.one": "{count} saut",
"viewer.export.card.hop.other": "{count} sauts",
"viewer.export.card.routeBadge": "ARCHIFY · ITINÉRAIRE · {hops}",
"viewer.export.card.reachBadge": "ARCHIFY · PORTÉE {direction}",
"viewer.export.direction.upstream": "Amont",
"viewer.export.direction.downstream": "Aval",
"viewer.export.error.canvasUnavailable": "Canevas indisponible pour {label}",
"viewer.export.error.contextUnavailable": "Contexte de canevas 2D indisponible pour {label}",
"viewer.export.error.toBlobUnavailable": "canvas.toBlob indisponible pour {label}",
"viewer.export.error.toBlobNull": "canvas.toBlob n'a renvoyé aucune donnée pour {label}",
"viewer.export.error.variantsCombined": "Les variantes de carte de partage ne peuvent pas être combinées",
"viewer.export.error.viewerState": "L'export de la carte de partage n'a pas pu supprimer l'état temporaire du visualiseur",
"viewer.export.error.routeState": "L'export de la carte d'itinéraire n'a pas pu préserver l'itinéraire résolu en toute sécurité",
"viewer.export.error.reachState": "L'export de la carte de portée n'a pas pu préserver la portée éditée en toute sécurité",
"viewer.export.error.webmRequirements": "L'export d'animation WebM nécessite une animation de trace et la prise en charge de MediaRecorder par le navigateur",
"viewer.export.error.mediaRecorder": "Échec de MediaRecorder",
"viewer.export.error.emptyWebm": "MediaRecorder a produit un fichier WebM vide",
"viewer.export.error.webmBackground": "L'arrière-plan SVG n'a pas pu être chargé pour l'export WebM",
"viewer.guide.eyebrow": "Guide du diagramme",
"viewer.guide.close": "Fermer le guide du diagramme",
"viewer.guide.inspecting": "Inspection de la sémantique compilée",
"viewer.guide.actions": "Actions d'exploration du diagramme",
"viewer.guide.find": "Trouver un nœud",
"viewer.guide.find.hint": "Rechercher par libellés, responsabilités, types et identifiants stables.",
"viewer.guide.route": "Tracer un itinéraire",
"viewer.guide.route.aria": "Tracer un itinéraire orienté",
"viewer.guide.route.hint": "Découvrez comment deux nœuds sémantiques sont reliés dans le sens édité.",
"viewer.guide.map": "Voir tout le système",
"viewer.guide.map.hint": "Ouvrir le radar sémantique avec un viewport en direct et des nœuds stables.",
"viewer.guide.lens": "Comparer les types sémantiques",
"viewer.guide.lens.hint": "Comptez les rôles, révélez leur trafic et comparez les liens édités directs.",
"viewer.guide.present": "Entrer en mode présentation",
"viewer.guide.present.hint": "Donnez tout le viewport au diagramme en direct sans modifier l'export.",
"viewer.guide.shortcuts": "Raccourcis clavier supplémentaires",
"viewer.guide.shortcut.export": "Exporter",
"viewer.guide.shortcut.theme": "Thème",
"viewer.guide.shortcut.style": "Style",
"viewer.guide.shortcut.reset": "Réinitialiser",
"viewer.guide.shortcut.zoomIn": "Zoom avant",
"viewer.guide.shortcut.zoomOut": "Zoom arrière",
"viewer.guide.shortcut.close": "Fermer",
"viewer.guide.facts": "{nodes} · {relationships}",
"viewer.guide.fact.node.one": "{count} nœud sémantique",
"viewer.guide.fact.node.other": "{count} nœuds sémantiques",
"viewer.guide.fact.relationship.one": "{count} relation",
"viewer.guide.fact.relationship.other": "{count} relations",
"viewer.guide.open": "Ouvrir le guide du diagramme",
"viewer.finder.title": "Trouver un nœud",
"viewer.finder.close": "Fermer le chercheur de nœuds",
"viewer.finder.placeholder": "Rechercher par libellé ou identifiant",
"viewer.finder.search": "Rechercher les nœuds du diagramme",
"viewer.finder.results": "Nœuds du diagramme",
"viewer.finder.empty": "Aucun nœud correspondant",
"viewer.finder.result.focus": "Centrer sur {label}",
"viewer.finder.result.routeStart": "Choisir {label} comme point de départ de l'itinéraire",
"viewer.finder.result.routeTarget": "Choisir {label} comme destination de l'itinéraire, {links}",
"viewer.finder.status.empty": "Aucun nœud correspondant",
"viewer.finder.status.count.one": "{count} nœud correspondant",
"viewer.finder.status.count.other": "{count} nœuds correspondants",
"viewer.finder.noun.nodes": "nœuds",
"viewer.finder.link.one": "{count} lien",
"viewer.finder.link.other": "{count} liens",
"viewer.finder.result.focus.one": "Centrer sur {label}, {count} connexion associée",
"viewer.finder.result.focus.other": "Centrer sur {label}, {count} connexions associées",
"viewer.finder.status.filtered": "{visible} sur {available} {noun}",
"viewer.finder.status.all": "{available} {noun}",
"viewer.passport.eyebrow": "Passeport sémantique",
"viewer.passport.metadata": "Métadonnées du nœud",
"viewer.passport.evidence": "Preuve de source vérifiée",
"viewer.passport.verified": "Source vérifiée",
"viewer.passport.verificationScope": "Vérifié par rapport au Git local à la révision épinglée. L'accès distant n'a pas été vérifié.",
"viewer.passport.reach": "Portée éditée",
"viewer.passport.reach.trace": "Tracer l'accessibilité éditée",
"viewer.passport.upstream": "Amont",
"viewer.passport.downstream": "Aval",
"viewer.passport.upstream.trace": "Tracer l'accessibilité éditée en amont",
"viewer.passport.downstream.trace": "Tracer l'accessibilité éditée en aval",
"viewer.passport.close": "Fermer le passeport sémantique",
"viewer.passport.copy": "Copier le lien",
"viewer.passport.copy.focus": "Copier le lien du nœud centré",
"viewer.passport.relations": "Relations",
"viewer.passport.relations.show": "Afficher les relations connectées",
"viewer.passport.relations.hide": "Masquer les relations connectées",
"viewer.passport.relations.list": "Relations connectées",
"viewer.passport.copyRelation": "Copier la relation",
"viewer.passport.copyNode": "Copier le nœud",
"viewer.passport.copyPinned": "Copier le lien de la relation épinglée",
"viewer.passport.copySource": "Copier le lien du nœud source",
"viewer.passport.copy.focused.success": "Lien du nœud centré copié",
"viewer.passport.copy.pinned.success": "Lien de la relation épinglée copié",
"viewer.passport.copy.focused.failed": "Impossible de copier le lien du nœud centré",
"viewer.passport.copy.pinned.failed": "Impossible de copier le lien de la relation épinglée",
"viewer.passport.relationship.none": "Aucune relation connectée",
"viewer.passport.relationship.count.one": "{count} relation",
"viewer.passport.relationship.count.other": "{count} relations",
"viewer.passport.relationship.show.one": "Afficher {count} relation connectée",
"viewer.passport.relationship.show.other": "Afficher {count} relations connectées",
"viewer.passport.relationship.summary": "{out} sortantes · {in} entrantes{loops}",
"viewer.passport.relationship.loops": " · {count} boucle",
"viewer.passport.relationship.explorer": "Explorateur de relations directes",
"viewer.passport.relationship.help": "Utilisez les flèches pour explorer les relations. Appuyez sur Entrée ou Espace pour épingler les détails ; Échap efface.",
"viewer.passport.relationship.loopsBack": "boucle vers",
"viewer.passport.relationship.connectsTo": "se connecte à",
"viewer.passport.relationship.connectsFrom": "se connecte depuis",
"viewer.passport.relationship.pinned": "Relation épinglée · {from} → {to} · {label}",
"viewer.passport.relationship.inspect": "Inspecter la relation {index} sur {total} : {from} vers {to}, {label}. Appuyez sur Entrée pour les détails.",
"viewer.passport.relationship.group.out": "Sortantes",
"viewer.passport.relationship.group.in": "Entrantes",
"viewer.passport.relationship.group.loop": "Boucles propres",
"viewer.passport.relationship.row": "{group} : {relationship}, {neighbor}",
"viewer.passport.relationship.direction.out": "SORT →",
"viewer.passport.relationship.direction.in": "← ENTRE",
"viewer.passport.relationship.direction.loop": "BOUCLE",
"viewer.passport.sourceCount.one": "{count} référence de source vérifiée",
"viewer.passport.sourceCount.other": "{count} références de source vérifiées",
"viewer.passport.sourceMarker": "SOURCE",
"viewer.passport.beacon.one": "{count} source vérifiée ; centrez ce nœud pour l'inspecter",
"viewer.passport.beacon.other": "{count} sources vérifiées ; centrez ce nœud pour l'inspecter",
"viewer.passport.repository.open": "Ouvrir la révision {revision} du dépôt vérifié",
"viewer.passport.source.open": "Ouvrir la source vérifiée {path} à la révision {revision}",
"viewer.passport.source.openLink": "Ouvrir ↗",
"viewer.passport.reach.upstream.one": "Tracer {count} nœud édité en amont",
"viewer.passport.reach.upstream.other": "Tracer {count} nœuds édités en amont",
"viewer.passport.reach.downstream.one": "Tracer {count} nœud édité en aval",
"viewer.passport.reach.downstream.other": "Tracer {count} nœuds édités en aval",
"viewer.passport.reach.noUpstream": "Aucun nœud édité en amont",
"viewer.passport.reach.noDownstream": "Aucun nœud édité en aval",
"viewer.passport.reach.status": "{direction} · {nodes} nœuds · {links} liens · max {hops} sauts",
"viewer.route.eyebrow": "Sonde d'itinéraire",
"viewer.route.start": "Choisir un nœud de départ",
"viewer.route.start.find": "Trouver le départ",
"viewer.route.start.find.aria": "Trouver un départ d'itinéraire",
"viewer.route.copy": "Copier le lien",
"viewer.route.copy.aria": "Copier le lien de l'itinéraire tracé",
"viewer.route.clear": "Effacer",
"viewer.route.clear.aria": "Effacer la sonde d'itinéraire",
"viewer.route.traced": "Itinéraire tracé",
"viewer.route.pickTwo": "Choisissez deux nœuds sémantiques sur le diagramme",
"viewer.route.pickOne": "Choisissez un nœud sémantique sur le diagramme",
"viewer.route.controls": "Contrôles du parcours d'itinéraire",
"viewer.route.previous": "Position précédente de l'itinéraire",
"viewer.route.play": "Lire le parcours de l'itinéraire",
"viewer.route.pause": "Mettre le parcours de l'itinéraire en pause",
"viewer.route.replay": "Rejouer le parcours de l'itinéraire",
"viewer.route.next": "Position suivante de l'itinéraire",
"viewer.route.journey": "Parcours",
"viewer.route.pause.label": "Pause",
"viewer.route.replay.label": "Rejouer",
"viewer.route.overview": "Vue d'ensemble",
"viewer.route.overview.aria": "Afficher la vue d'ensemble complète de l'itinéraire",
"viewer.route.instructions": "Choisissez la source, puis la destination. Le sens compte.",
"viewer.route.destination": "Choisir une destination depuis {label}",
"viewer.route.destination.find": "Trouver une cible",
"viewer.route.destination.find.aria": "Trouver une destination d'itinéraire accessible",
"viewer.route.differentDestination": "Choisir une autre destination",
"viewer.route.distinct": "Un itinéraire nécessite deux nœuds sémantiques distincts.",
"viewer.route.unreachable": "Aucun itinéraire orienté vers {label}",
"viewer.route.unreachable.detail": "{target} n'est pas accessible depuis {source}. Choisissez une destination surlignée.",
"viewer.route.start.instructions": "Sélectionnez la source. L'étape suivante ne révélera que les destinations orientées.",
"viewer.route.copy.success": "Lien de l'itinéraire tracé copié",
"viewer.route.copy.failed": "Impossible de copier le lien de l'itinéraire tracé",
"viewer.route.position": "Position {index} sur {total} de l'itinéraire : {label}",
"viewer.route.step": "Étape {index} sur {total} · {phase} · {label}",
"viewer.route.motionRequired": "Le parcours automatique nécessite le mode Animé",
"viewer.route.trigger.clear": "Effacer l'itinéraire tracé",
"viewer.route.overview.status": "{nodes} · {hops} · itinéraire édité le plus court",
"viewer.route.overview.node.one": "{count} nœud",
"viewer.route.overview.node.other": "{count} nœuds",
"viewer.route.overview.hop.one": "{count} saut orienté",
"viewer.route.overview.hop.other": "{count} sauts orientés",
"viewer.route.phase.playing": "En lecture",
"viewer.route.phase.complete": "Terminé",
"viewer.route.phase.inspecting": "Inspection",
"viewer.route.destination.count.one": "{count} destination orientée disponible. Choisissez un nœud surligné.",
"viewer.route.destination.count.other": "{count} destinations orientées disponibles. Choisissez un nœud surligné.",
"viewer.route.noOutgoing": "Aucun itinéraire sortant ne débute ici. Effacez et choisissez une autre source.",
"viewer.route.result.title": "{source} vers {target}",
"viewer.route.finder.source.title": "Choisir le départ de l'itinéraire",
"viewer.route.finder.source.placeholder": "Rechercher des sources d'itinéraire",
"viewer.route.finder.source.empty": "Aucune source d'itinéraire correspondante",
"viewer.route.finder.source.results": "Nœuds pouvant débuter un itinéraire",
"viewer.route.finder.source.noun": "sources d'itinéraire",
"viewer.route.finder.source.badge": "départ",
"viewer.route.finder.target.title": "Destination depuis {label}",
"viewer.route.finder.target.placeholder": "Rechercher des destinations accessibles",
"viewer.route.finder.target.empty": "Aucune destination accessible correspondante",
"viewer.route.finder.target.results": "Destinations d'itinéraire accessibles",
"viewer.route.finder.target.noun": "destinations accessibles",
"viewer.route.hop.one": "{count} saut",
"viewer.route.hop.other": "{count} sauts",
"viewer.lens.eyebrow": "Lentille sémantique",
"viewer.lens.title": "Comparer les rôles du système",
"viewer.lens.close": "Fermer la lentille sémantique",
"viewer.lens.instruction": "Choisissez jusqu'à deux types sémantiques. Un seul révèle son trafic réel ; deux comparent uniquement les relations éditées directes.",
"viewer.lens.kinds": "Types sémantiques",
"viewer.lens.choose": "Choisissez un type pour inspecter ses nœuds et relations associées.",
"viewer.lens.copy": "Copier le lien de la lentille sémantique",
"viewer.lens.clear": "Effacer la lentille sémantique",
"viewer.lens.open": "Ouvrir la lentille sémantique",
"viewer.lens.openActive": "Ouvrir la lentille sémantique active",
"viewer.lens.legend": "Légende sémantique",
"viewer.lens.legend.inspect.one": "Inspecter {label}, {count} nœud",
"viewer.lens.legend.inspect.other": "Inspecter {label}, {count} nœuds",
"viewer.lens.kind.count.one": "{label}, {count} nœud",
"viewer.lens.kind.count.other": "{label}, {count} nœuds",
"viewer.lens.compare.one": "{first} → {second} : {forward} · {second} → {first} : {reverse} · {count} relation directe",
"viewer.lens.compare.other": "{first} → {second} : {forward} · {second} → {first} : {reverse} · {count} relations directes",
"viewer.lens.single": "{nodes} · {relationships} · les nœuds connectés restent visibles",
"viewer.lens.node.one": "{count} nœud {label}",
"viewer.lens.node.other": "{count} nœuds {label}",
"viewer.lens.relationship.one": "{count} relation associée",
"viewer.lens.relationship.other": "{count} relations associées",
"viewer.radar.title": "Radar sémantique",
"viewer.radar.building": "Construction de la vue d'ensemble",
"viewer.radar.openFull": "Ouvrir le radar sémantique complet",
"viewer.radar.open": "Ouvrir le radar",
"viewer.radar.close": "Fermer le radar sémantique",
"viewer.radar.surface": "Vue d'ensemble du diagramme. Cliquez sur un nœud pour le centrer, ou utilisez les flèches pour vous déplacer.",
"viewer.radar.click": "Cliquer sur le nœud",
"viewer.radar.drag": "Glisser pour se déplacer",
"viewer.radar.space": "Le radar sémantique a besoin de plus d'espace MAP.",
"viewer.radar.nodes": "Nœuds du radar du diagramme sémantique",
"viewer.radar.focus": "Centrer sur {label} depuis le radar sémantique",
"viewer.radar.status": "{count} nœuds · {viewport}",
"viewer.radar.fullMap": "{count} nœuds · carte complète",
"viewer.radar.compacted": "Radar compacté pour éviter de masquer le passeport sémantique ou les contrôles MAP.",
"viewer.radar.cancelWaiting": "Annuler l'attente du radar sémantique pour plus d'espace MAP",
"viewer.radar.needsSpace": "Le radar sémantique a besoin de plus d'espace MAP visible",
"viewer.radar.viewport.full": "carte complète",
"viewer.radar.viewport.width": "{percent} % de largeur",
"viewer.radar.viewport.scale": "{percent} % du viewport",
"viewer.nav.controls": "Contrôles de la vue du diagramme",
"viewer.nav.route": "Tracer un itinéraire orienté",
"viewer.nav.route.title": "Tracer l'itinéraire (R)",
"viewer.nav.route.short": "ROUTE",
"viewer.nav.radar": "Ouvrir le radar sémantique",
"viewer.nav.radar.title": "Radar sémantique (M)",
"viewer.nav.radar.short": "CARTE",
"viewer.nav.lens": "Ouvrir la lentille sémantique",
"viewer.nav.lens.title": "Lentille sémantique (L)",
"viewer.nav.lens.short": "LENTILLE",
"viewer.nav.find": "Trouver un nœud",
"viewer.nav.find.title": "Trouver un nœud (/)",
"viewer.nav.guide": "Ouvrir le guide du diagramme",
"viewer.nav.guide.title": "Guide du diagramme (?)",
"viewer.nav.zoomOut": "Zoom arrière",
"viewer.nav.zoomOut.title": "Zoom arrière (-)",
"viewer.nav.reset": "Réinitialiser la vue du diagramme",
"viewer.nav.reset.title": "Réinitialiser la vue (0)",
"viewer.nav.read": "LIRE",
"viewer.nav.zoomIn": "Zoom avant",
"viewer.nav.zoomIn.title": "Zoom avant (+)",
"viewer.nav.camera": "{hint}. Réinitialiser la vue du diagramme",
"viewer.nav.camera.title": "{semantic}{hint} · réinitialiser la vue (0)",
"viewer.nav.camera.semantic": "Caméra sémantique active · ",
"viewer.nav.level.map": "CARTE",
"viewer.nav.level.read": "LIRE",
"viewer.nav.level.full": "COMPLET",
"viewer.nav.level.auto": "AUTO",
"viewer.nav.detail.map": "Zoomez pour révéler les libellés des relations et le contexte des nœuds",
"viewer.nav.detail.read": "Zoomez à nouveau pour révéler les étiquettes et annotations",
"viewer.nav.detail.full": "Détail complet du diagramme",
"viewer.intent.summary": "{label}. {out} sortantes, {in} entrantes{loops}. {total} connexions. Appuyez sur Entrée pour les détails.",
"viewer.intent.loops": ", {count} boucle propre",
"viewer.common.copied": "Copié",
"viewer.common.copyFailed": "Échec de la copie",
"viewer.common.copyLink": "Copier le lien",
"viewer.common.clear": "Effacer",
"viewer.common.close": "Fermer"
}
+22
View File
@@ -0,0 +1,22 @@
{
"page.title": "Diagramme {title}",
"diagram.description.architecture": "Un diagramme d'architecture généré par Archify.",
"legend.title": "Légende",
"node.focus": "Focus {label}",
"node.context.architecture": "Composant d'architecture",
"viewer.kind.frontend": "Frontend",
"viewer.kind.backend": "Backend",
"viewer.export.button": "Exporter",
"viewer.export.button.title": "Exporter le diagramme (E)",
"viewer.export.diagram": "Exporter le diagramme",
"viewer.finder.title": "Rechercher un nœud",
"viewer.route.eyebrow": "Sonde d'itinéraire",
"viewer.route.overview.node.one": "{count} nœud",
"viewer.route.overview.node.other": "{count} nœuds",
"viewer.guide.eyebrow": "Guide du diagramme",
"viewer.nav.controls": "Contrôles de vue du diagramme",
"viewer.theme.toggle": "Changer de thème",
"viewer.preset.classic": "Classique",
"viewer.common.close": "Fermer",
"viewer.common.copyLink": "Copier le lien"
}
+425
View File
@@ -0,0 +1,425 @@
{
"page.title": "{title} · Diagramma",
"diagram.description.architecture": "Un diagramma di architettura generato da Archify.",
"diagram.description.workflow": "Un diagramma di flusso di lavoro generato da Archify.",
"diagram.description.sequence": "Un diagramma di sequenza generato da Archify.",
"diagram.description.dataflow": "Un diagramma di flusso dati generato da Archify.",
"diagram.description.lifecycle": "Un diagramma di ciclo di vita generato da Archify.",
"node.focus": "Metti a fuoco {label}",
"node.focus.detail": "Metti a fuoco {label}, {detail}",
"node.context.architecture": "Componente di architettura",
"node.context.workflow": "Nodo del flusso di lavoro",
"node.context.sequence": "Partecipante alla sequenza",
"node.context.dataflow": "Nodo del flusso dati",
"node.context.lifecycle": "Stato del ciclo di vita",
"legend.title": "Legenda",
"legend.architecture.frontend": "Frontend",
"legend.architecture.backend": "Backend",
"legend.architecture.database": "Database",
"legend.architecture.cloud": "Cloud",
"legend.architecture.security": "Sicurezza",
"legend.architecture.messagebus": "Bus di messaggi",
"legend.architecture.external": "Esterno",
"legend.workflow.frontend": "Interfaccia utente",
"legend.workflow.backend": "Logica dell'agente",
"legend.workflow.security": "Criterio",
"legend.workflow.messagebus": "Azione dello strumento",
"legend.workflow.database": "Contesto / traccia",
"legend.workflow.cloud": "Servizio cloud",
"legend.workflow.external": "Sistema esterno",
"legend.sequence.emphasis": "richiesta principale",
"legend.sequence.return": "risposta",
"legend.sequence.security": "sicurezza",
"legend.sequence.dashed": "traccia asincrona",
"legend.sequence.default": "messaggio",
"legend.dataflow.emphasis": "dati primari",
"legend.dataflow.security": "criterio / PII",
"legend.dataflow.dashed": "batch asincrono",
"legend.dataflow.database": "archivio dati",
"legend.dataflow.default": "flusso dati",
"legend.lifecycle.start": "stato iniziale",
"legend.lifecycle.active": "attivo",
"legend.lifecycle.waiting": "attesa",
"legend.lifecycle.decision": "decisione",
"legend.lifecycle.success": "successo",
"legend.lifecycle.failure": "errore / uscita",
"legend.lifecycle.neutral": "neutro",
"legend.lifecycle.external": "esterno",
"legend.lifecycle.final": "stato finale",
"viewer.kind.frontend": "Frontend",
"viewer.kind.backend": "Backend",
"viewer.kind.database": "Database",
"viewer.kind.cloud": "Cloud",
"viewer.kind.security": "Sicurezza",
"viewer.kind.messagebus": "Bus di messaggi",
"viewer.kind.external": "Esterno",
"viewer.kind.neutral": "Neutro",
"viewer.kind.node": "Nodo",
"viewer.kind.start": "Inizio",
"viewer.kind.active": "Attivo",
"viewer.kind.waiting": "In attesa",
"viewer.kind.decision": "Decisione",
"viewer.kind.success": "Successo",
"viewer.kind.failure": "Errore",
"viewer.toolbar.actions": "Azioni del diagramma",
"viewer.theme.toggle.title": "Cambia tema (T)",
"viewer.theme.toggle": "Cambia tema colore",
"viewer.theme.dark": "Scuro",
"viewer.theme.light": "Chiaro",
"viewer.preset.choose.title": "Scegli lo stile visivo (S per scorrere)",
"viewer.preset.choose": "Scegli lo stile visivo",
"viewer.preset.style": "Stile",
"viewer.preset.menu": "Stile visivo",
"viewer.preset.identity": "Identità visiva",
"viewer.preset.cycles": "S per scorrere",
"viewer.preset.classic": "Classico",
"viewer.preset.classic.short": "Classico",
"viewer.preset.classic.hint": "Predefinito tecnico stabile",
"viewer.preset.flow": "Flusso di segnale",
"viewer.preset.flow.short": "Flusso",
"viewer.preset.flow.hint": "Presentazione dinamica",
"viewer.preset.blueprint": "Progetto",
"viewer.preset.blueprint.hint": "Revisione tecnica",
"viewer.preset.editorial": "Editoriale",
"viewer.preset.editorial.hint": "Note di pubblicazione e lancio",
"viewer.preset.badge.signalFlow": "FLUSSO DI SEGNALE",
"viewer.preset.badge.blueprint": "PROGETTO / REV. 01",
"viewer.preset.badge.editorial": "EDITORIALE / NOTA SUL CAMPO",
"viewer.preset.badge.editorialPlate": "ARCHIFY / TAVOLA 04",
"viewer.preset.current": "Stile visivo: {style}. Scegli lo stile visivo",
"viewer.motion.live": "Attiva",
"viewer.motion.still": "Statica",
"viewer.motion.pause": "Metti in pausa l'animazione",
"viewer.motion.resume": "Riprendi l'animazione",
"viewer.motion.reduced": "Animazione in pausa per preferenza di movimento ridotto",
"viewer.motion.hidden": "Animazione in pausa mentre la pagina è nascosta",
"viewer.motion.yielding": "Metti in pausa l'animazione; attualmente cede il posto a {owner}",
"viewer.motion.yielding.title": "Anteprima dinamica attiva · cede il posto a {owner}",
"viewer.owner.route": "Esplora percorso",
"viewer.owner.lens": "Lente semantica",
"viewer.owner.relationship": "Anteprima relazione",
"viewer.owner.intent": "Traccia intento",
"viewer.owner.focus": "focus semantico",
"viewer.owner.legend": "anteprima legenda",
"viewer.owner.reader": "interazione del lettore",
"viewer.present.enter": "Entra in modalità presentazione",
"viewer.present.enter.title": "Modalità presentazione (F)",
"viewer.present.exit": "Esci dalla modalità presentazione",
"viewer.present.exit.title": "Esci dalla modalità presentazione (F o Esc)",
"viewer.present.present": "Presenta",
"viewer.present.exit.label": "Esci",
"viewer.export.button": "Esporta",
"viewer.export.button.title": "Esporta diagramma (E)",
"viewer.export.diagram": "Esporta diagramma",
"viewer.export.menu": "Esporta",
"viewer.export.subtitle": "Output portatili e puliti",
"viewer.export.share": "Condividi",
"viewer.export.shareCard": "Scheda di condivisione",
"viewer.export.routeShareCard": "Scheda di condivisione del percorso",
"viewer.export.reachShareCard": "Scheda di condivisione della raggiungibilità",
"viewer.export.copyDiagram": "Copia diagramma",
"viewer.export.clipboardPng": "PNG negli appunti",
"viewer.export.raster": "Immagini raster",
"viewer.export.image": "Immagine",
"viewer.export.lossless": "Immagine senza perdita",
"viewer.export.compact": "Immagine compatta",
"viewer.export.modern": "Immagine moderna",
"viewer.export.vectorMotion": "Vettoriale e animazione",
"viewer.export.vectorMotion.heading": "Vettoriale e animazione",
"viewer.export.editable": "Vettoriale modificabile",
"viewer.export.motion6s": "Animazione di 6s",
"viewer.export.unsupported": "Non supportato da questo browser",
"viewer.export.clipboardUnsupported": "La scrittura di immagini negli appunti non è supportata da questo browser",
"viewer.export.clipboardUnsupported.short": "La scrittura di immagini negli appunti non è supportata in questo browser.",
"viewer.export.motionUnavailable": "Cattura dell'animazione non disponibile in questo browser",
"viewer.export.webmUnavailable": "WebM non disponibile in questo browser",
"viewer.export.failed": "Esportazione non riuscita: {message}",
"viewer.export.unknownVariant": "Variante scheda di condivisione sconosciuta: {variant}",
"viewer.export.routeRequired": "Traccia un percorso prima di esportare una scheda di condivisione del percorso",
"viewer.export.reachRequired": "Traccia la raggiungibilità prima di esportare una scheda di condivisione della raggiungibilità",
"viewer.export.unknown": "sconosciuto",
"viewer.export.routeFailed": "Esportazione della scheda di condivisione del percorso non riuscita: {message}",
"viewer.export.reachFailed": "Esportazione della scheda di condivisione della raggiungibilità non riuscita: {message}",
"viewer.export.copyFailed": "Copia non riuscita: {message}",
"viewer.export.copiedPng": "PNG copiato negli appunti",
"viewer.export.downloadedRoute": "Scheda di condivisione del percorso scaricata",
"viewer.export.downloadedReach": "Scheda di condivisione della raggiungibilità scaricata",
"viewer.export.downloadedWebm": "WebM scaricato",
"viewer.export.recording": "Registrazione di 6 secondi di animazione…",
"viewer.export.card.routeSummary.one": "Percorso: {source} → {target} · {count} salto diretto",
"viewer.export.card.routeSummary.other": "Percorso: {source} → {target} · {count} salti diretti",
"viewer.export.card.reachSummary": "{direction} generata da {origin} · {nodes} · {links} · max {hops}",
"viewer.export.card.node.one": "{count} nodo",
"viewer.export.card.node.other": "{count} nodi",
"viewer.export.card.link.one": "{count} collegamento",
"viewer.export.card.link.other": "{count} collegamenti",
"viewer.export.card.hop.one": "{count} salto",
"viewer.export.card.hop.other": "{count} salti",
"viewer.export.card.routeBadge": "ARCHIFY · PERCORSO · {hops}",
"viewer.export.card.reachBadge": "ARCHIFY · RAGGIUNGIBILITÀ {direction}",
"viewer.export.direction.upstream": "A monte",
"viewer.export.direction.downstream": "A valle",
"viewer.export.error.canvasUnavailable": "Canvas non disponibile per {label}",
"viewer.export.error.contextUnavailable": "Contesto canvas 2D non disponibile per {label}",
"viewer.export.error.toBlobUnavailable": "canvas.toBlob non disponibile per {label}",
"viewer.export.error.toBlobNull": "canvas.toBlob non ha restituito dati per {label}",
"viewer.export.error.variantsCombined": "Le varianti della scheda di condivisione non possono essere combinate",
"viewer.export.error.viewerState": "L'esportazione della scheda di condivisione non è riuscita a rimuovere lo stato temporaneo del visualizzatore",
"viewer.export.error.routeState": "L'esportazione della scheda del percorso non è riuscita a preservare in modo sicuro il percorso risolto",
"viewer.export.error.reachState": "L'esportazione della scheda di raggiungibilità non è riuscita a preservare in modo sicuro la raggiungibilità generata",
"viewer.export.error.webmRequirements": "L'esportazione dell'animazione WebM richiede un'animazione di traccia e il supporto MediaRecorder del browser",
"viewer.export.error.mediaRecorder": "MediaRecorder non riuscito",
"viewer.export.error.emptyWebm": "MediaRecorder ha prodotto un WebM vuoto",
"viewer.export.error.webmBackground": "Impossibile caricare lo sfondo SVG per l'esportazione WebM",
"viewer.guide.eyebrow": "Guida al diagramma",
"viewer.guide.close": "Chiudi la guida al diagramma",
"viewer.guide.inspecting": "Analisi della semantica compilata",
"viewer.guide.actions": "Azioni di esplorazione del diagramma",
"viewer.guide.find": "Trova un nodo qualsiasi",
"viewer.guide.find.hint": "Cerca etichette, responsabilità, tipi e ID stabili.",
"viewer.guide.route": "Traccia un percorso",
"viewer.guide.route.aria": "Traccia un percorso diretto",
"viewer.guide.route.hint": "Chiedi come si collegano due nodi semantici nella direzione generata.",
"viewer.guide.map": "Guarda l'intero sistema",
"viewer.guide.map.hint": "Apri il Radar semantico con un viewport dal vivo e nodi stabili.",
"viewer.guide.lens": "Confronta i tipi semantici",
"viewer.guide.lens.hint": "Conta i ruoli, mostra il loro traffico e confronta i collegamenti diretti generati.",
"viewer.guide.present": "Entra in modalità presentazione",
"viewer.guide.present.hint": "Assegna il viewport al diagramma dal vivo senza modificare l'esportazione.",
"viewer.guide.shortcuts": "Altre scorciatoie da tastiera",
"viewer.guide.shortcut.export": "Esporta",
"viewer.guide.shortcut.theme": "Tema",
"viewer.guide.shortcut.style": "Stile",
"viewer.guide.shortcut.reset": "Ripristina",
"viewer.guide.shortcut.zoomIn": "Zoom avanti",
"viewer.guide.shortcut.zoomOut": "Zoom indietro",
"viewer.guide.shortcut.close": "Chiudi",
"viewer.guide.facts": "{nodes} · {relationships}",
"viewer.guide.fact.node.one": "{count} nodo semantico",
"viewer.guide.fact.node.other": "{count} nodi semantici",
"viewer.guide.fact.relationship.one": "{count} relazione",
"viewer.guide.fact.relationship.other": "{count} relazioni",
"viewer.guide.open": "Apri la guida al diagramma",
"viewer.finder.title": "Trova un nodo",
"viewer.finder.close": "Chiudi il cercatore di nodi",
"viewer.finder.placeholder": "Cerca etichette o ID",
"viewer.finder.search": "Cerca nodi del diagramma",
"viewer.finder.results": "Nodi del diagramma",
"viewer.finder.empty": "Nessun nodo corrispondente",
"viewer.finder.result.focus": "Metti a fuoco {label}",
"viewer.finder.result.routeStart": "Scegli {label} come inizio del percorso",
"viewer.finder.result.routeTarget": "Scegli {label} come destinazione del percorso, {links}",
"viewer.finder.status.empty": "Nessun nodo corrispondente",
"viewer.finder.status.count.one": "{count} nodo corrispondente",
"viewer.finder.status.count.other": "{count} nodi corrispondenti",
"viewer.finder.noun.nodes": "nodi",
"viewer.finder.link.one": "{count} collegamento",
"viewer.finder.link.other": "{count} collegamenti",
"viewer.finder.result.focus.one": "Metti a fuoco {label}, {count} connessione correlata",
"viewer.finder.result.focus.other": "Metti a fuoco {label}, {count} connessioni correlate",
"viewer.finder.status.filtered": "{visible} di {available} {noun}",
"viewer.finder.status.all": "{available} {noun}",
"viewer.passport.eyebrow": "Passaporto semantico",
"viewer.passport.metadata": "Metadati del nodo",
"viewer.passport.evidence": "Fonte verificata",
"viewer.passport.verified": "Fonte verificata",
"viewer.passport.verificationScope": "Verificato rispetto al Git locale alla revisione fissata. L'accesso remoto non è stato verificato.",
"viewer.passport.reach": "Raggiungibilità generata",
"viewer.passport.reach.trace": "Traccia la raggiungibilità generata",
"viewer.passport.upstream": "A monte",
"viewer.passport.downstream": "A valle",
"viewer.passport.upstream.trace": "Traccia la raggiungibilità generata a monte",
"viewer.passport.downstream.trace": "Traccia la raggiungibilità generata a valle",
"viewer.passport.close": "Chiudi il passaporto semantico",
"viewer.passport.copy": "Copia link",
"viewer.passport.copy.focus": "Copia il link al nodo in focus",
"viewer.passport.relations": "Relazioni",
"viewer.passport.relations.show": "Mostra le relazioni collegate",
"viewer.passport.relations.hide": "Nascondi le relazioni collegate",
"viewer.passport.relations.list": "Relazioni collegate",
"viewer.passport.copyRelation": "Copia relazione",
"viewer.passport.copyNode": "Copia nodo",
"viewer.passport.copyPinned": "Copia il link alla relazione fissata",
"viewer.passport.copySource": "Copia il link al nodo di origine",
"viewer.passport.copy.focused.success": "Link del nodo in focus copiato",
"viewer.passport.copy.pinned.success": "Link della relazione fissata copiato",
"viewer.passport.copy.focused.failed": "Impossibile copiare il link del nodo in focus",
"viewer.passport.copy.pinned.failed": "Impossibile copiare il link della relazione fissata",
"viewer.passport.relationship.none": "Nessuna relazione collegata",
"viewer.passport.relationship.count.one": "{count} relazione",
"viewer.passport.relationship.count.other": "{count} relazioni",
"viewer.passport.relationship.show.one": "Mostra {count} relazione collegata",
"viewer.passport.relationship.show.other": "Mostra {count} relazioni collegate",
"viewer.passport.relationship.summary": "{out} in uscita · {in} in entrata{loops}",
"viewer.passport.relationship.loops": " · {count} autoanello",
"viewer.passport.relationship.explorer": "Esploratore delle relazioni dirette",
"viewer.passport.relationship.help": "Usa i tasti freccia per esplorare le relazioni. Premi Invio o Spazio per fissare i dettagli; Esc per annullare.",
"viewer.passport.relationship.loopsBack": "torna su se stesso",
"viewer.passport.relationship.connectsTo": "si collega a",
"viewer.passport.relationship.connectsFrom": "si collega da",
"viewer.passport.relationship.pinned": "Relazione fissata · {from} → {to} · {label}",
"viewer.passport.relationship.inspect": "Analizza la relazione {index} di {total}: da {from} a {to}, {label}. Premi Invio per i dettagli.",
"viewer.passport.relationship.group.out": "In uscita",
"viewer.passport.relationship.group.in": "In entrata",
"viewer.passport.relationship.group.loop": "Autoanelli",
"viewer.passport.relationship.row": "{group}: {relationship}, {neighbor}",
"viewer.passport.relationship.direction.out": "USCITA →",
"viewer.passport.relationship.direction.in": "← ENTRATA",
"viewer.passport.relationship.direction.loop": "ANELLO",
"viewer.passport.sourceCount.one": "{count} riferimento a fonte verificata",
"viewer.passport.sourceCount.other": "{count} riferimenti a fonti verificate",
"viewer.passport.sourceMarker": "FONTE",
"viewer.passport.beacon.one": "{count} fonte verificata; metti a fuoco questo nodo per analizzarla",
"viewer.passport.beacon.other": "{count} fonti verificate; metti a fuoco questo nodo per analizzarle",
"viewer.passport.repository.open": "Apri la revisione {revision} del repository verificato",
"viewer.passport.source.open": "Apri la fonte verificata {path} alla revisione {revision}",
"viewer.passport.source.openLink": "Apri ↗",
"viewer.passport.reach.upstream.one": "Traccia {count} nodo generato a monte",
"viewer.passport.reach.upstream.other": "Traccia {count} nodi generati a monte",
"viewer.passport.reach.downstream.one": "Traccia {count} nodo generato a valle",
"viewer.passport.reach.downstream.other": "Traccia {count} nodi generati a valle",
"viewer.passport.reach.noUpstream": "Nessun nodo generato a monte",
"viewer.passport.reach.noDownstream": "Nessun nodo generato a valle",
"viewer.passport.reach.status": "{direction} · {nodes} nodi · {links} collegamenti · max {hops} salti",
"viewer.route.eyebrow": "Esplora percorso",
"viewer.route.start": "Scegli un nodo di partenza",
"viewer.route.start.find": "Trova partenza",
"viewer.route.start.find.aria": "Trova una partenza del percorso",
"viewer.route.copy": "Copia link",
"viewer.route.copy.aria": "Copia il link al percorso tracciato",
"viewer.route.clear": "Cancella",
"viewer.route.clear.aria": "Cancella l'esplorazione del percorso",
"viewer.route.traced": "Percorso tracciato",
"viewer.route.pickTwo": "Scegli due nodi semantici sul diagramma",
"viewer.route.pickOne": "Scegli un nodo semantico sul diagramma",
"viewer.route.controls": "Controlli del tragitto del percorso",
"viewer.route.previous": "Posizione precedente nel percorso",
"viewer.route.play": "Riproduci il tragitto del percorso",
"viewer.route.pause": "Metti in pausa il tragitto del percorso",
"viewer.route.replay": "Riavvia il tragitto del percorso",
"viewer.route.next": "Posizione successiva nel percorso",
"viewer.route.journey": "Tragitto",
"viewer.route.pause.label": "Pausa",
"viewer.route.replay.label": "Riavvia",
"viewer.route.overview": "Panoramica",
"viewer.route.overview.aria": "Mostra la panoramica completa del percorso",
"viewer.route.instructions": "Scegli prima l'origine, poi la destinazione. La direzione è importante.",
"viewer.route.destination": "Scegli una destinazione da {label}",
"viewer.route.destination.find": "Trova destinazione",
"viewer.route.destination.find.aria": "Trova una destinazione raggiungibile del percorso",
"viewer.route.differentDestination": "Scegli una destinazione diversa",
"viewer.route.distinct": "Un percorso richiede due nodi semantici distinti.",
"viewer.route.unreachable": "Nessun percorso diretto verso {label}",
"viewer.route.unreachable.detail": "{target} non è raggiungibile da {source}. Scegli una destinazione evidenziata.",
"viewer.route.start.instructions": "Seleziona l'origine. Il passo successivo mostrerà solo le destinazioni dirette.",
"viewer.route.copy.success": "Link del percorso tracciato copiato",
"viewer.route.copy.failed": "Impossibile copiare il link del percorso tracciato",
"viewer.route.position": "Posizione {index} di {total} nel percorso: {label}",
"viewer.route.step": "Passo {index} di {total} · {phase} · {label}",
"viewer.route.motionRequired": "Il tragitto automatico richiede l'animazione attiva",
"viewer.route.trigger.clear": "Cancella il percorso tracciato",
"viewer.route.overview.status": "{nodes} · {hops} · percorso generato più breve",
"viewer.route.overview.node.one": "{count} nodo",
"viewer.route.overview.node.other": "{count} nodi",
"viewer.route.overview.hop.one": "{count} salto diretto",
"viewer.route.overview.hop.other": "{count} salti diretti",
"viewer.route.phase.playing": "In riproduzione",
"viewer.route.phase.complete": "Completato",
"viewer.route.phase.inspecting": "Analisi in corso",
"viewer.route.destination.count.one": "{count} destinazione diretta disponibile. Scegli un nodo evidenziato.",
"viewer.route.destination.count.other": "{count} destinazioni dirette disponibili. Scegli un nodo evidenziato.",
"viewer.route.noOutgoing": "Nessun percorso in uscita da qui. Cancella e scegli un'altra origine.",
"viewer.route.result.title": "{source} verso {target}",
"viewer.route.finder.source.title": "Scegli l'inizio del percorso",
"viewer.route.finder.source.placeholder": "Cerca origini del percorso",
"viewer.route.finder.source.empty": "Nessuna origine del percorso corrispondente",
"viewer.route.finder.source.results": "Nodi che possono avviare un percorso",
"viewer.route.finder.source.noun": "origini del percorso",
"viewer.route.finder.source.badge": "inizio",
"viewer.route.finder.target.title": "Destinazione da {label}",
"viewer.route.finder.target.placeholder": "Cerca destinazioni raggiungibili",
"viewer.route.finder.target.empty": "Nessuna destinazione raggiungibile corrispondente",
"viewer.route.finder.target.results": "Destinazioni raggiungibili del percorso",
"viewer.route.finder.target.noun": "destinazioni raggiungibili",
"viewer.route.hop.one": "{count} salto",
"viewer.route.hop.other": "{count} salti",
"viewer.lens.eyebrow": "Lente semantica",
"viewer.lens.title": "Confronta i ruoli del sistema",
"viewer.lens.close": "Chiudi la lente semantica",
"viewer.lens.instruction": "Scegli fino a due tipi semantici. Uno mostra il traffico reale; due confrontano solo le relazioni dirette generate.",
"viewer.lens.kinds": "Tipi semantici",
"viewer.lens.choose": "Scegli un tipo per analizzarne i nodi e le relazioni collegate.",
"viewer.lens.copy": "Copia il link alla lente semantica",
"viewer.lens.clear": "Cancella la lente semantica",
"viewer.lens.open": "Apri la lente semantica",
"viewer.lens.openActive": "Apri la lente semantica attiva",
"viewer.lens.legend": "Legenda semantica",
"viewer.lens.legend.inspect.one": "Analizza {label}, {count} nodo",
"viewer.lens.legend.inspect.other": "Analizza {label}, {count} nodi",
"viewer.lens.kind.count.one": "{label}, {count} nodo",
"viewer.lens.kind.count.other": "{label}, {count} nodi",
"viewer.lens.compare.one": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} relazione diretta",
"viewer.lens.compare.other": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} relazioni dirette",
"viewer.lens.single": "{nodes} · {relationships} · i nodi collegati restano visibili",
"viewer.lens.node.one": "{count} nodo {label}",
"viewer.lens.node.other": "{count} nodi {label}",
"viewer.lens.relationship.one": "{count} relazione a contatto",
"viewer.lens.relationship.other": "{count} relazioni a contatto",
"viewer.radar.title": "Radar semantico",
"viewer.radar.building": "Costruzione della panoramica",
"viewer.radar.openFull": "Apri il radar semantico completo",
"viewer.radar.open": "Apri radar",
"viewer.radar.close": "Chiudi il radar semantico",
"viewer.radar.surface": "Panoramica del diagramma. Clicca su un nodo per metterlo a fuoco, oppure usa i tasti freccia per scorrere.",
"viewer.radar.click": "Clicca sul nodo",
"viewer.radar.drag": "Trascina per scorrere",
"viewer.radar.space": "Il radar semantico richiede più spazio nella MAPPA.",
"viewer.radar.nodes": "Nodi del radar semantico del diagramma",
"viewer.radar.focus": "Metti a fuoco {label} dal radar semantico",
"viewer.radar.status": "{count} nodi · {viewport}",
"viewer.radar.fullMap": "{count} nodi · mappa completa",
"viewer.radar.compacted": "Radar compattato per evitare di coprire il passaporto semantico o i controlli della MAPPA.",
"viewer.radar.cancelWaiting": "Annulla l'attesa del radar semantico per più spazio nella MAPPA",
"viewer.radar.needsSpace": "Il radar semantico richiede più spazio visibile nella MAPPA",
"viewer.radar.viewport.full": "mappa completa",
"viewer.radar.viewport.width": "{percent}% di larghezza",
"viewer.radar.viewport.scale": "{percent}% del viewport",
"viewer.nav.controls": "Controlli della vista del diagramma",
"viewer.nav.route": "Traccia un percorso diretto",
"viewer.nav.route.title": "Traccia percorso (R)",
"viewer.nav.route.short": "PERCORSO",
"viewer.nav.radar": "Apri il radar semantico",
"viewer.nav.radar.title": "Radar semantico (M)",
"viewer.nav.radar.short": "MAPPA",
"viewer.nav.lens": "Apri la lente semantica",
"viewer.nav.lens.title": "Lente semantica (L)",
"viewer.nav.lens.short": "LENTE",
"viewer.nav.find": "Trova un nodo",
"viewer.nav.find.title": "Trova un nodo (/)",
"viewer.nav.guide": "Apri la guida al diagramma",
"viewer.nav.guide.title": "Guida al diagramma (?)",
"viewer.nav.zoomOut": "Zoom indietro",
"viewer.nav.zoomOut.title": "Zoom indietro (-)",
"viewer.nav.reset": "Ripristina la vista del diagramma",
"viewer.nav.reset.title": "Ripristina vista (0)",
"viewer.nav.read": "LEGGI",
"viewer.nav.zoomIn": "Zoom avanti",
"viewer.nav.zoomIn.title": "Zoom avanti (+)",
"viewer.nav.camera": "{hint}. Ripristina la vista del diagramma",
"viewer.nav.camera.title": "{semantic}{hint} · ripristina vista (0)",
"viewer.nav.camera.semantic": "Camera semantica attiva · ",
"viewer.nav.level.map": "MAPPA",
"viewer.nav.level.read": "LEGGI",
"viewer.nav.level.full": "COMPLETO",
"viewer.nav.level.auto": "AUTO",
"viewer.nav.detail.map": "Ingrandisci per mostrare le etichette delle relazioni e il contesto dei nodi",
"viewer.nav.detail.read": "Ingrandisci ancora per mostrare tag e annotazioni",
"viewer.nav.detail.full": "Dettaglio completo del diagramma",
"viewer.intent.summary": "{label}. {out} in uscita, {in} in entrata{loops}. {total} connessioni. Premi Invio per i dettagli.",
"viewer.intent.loops": ", {count} autoanello",
"viewer.common.copied": "Copiato",
"viewer.common.copyFailed": "Copia non riuscita",
"viewer.common.copyLink": "Copia link",
"viewer.common.clear": "Cancella",
"viewer.common.close": "Chiudi"
}
+425
View File
@@ -0,0 +1,425 @@
{
"page.title": "{title} ダイアグラム",
"diagram.description.architecture": "Archifyで生成されたアーキテクチャ図です。",
"diagram.description.workflow": "Archifyで生成されたワークフロー図です。",
"diagram.description.sequence": "Archifyで生成されたシーケンス図です。",
"diagram.description.dataflow": "Archifyで生成されたデータフロー図です。",
"diagram.description.lifecycle": "Archifyで生成されたライフサイクル図です。",
"node.focus": "{label} にフォーカス",
"node.focus.detail": "{label} にフォーカス、{detail}",
"node.context.architecture": "アーキテクチャコンポーネント",
"node.context.workflow": "ワークフローノード",
"node.context.sequence": "シーケンス参加者",
"node.context.dataflow": "データフローノード",
"node.context.lifecycle": "ライフサイクル状態",
"legend.title": "凡例",
"legend.architecture.frontend": "フロントエンド",
"legend.architecture.backend": "バックエンド",
"legend.architecture.database": "データベース",
"legend.architecture.cloud": "クラウド",
"legend.architecture.security": "セキュリティ",
"legend.architecture.messagebus": "メッセージバス",
"legend.architecture.external": "外部",
"legend.workflow.frontend": "ユーザーUI",
"legend.workflow.backend": "エージェントロジック",
"legend.workflow.security": "ポリシー",
"legend.workflow.messagebus": "ツール実行",
"legend.workflow.database": "コンテキスト / トレース",
"legend.workflow.cloud": "クラウドサービス",
"legend.workflow.external": "外部システム",
"legend.sequence.emphasis": "主要リクエスト",
"legend.sequence.return": "戻り値",
"legend.sequence.security": "セキュリティ",
"legend.sequence.dashed": "非同期トレース",
"legend.sequence.default": "メッセージ",
"legend.dataflow.emphasis": "主要データ",
"legend.dataflow.security": "ポリシー / PII",
"legend.dataflow.dashed": "非同期バッチ",
"legend.dataflow.database": "データストア",
"legend.dataflow.default": "データフロー",
"legend.lifecycle.start": "初期状態",
"legend.lifecycle.active": "アクティブ",
"legend.lifecycle.waiting": "待機",
"legend.lifecycle.decision": "判断",
"legend.lifecycle.success": "成功",
"legend.lifecycle.failure": "失敗 / 終了",
"legend.lifecycle.neutral": "中立",
"legend.lifecycle.external": "外部",
"legend.lifecycle.final": "終了状態",
"viewer.kind.frontend": "フロントエンド",
"viewer.kind.backend": "バックエンド",
"viewer.kind.database": "データベース",
"viewer.kind.cloud": "クラウド",
"viewer.kind.security": "セキュリティ",
"viewer.kind.messagebus": "メッセージバス",
"viewer.kind.external": "外部",
"viewer.kind.neutral": "中立",
"viewer.kind.node": "ノード",
"viewer.kind.start": "開始",
"viewer.kind.active": "アクティブ",
"viewer.kind.waiting": "待機",
"viewer.kind.decision": "判断",
"viewer.kind.success": "成功",
"viewer.kind.failure": "失敗",
"viewer.toolbar.actions": "ダイアグラム操作",
"viewer.theme.toggle.title": "テーマ切替 (T)",
"viewer.theme.toggle": "カラーテーマを切替",
"viewer.theme.dark": "ダーク",
"viewer.theme.light": "ライト",
"viewer.preset.choose.title": "ビジュアルスタイルを選択 (Sで循環)",
"viewer.preset.choose": "ビジュアルスタイルを選択",
"viewer.preset.style": "スタイル",
"viewer.preset.menu": "ビジュアルスタイル",
"viewer.preset.identity": "ビジュアルアイデンティティ",
"viewer.preset.cycles": "Sで循環",
"viewer.preset.classic": "クラシック",
"viewer.preset.classic.short": "クラシック",
"viewer.preset.classic.hint": "安定した技術標準",
"viewer.preset.flow": "シグナルフロー",
"viewer.preset.flow.short": "フロー",
"viewer.preset.flow.hint": "動きを強調した表現",
"viewer.preset.blueprint": "ブループリント",
"viewer.preset.blueprint.hint": "エンジニアリングレビュー向け",
"viewer.preset.editorial": "エディトリアル",
"viewer.preset.editorial.hint": "発行・公開ノート向け",
"viewer.preset.badge.signalFlow": "シグナルフロー",
"viewer.preset.badge.blueprint": "ブループリント / 改訂01",
"viewer.preset.badge.editorial": "エディトリアル / フィールドノート",
"viewer.preset.badge.editorialPlate": "ARCHIFY / プレート04",
"viewer.preset.current": "ビジュアルスタイル: {style}。ビジュアルスタイルを選択",
"viewer.motion.live": "ライブ",
"viewer.motion.still": "静止",
"viewer.motion.pause": "動きを一時停止",
"viewer.motion.resume": "動きを再開",
"viewer.motion.reduced": "「視差効果を減らす」設定により動きを一時停止しました",
"viewer.motion.hidden": "このページが非表示のため動きを一時停止しました",
"viewer.motion.yielding": "動きを一時停止、現在 {owner} に譲っています",
"viewer.motion.yielding.title": "ライブプレビュー有効 · {owner} に譲っています",
"viewer.owner.route": "ルートプローブ",
"viewer.owner.lens": "セマンティックレンズ",
"viewer.owner.relationship": "関係性プレビュー",
"viewer.owner.intent": "インテントトレース",
"viewer.owner.focus": "セマンティックフォーカス",
"viewer.owner.legend": "凡例プレビュー",
"viewer.owner.reader": "読者の操作",
"viewer.present.enter": "プレゼンテーションステージに入る",
"viewer.present.enter.title": "プレゼンテーションステージ (F)",
"viewer.present.exit": "プレゼンテーションステージを終了",
"viewer.present.exit.title": "プレゼンテーションステージを終了 (F または Escape)",
"viewer.present.present": "プレゼンテーション",
"viewer.present.exit.label": "終了",
"viewer.export.button": "エクスポート",
"viewer.export.button.title": "ダイアグラムをエクスポート (E)",
"viewer.export.diagram": "ダイアグラムをエクスポート",
"viewer.export.menu": "エクスポート",
"viewer.export.subtitle": "持ち運びやすくクリーンな出力",
"viewer.export.share": "共有",
"viewer.export.shareCard": "シェアカード",
"viewer.export.routeShareCard": "ルートシェアカード",
"viewer.export.reachShareCard": "到達範囲シェアカード",
"viewer.export.copyDiagram": "ダイアグラムをコピー",
"viewer.export.clipboardPng": "PNGをクリップボードへ",
"viewer.export.raster": "ラスター画像",
"viewer.export.image": "画像",
"viewer.export.lossless": "無劣化画像",
"viewer.export.compact": "コンパクト画像",
"viewer.export.modern": "モダン画像",
"viewer.export.vectorMotion": "ベクターとモーション",
"viewer.export.vectorMotion.heading": "ベクター & モーション",
"viewer.export.editable": "編集可能なベクター",
"viewer.export.motion6s": "6秒のモーション",
"viewer.export.unsupported": "このブラウザではサポートされていません",
"viewer.export.clipboardUnsupported": "このブラウザはクリップボードへの画像書き込みに対応していません",
"viewer.export.clipboardUnsupported.short": "このブラウザはクリップボードへの画像書き込みに対応していません。",
"viewer.export.motionUnavailable": "このブラウザではモーションキャプチャを利用できません",
"viewer.export.webmUnavailable": "このブラウザではWebMを利用できません",
"viewer.export.failed": "エクスポートに失敗しました: {message}",
"viewer.export.unknownVariant": "不明なシェアカードの種類です: {variant}",
"viewer.export.routeRequired": "ルートシェアカードをエクスポートする前にルートをトレースしてください",
"viewer.export.reachRequired": "到達範囲シェアカードをエクスポートする前に編集済みの到達範囲をトレースしてください",
"viewer.export.unknown": "不明",
"viewer.export.routeFailed": "ルートシェアカードのエクスポートに失敗しました: {message}",
"viewer.export.reachFailed": "到達範囲シェアカードのエクスポートに失敗しました: {message}",
"viewer.export.copyFailed": "コピーに失敗しました: {message}",
"viewer.export.copiedPng": "PNGをクリップボードにコピーしました",
"viewer.export.downloadedRoute": "ルートシェアカードをダウンロードしました",
"viewer.export.downloadedReach": "到達範囲シェアカードをダウンロードしました",
"viewer.export.downloadedWebm": "WebMをダウンロードしました",
"viewer.export.recording": "6秒間のモーションを録画中…",
"viewer.export.card.routeSummary.one": "ルート: {source} → {target} · {count} 個の有向ホップ",
"viewer.export.card.routeSummary.other": "ルート: {source} → {target} · {count} 個の有向ホップ",
"viewer.export.card.reachSummary": "{origin} からの編集済み{direction} · {nodes} · {links} · 最大{hops}",
"viewer.export.card.node.one": "{count} 個のノード",
"viewer.export.card.node.other": "{count} 個のノード",
"viewer.export.card.link.one": "{count} 個の接続",
"viewer.export.card.link.other": "{count} 個の接続",
"viewer.export.card.hop.one": "{count} ホップ",
"viewer.export.card.hop.other": "{count} ホップ",
"viewer.export.card.routeBadge": "ARCHIFY · ROUTE · {hops}",
"viewer.export.card.reachBadge": "ARCHIFY · {direction} REACH",
"viewer.export.direction.upstream": "アップストリーム",
"viewer.export.direction.downstream": "ダウンストリーム",
"viewer.export.error.canvasUnavailable": "{label} のキャンバスを利用できません",
"viewer.export.error.contextUnavailable": "{label} の2Dキャンバスコンテキストを利用できません",
"viewer.export.error.toBlobUnavailable": "{label} でcanvas.toBlobを利用できません",
"viewer.export.error.toBlobNull": "{label} のcanvas.toBlobがデータを返しませんでした",
"viewer.export.error.variantsCombined": "シェアカードの種類は組み合わせられません",
"viewer.export.error.viewerState": "シェアカードのエクスポートで一時的なビューアー状態を削除できませんでした",
"viewer.export.error.routeState": "ルートカードのエクスポートで解決済みルートを安全に保持できませんでした",
"viewer.export.error.reachState": "到達範囲カードのエクスポートで編集済み到達範囲を安全に保持できませんでした",
"viewer.export.error.webmRequirements": "WebMモーションのエクスポートにはトレースアニメーションとブラウザのMediaRecorder対応が必要です",
"viewer.export.error.mediaRecorder": "MediaRecorderが失敗しました",
"viewer.export.error.emptyWebm": "MediaRecorderが空のWebMを生成しました",
"viewer.export.error.webmBackground": "WebMエクスポート用のSVG背景を読み込めませんでした",
"viewer.guide.eyebrow": "ダイアグラムガイド",
"viewer.guide.close": "ダイアグラムガイドを閉じる",
"viewer.guide.inspecting": "コンパイル済みセマンティクスを検査中",
"viewer.guide.actions": "ダイアグラム探索アクション",
"viewer.guide.find": "任意のノードを検索",
"viewer.guide.find.hint": "ラベル、役割、種類、固定IDで検索します。",
"viewer.guide.route": "ルートをトレース",
"viewer.guide.route.aria": "有向ルートをトレース",
"viewer.guide.route.hint": "2つのセマンティックノードが編集済みの方向でどう接続されているかを確認します。",
"viewer.guide.map": "システム全体を表示",
"viewer.guide.map.hint": "ライブビューポートと固定ノードを持つセマンティックレーダーを開きます。",
"viewer.guide.lens": "セマンティックな種類を比較",
"viewer.guide.lens.hint": "役割を数え、そのトラフィックを表示し、直接編集されたリンクを比較します。",
"viewer.guide.present": "プレゼンテーションステージに入る",
"viewer.guide.present.hint": "エクスポートを変更せずに、ライブダイアグラムにビューポート全体を割り当てます。",
"viewer.guide.shortcuts": "その他のキーボードショートカット",
"viewer.guide.shortcut.export": "エクスポート",
"viewer.guide.shortcut.theme": "テーマ",
"viewer.guide.shortcut.style": "スタイル",
"viewer.guide.shortcut.reset": "リセット",
"viewer.guide.shortcut.zoomIn": "拡大",
"viewer.guide.shortcut.zoomOut": "縮小",
"viewer.guide.shortcut.close": "閉じる",
"viewer.guide.facts": "{nodes} · {relationships}",
"viewer.guide.fact.node.one": "{count} 個のセマンティックノード",
"viewer.guide.fact.node.other": "{count} 個のセマンティックノード",
"viewer.guide.fact.relationship.one": "{count} 件の関係",
"viewer.guide.fact.relationship.other": "{count} 件の関係",
"viewer.guide.open": "ダイアグラムガイドを開く",
"viewer.finder.title": "ノードを検索",
"viewer.finder.close": "ノード検索を閉じる",
"viewer.finder.placeholder": "ラベルまたはIDで検索",
"viewer.finder.search": "ダイアグラムノードを検索",
"viewer.finder.results": "ダイアグラムノード",
"viewer.finder.empty": "一致するノードがありません",
"viewer.finder.result.focus": "{label} にフォーカス",
"viewer.finder.result.routeStart": "{label} をルートの起点として選択",
"viewer.finder.result.routeTarget": "{label} をルートの終点として選択、{links}",
"viewer.finder.status.empty": "一致するノードがありません",
"viewer.finder.status.count.one": "一致するノード {count} 個",
"viewer.finder.status.count.other": "一致するノード {count} 個",
"viewer.finder.noun.nodes": "ノード",
"viewer.finder.link.one": "{count} 件の接続",
"viewer.finder.link.other": "{count} 件の接続",
"viewer.finder.result.focus.one": "{label} にフォーカス、関連する接続 {count} 件",
"viewer.finder.result.focus.other": "{label} にフォーカス、関連する接続 {count} 件",
"viewer.finder.status.filtered": "{available} 件の{noun}中 {visible} 件",
"viewer.finder.status.all": "{available} 件の{noun}",
"viewer.passport.eyebrow": "セマンティックパスポート",
"viewer.passport.metadata": "ノードメタデータ",
"viewer.passport.evidence": "検証済みソースの根拠",
"viewer.passport.verified": "検証済みソース",
"viewer.passport.verificationScope": "固定されたリビジョン時点のローカルGitに対して検証済みです。リモートアクセスは確認していません。",
"viewer.passport.reach": "編集済みの到達範囲",
"viewer.passport.reach.trace": "編集済みの到達可能性をトレース",
"viewer.passport.upstream": "アップストリーム",
"viewer.passport.downstream": "ダウンストリーム",
"viewer.passport.upstream.trace": "アップストリームの編集済み到達可能性をトレース",
"viewer.passport.downstream.trace": "ダウンストリームの編集済み到達可能性をトレース",
"viewer.passport.close": "セマンティックパスポートを閉じる",
"viewer.passport.copy": "リンクをコピー",
"viewer.passport.copy.focus": "フォーカス中のノードへのリンクをコピー",
"viewer.passport.relations": "関係",
"viewer.passport.relations.show": "関連する関係を表示",
"viewer.passport.relations.hide": "関連する関係を非表示",
"viewer.passport.relations.list": "関連する関係",
"viewer.passport.copyRelation": "関係をコピー",
"viewer.passport.copyNode": "ノードをコピー",
"viewer.passport.copyPinned": "固定された関係へのリンクをコピー",
"viewer.passport.copySource": "ソースノードへのリンクをコピー",
"viewer.passport.copy.focused.success": "フォーカス中のノードのリンクをコピーしました",
"viewer.passport.copy.pinned.success": "固定された関係のリンクをコピーしました",
"viewer.passport.copy.focused.failed": "フォーカス中のノードのリンクをコピーできませんでした",
"viewer.passport.copy.pinned.failed": "固定された関係のリンクをコピーできませんでした",
"viewer.passport.relationship.none": "関連する関係がありません",
"viewer.passport.relationship.count.one": "{count} 件の関係",
"viewer.passport.relationship.count.other": "{count} 件の関係",
"viewer.passport.relationship.show.one": "関連する関係 {count} 件を表示",
"viewer.passport.relationship.show.other": "関連する関係 {count} 件を表示",
"viewer.passport.relationship.summary": "出向 {out} · 入向 {in}{loops}",
"viewer.passport.relationship.loops": " · 自己ループ {count} 件",
"viewer.passport.relationship.explorer": "直接関係エクスプローラー",
"viewer.passport.relationship.help": "矢印キーで関係を探索します。EnterまたはSpaceで詳細を固定し、Escapeで解除します。",
"viewer.passport.relationship.loopsBack": "ループして戻る",
"viewer.passport.relationship.connectsTo": "接続先",
"viewer.passport.relationship.connectsFrom": "接続元",
"viewer.passport.relationship.pinned": "固定された関係 · {from} → {to} · {label}",
"viewer.passport.relationship.inspect": "第 {index}/{total} 件の関係を検査: {from} から {to} へ、{label}。詳細はEnterを押してください。",
"viewer.passport.relationship.group.out": "出向",
"viewer.passport.relationship.group.in": "入向",
"viewer.passport.relationship.group.loop": "自己ループ",
"viewer.passport.relationship.row": "{group}: {relationship}、{neighbor}",
"viewer.passport.relationship.direction.out": "出 →",
"viewer.passport.relationship.direction.in": "← 入",
"viewer.passport.relationship.direction.loop": "ループ",
"viewer.passport.sourceCount.one": "検証済みソース参照 {count} 件",
"viewer.passport.sourceCount.other": "検証済みソース参照 {count} 件",
"viewer.passport.sourceMarker": "出典",
"viewer.passport.beacon.one": "検証済みソース {count} 件。このノードにフォーカスして確認",
"viewer.passport.beacon.other": "検証済みソース {count} 件。このノードにフォーカスして確認",
"viewer.passport.repository.open": "検証済みリポジトリのリビジョン {revision} を開く",
"viewer.passport.source.open": "リビジョン {revision} の検証済みソース {path} を開く",
"viewer.passport.source.openLink": "開く ↗",
"viewer.passport.reach.upstream.one": "アップストリームの編集済みノード {count} 件をトレース",
"viewer.passport.reach.upstream.other": "アップストリームの編集済みノード {count} 件をトレース",
"viewer.passport.reach.downstream.one": "ダウンストリームの編集済みノード {count} 件をトレース",
"viewer.passport.reach.downstream.other": "ダウンストリームの編集済みノード {count} 件をトレース",
"viewer.passport.reach.noUpstream": "アップストリームの編集済みノードがありません",
"viewer.passport.reach.noDownstream": "ダウンストリームの編集済みノードがありません",
"viewer.passport.reach.status": "{direction} · ノード {nodes} 件 · 接続 {links} 件 · 最大 {hops} ホップ",
"viewer.route.eyebrow": "ルートプローブ",
"viewer.route.start": "開始ノードを選択",
"viewer.route.start.find": "開始点を検索",
"viewer.route.start.find.aria": "ルートの開始点を検索",
"viewer.route.copy": "リンクをコピー",
"viewer.route.copy.aria": "トレース済みルートへのリンクをコピー",
"viewer.route.clear": "クリア",
"viewer.route.clear.aria": "ルートプローブをクリア",
"viewer.route.traced": "トレース済みルート",
"viewer.route.pickTwo": "ダイアグラム上で2つのセマンティックノードを選択してください",
"viewer.route.pickOne": "ダイアグラム上でセマンティックノードを1つ選択してください",
"viewer.route.controls": "ルートジャーニーのコントロール",
"viewer.route.previous": "前のルート位置",
"viewer.route.play": "ルートジャーニーを再生",
"viewer.route.pause": "ルートジャーニーを一時停止",
"viewer.route.replay": "ルートジャーニーをリプレイ",
"viewer.route.next": "次のルート位置",
"viewer.route.journey": "ジャーニー",
"viewer.route.pause.label": "一時停止",
"viewer.route.replay.label": "リプレイ",
"viewer.route.overview": "概要",
"viewer.route.overview.aria": "ルート全体の概要を表示",
"viewer.route.instructions": "起点を選択してから終点を選択してください。方向が重要です。",
"viewer.route.destination": "{label} からの終点を選択",
"viewer.route.destination.find": "終点を検索",
"viewer.route.destination.find.aria": "到達可能なルートの終点を検索",
"viewer.route.differentDestination": "別の終点を選択",
"viewer.route.distinct": "ルートには2つの異なるセマンティックノードが必要です。",
"viewer.route.unreachable": "{label} への有向ルートがありません",
"viewer.route.unreachable.detail": "{source} から {target} には到達できません。ハイライトされた終点を選択してください。",
"viewer.route.start.instructions": "起点を選択してください。次のステップでは有向の終点のみが表示されます。",
"viewer.route.copy.success": "トレース済みルートのリンクをコピーしました",
"viewer.route.copy.failed": "ルートのリンクをコピーできませんでした",
"viewer.route.position": "ルート位置 {index}/{total}: {label}",
"viewer.route.step": "ステップ {index}/{total} · {phase} · {label}",
"viewer.route.motionRequired": "自動ジャーニーにはライブモーションが必要です",
"viewer.route.trigger.clear": "トレース済みルートをクリア",
"viewer.route.overview.status": "{nodes} · {hops} · 最短の編集済みルート",
"viewer.route.overview.node.one": "{count} 個のノード",
"viewer.route.overview.node.other": "{count} 個のノード",
"viewer.route.overview.hop.one": "{count} 有向ホップ",
"viewer.route.overview.hop.other": "{count} 有向ホップ",
"viewer.route.phase.playing": "再生中",
"viewer.route.phase.complete": "完了",
"viewer.route.phase.inspecting": "検査中",
"viewer.route.destination.count.one": "利用可能な有向終点 {count} 件。ハイライトされたノードを選択してください。",
"viewer.route.destination.count.other": "利用可能な有向終点 {count} 件。ハイライトされたノードを選択してください。",
"viewer.route.noOutgoing": "ここから始まる出向ルートはありません。クリアして別の起点を選択してください。",
"viewer.route.result.title": "{source} から {target}",
"viewer.route.finder.source.title": "ルートの開始点を選択",
"viewer.route.finder.source.placeholder": "ルートの起点を検索",
"viewer.route.finder.source.empty": "一致するルートの起点がありません",
"viewer.route.finder.source.results": "ルートを開始できるノード",
"viewer.route.finder.source.noun": "ルートの起点",
"viewer.route.finder.source.badge": "起点",
"viewer.route.finder.target.title": "{label} からの終点",
"viewer.route.finder.target.placeholder": "到達可能な終点を検索",
"viewer.route.finder.target.empty": "一致する到達可能な終点がありません",
"viewer.route.finder.target.results": "到達可能なルートの終点",
"viewer.route.finder.target.noun": "到達可能な終点",
"viewer.route.hop.one": "{count} ホップ",
"viewer.route.hop.other": "{count} ホップ",
"viewer.lens.eyebrow": "セマンティックレンズ",
"viewer.lens.title": "システムの役割を比較",
"viewer.lens.close": "セマンティックレンズを閉じる",
"viewer.lens.instruction": "セマンティックな種類を最大2つ選択してください。1つ選ぶと実際のトラフィックが表示され、2つ選ぶと直接の編集済み関係のみを比較します。",
"viewer.lens.kinds": "セマンティックな種類",
"viewer.lens.choose": "種類を選択すると、そのノードと接する関係を検査できます。",
"viewer.lens.copy": "セマンティックレンズへのリンクをコピー",
"viewer.lens.clear": "セマンティックレンズをクリア",
"viewer.lens.open": "セマンティックレンズを開く",
"viewer.lens.openActive": "アクティブなセマンティックレンズを開く",
"viewer.lens.legend": "セマンティック凡例",
"viewer.lens.legend.inspect.one": "{label} を検査、{count} 個のノード",
"viewer.lens.legend.inspect.other": "{label} を検査、{count} 個のノード",
"viewer.lens.kind.count.one": "{label}、{count} 個のノード",
"viewer.lens.kind.count.other": "{label}、{count} 個のノード",
"viewer.lens.compare.one": "{first} → {second}: {forward} · {second} → {first}: {reverse} · 直接関係 {count} 件",
"viewer.lens.compare.other": "{first} → {second}: {forward} · {second} → {first}: {reverse} · 直接関係 {count} 件",
"viewer.lens.single": "{nodes} · {relationships} · 接続された周辺ノードは表示されたままです",
"viewer.lens.node.one": "{label} ノード {count} 個",
"viewer.lens.node.other": "{label} ノード {count} 個",
"viewer.lens.relationship.one": "接する関係 {count} 件",
"viewer.lens.relationship.other": "接する関係 {count} 件",
"viewer.radar.title": "セマンティックレーダー",
"viewer.radar.building": "概要を構築中",
"viewer.radar.openFull": "完全なセマンティックレーダーを開く",
"viewer.radar.open": "レーダーを開く",
"viewer.radar.close": "セマンティックレーダーを閉じる",
"viewer.radar.surface": "ダイアグラムの概要です。ノードをクリックしてフォーカスするか、矢印キーでパンできます。",
"viewer.radar.click": "ノードをクリック",
"viewer.radar.drag": "ドラッグしてパン",
"viewer.radar.space": "セマンティックレーダーにはさらにMAPスペースが必要です。",
"viewer.radar.nodes": "セマンティックダイアグラムのレーダーノード",
"viewer.radar.focus": "セマンティックレーダーから {label} にフォーカス",
"viewer.radar.status": "{count} 個のノード · {viewport}",
"viewer.radar.fullMap": "{count} 個のノード · 全体マップ",
"viewer.radar.compacted": "セマンティックパスポートやMAPコントロールを覆わないよう、レーダーを縮小しました。",
"viewer.radar.cancelWaiting": "MAPスペースの確保待ちのセマンティックレーダーをキャンセル",
"viewer.radar.needsSpace": "セマンティックレーダーには表示可能なMAPスペースがさらに必要です",
"viewer.radar.viewport.full": "全体マップ",
"viewer.radar.viewport.width": "幅 {percent}%",
"viewer.radar.viewport.scale": "ビューポート {percent}%",
"viewer.nav.controls": "ダイアグラム表示コントロール",
"viewer.nav.route": "有向ルートをトレース",
"viewer.nav.route.title": "ルートをトレース (R)",
"viewer.nav.route.short": "パス",
"viewer.nav.radar": "セマンティックレーダーを開く",
"viewer.nav.radar.title": "セマンティックレーダー (M)",
"viewer.nav.radar.short": "マップ",
"viewer.nav.lens": "セマンティックレンズを開く",
"viewer.nav.lens.title": "セマンティックレンズ (L)",
"viewer.nav.lens.short": "レンズ",
"viewer.nav.find": "ノードを検索",
"viewer.nav.find.title": "ノードを検索 (/)",
"viewer.nav.guide": "ダイアグラムガイドを開く",
"viewer.nav.guide.title": "ダイアグラムガイド (?)",
"viewer.nav.zoomOut": "縮小",
"viewer.nav.zoomOut.title": "縮小 (-)",
"viewer.nav.reset": "ダイアグラム表示をリセット",
"viewer.nav.reset.title": "表示をリセット (0)",
"viewer.nav.read": "閲覧",
"viewer.nav.zoomIn": "拡大",
"viewer.nav.zoomIn.title": "拡大 (+)",
"viewer.nav.camera": "{hint}。ダイアグラム表示をリセット",
"viewer.nav.camera.title": "{semantic}{hint} · 表示をリセット (0)",
"viewer.nav.camera.semantic": "セマンティックカメラ有効 · ",
"viewer.nav.level.map": "マップ",
"viewer.nav.level.read": "閲覧",
"viewer.nav.level.full": "全体",
"viewer.nav.level.auto": "自動",
"viewer.nav.detail.map": "拡大すると関係ラベルとノードのコンテキストが表示されます",
"viewer.nav.detail.read": "さらに拡大するとタグと注釈が表示されます",
"viewer.nav.detail.full": "ダイアグラムの完全な詳細",
"viewer.intent.summary": "{label}。出向 {out} 件、入向 {in} 件{loops}。合計 {total} 件の接続。詳細はEnterを押してください。",
"viewer.intent.loops": "、自己ループ {count} 件",
"viewer.common.copied": "コピーしました",
"viewer.common.copyFailed": "コピーに失敗しました",
"viewer.common.copyLink": "リンクをコピー",
"viewer.common.clear": "クリア",
"viewer.common.close": "閉じる"
}
+440
View File
@@ -0,0 +1,440 @@
{
"page.title": "{title} 다이어그램",
"diagram.description.architecture": "Archify로 생성한 아키텍처 다이어그램입니다.",
"diagram.description.workflow": "Archify로 생성한 워크플로우 다이어그램입니다.",
"diagram.description.sequence": "Archify로 생성한 시퀀스 다이어그램입니다.",
"diagram.description.dataflow": "Archify로 생성한 데이터플로우 다이어그램입니다.",
"diagram.description.lifecycle": "Archify로 생성한 라이프사이클 다이어그램입니다.",
"node.focus": "{label} 포커스",
"node.focus.detail": "{label} 포커스, {detail}",
"node.context.architecture": "아키텍처 구성요소",
"node.context.workflow": "워크플로우 노드",
"node.context.sequence": "시퀀스 참가자",
"node.context.dataflow": "데이터플로우 노드",
"node.context.lifecycle": "라이프사이클 상태",
"legend.title": "범례",
"legend.architecture.frontend": "프런트엔드",
"legend.architecture.backend": "백엔드",
"legend.architecture.database": "데이터베이스",
"legend.architecture.cloud": "클라우드",
"legend.architecture.security": "보안",
"legend.architecture.messagebus": "메시지 버스",
"legend.architecture.external": "외부",
"legend.workflow.frontend": "사용자 UI",
"legend.workflow.backend": "Agent 로직",
"legend.workflow.security": "정책",
"legend.workflow.messagebus": "도구 실행",
"legend.workflow.database": "컨텍스트 / 추적",
"legend.workflow.cloud": "클라우드 서비스",
"legend.workflow.external": "외부 시스템",
"legend.sequence.emphasis": "주요 요청",
"legend.sequence.return": "반환",
"legend.sequence.security": "보안",
"legend.sequence.dashed": "비동기 추적",
"legend.sequence.default": "메시지",
"legend.dataflow.emphasis": "주요 데이터",
"legend.dataflow.security": "정책 / PII",
"legend.dataflow.dashed": "비동기 배치",
"legend.dataflow.database": "데이터 저장소",
"legend.dataflow.default": "데이터 흐름",
"legend.lifecycle.start": "초기 상태",
"legend.lifecycle.active": "활성",
"legend.lifecycle.waiting": "대기",
"legend.lifecycle.decision": "판단",
"legend.lifecycle.success": "성공",
"legend.lifecycle.failure": "실패 / 종료",
"legend.lifecycle.neutral": "중립 상태",
"legend.lifecycle.external": "외부 상태",
"legend.lifecycle.final": "종료 상태",
"viewer.kind.frontend": "프런트엔드",
"viewer.kind.backend": "백엔드",
"viewer.kind.database": "데이터베이스",
"viewer.kind.cloud": "클라우드",
"viewer.kind.security": "보안",
"viewer.kind.messagebus": "메시지 버스",
"viewer.kind.external": "외부",
"viewer.kind.neutral": "중립",
"viewer.kind.node": "노드",
"viewer.kind.start": "시작",
"viewer.kind.active": "활성",
"viewer.kind.waiting": "대기",
"viewer.kind.decision": "판단",
"viewer.kind.success": "성공",
"viewer.kind.failure": "실패",
"viewer.toolbar.actions": "다이어그램 동작",
"viewer.theme.toggle.title": "테마 전환 (T)",
"viewer.theme.toggle": "색상 테마 전환",
"viewer.theme.dark": "다크",
"viewer.theme.light": "라이트",
"viewer.preset.choose.title": "시각 스타일 선택 (S로 순환)",
"viewer.preset.choose": "시각 스타일 선택",
"viewer.preset.style": "스타일",
"viewer.preset.menu": "시각 스타일",
"viewer.preset.identity": "시각적 정체성",
"viewer.preset.cycles": "S로 순환",
"viewer.preset.classic": "클래식",
"viewer.preset.classic.short": "클래식",
"viewer.preset.classic.hint": "안정적인 기술 기본 스타일",
"viewer.preset.flow": "시그널 플로우",
"viewer.preset.flow.short": "플로우",
"viewer.preset.flow.hint": "동적 흐름을 강조하는 프레젠테이션",
"viewer.preset.blueprint": "블루프린트",
"viewer.preset.blueprint.hint": "엔지니어링 리뷰용",
"viewer.preset.editorial": "에디토리얼",
"viewer.preset.editorial.hint": "발행 및 출시 노트에 적합",
"viewer.preset.badge.signalFlow": "시그널 플로우",
"viewer.preset.badge.blueprint": "블루프린트 / 개정 01",
"viewer.preset.badge.editorial": "에디토리얼 / 현장 노트",
"viewer.preset.badge.editorialPlate": "ARCHIFY / 도판 04",
"viewer.preset.current": "현재 시각 스타일: {style}. 시각 스타일 선택",
"viewer.motion.live": "동적",
"viewer.motion.still": "정적",
"viewer.motion.pause": "동작 일시정지",
"viewer.motion.resume": "동작 재개",
"viewer.motion.reduced": "동작 최소화 설정으로 인해 동작이 일시정지되었습니다",
"viewer.motion.hidden": "페이지가 보이지 않는 동안 동작이 일시정지되었습니다",
"viewer.motion.yielding": "동작 일시정지; 현재 {owner}에 양보 중",
"viewer.motion.yielding.title": "실시간 미리보기 활성화 · {owner}에 양보 중",
"viewer.owner.route": "경로 탐색",
"viewer.owner.lens": "시맨틱 렌즈",
"viewer.owner.relationship": "관계 미리보기",
"viewer.owner.intent": "의도 추적",
"viewer.owner.focus": "시맨틱 포커스",
"viewer.owner.legend": "범례 미리보기",
"viewer.owner.reader": "읽는 이의 상호작용",
"viewer.present.enter": "프레젠테이션 모드 진입",
"viewer.present.enter.title": "프레젠테이션 모드 (F)",
"viewer.present.exit": "프레젠테이션 모드 종료",
"viewer.present.exit.title": "프레젠테이션 모드 종료 (F 또는 Escape)",
"viewer.present.present": "프레젠테이션",
"viewer.present.exit.label": "종료",
"viewer.export.button": "내보내기",
"viewer.export.button.title": "다이어그램 내보내기 (E)",
"viewer.export.diagram": "다이어그램 내보내기",
"viewer.export.menu": "내보내기",
"viewer.export.subtitle": "가볍고 깔끔한 출력물",
"viewer.export.share": "공유",
"viewer.export.shareCard": "공유 카드",
"viewer.export.routeShareCard": "경로 공유 카드",
"viewer.export.reachShareCard": "도달범위 공유 카드",
"viewer.export.copyDiagram": "다이어그램 복사",
"viewer.export.clipboardPng": "PNG를 클립보드로",
"viewer.export.raster": "래스터 이미지",
"viewer.export.image": "이미지",
"viewer.export.lossless": "무손실 이미지",
"viewer.export.compact": "압축 이미지",
"viewer.export.modern": "최신 이미지 포맷",
"viewer.export.vectorMotion": "벡터 및 동작",
"viewer.export.vectorMotion.heading": "벡터 및 동작",
"viewer.export.editable": "편집 가능한 벡터",
"viewer.export.motion6s": "6초 동작",
"viewer.export.unsupported": "이 브라우저에서 지원하지 않습니다",
"viewer.export.clipboardUnsupported": "이 브라우저는 이미지 클립보드 쓰기를 지원하지 않습니다",
"viewer.export.clipboardUnsupported.short": "이 브라우저는 이미지 클립보드 쓰기를 지원하지 않습니다.",
"viewer.export.motionUnavailable": "이 브라우저에서는 동작을 캡처할 수 없습니다",
"viewer.export.webmUnavailable": "이 브라우저에서는 WebM을 사용할 수 없습니다",
"viewer.export.failed": "내보내기 실패: {message}",
"viewer.export.unknownVariant": "알 수 없는 공유 카드 유형: {variant}",
"viewer.export.routeRequired": "경로 공유 카드를 내보내려면 먼저 경로를 추적하세요",
"viewer.export.reachRequired": "도달범위 공유 카드를 내보내려면 먼저 편집된 도달범위를 추적하세요",
"viewer.export.unknown": "알 수 없음",
"viewer.export.routeFailed": "경로 공유 카드 내보내기 실패: {message}",
"viewer.export.reachFailed": "도달범위 공유 카드 내보내기 실패: {message}",
"viewer.export.copyFailed": "복사 실패: {message}",
"viewer.export.copiedPng": "PNG를 클립보드에 복사했습니다",
"viewer.export.downloadedRoute": "경로 공유 카드를 다운로드했습니다",
"viewer.export.downloadedReach": "도달범위 공유 카드를 다운로드했습니다",
"viewer.export.downloadedWebm": "WebM을 다운로드했습니다",
"viewer.export.recording": "6초 분량 동작을 녹화 중…",
"viewer.export.card.routeSummary.one": "경로: {source} → {target} · 방향성 홉 {count}개",
"viewer.export.card.routeSummary.other": "경로: {source} → {target} · 방향성 홉 {count}개",
"viewer.export.card.reachSummary": "{origin}에서 시작한 편집된 {direction} · {nodes} · {links} · 최대 {hops}",
"viewer.export.card.node.one": "노드 {count}개",
"viewer.export.card.node.other": "노드 {count}개",
"viewer.export.card.link.one": "연결 {count}개",
"viewer.export.card.link.other": "연결 {count}개",
"viewer.export.card.hop.one": "홉 {count}개",
"viewer.export.card.hop.other": "홉 {count}개",
"viewer.export.card.routeBadge": "ARCHIFY · 경로 · {hops}",
"viewer.export.card.reachBadge": "ARCHIFY · {direction} 도달범위",
"viewer.export.direction.upstream": "업스트림",
"viewer.export.direction.downstream": "다운스트림",
"viewer.export.error.canvasUnavailable": "{label}에 캔버스를 사용할 수 없습니다",
"viewer.export.error.contextUnavailable": "{label}에 2D 캔버스 컨텍스트를 만들 수 없습니다",
"viewer.export.error.toBlobUnavailable": "{label}에서 canvas.toBlob을 사용할 수 없습니다",
"viewer.export.error.toBlobNull": "{label}의 canvas.toBlob이 데이터를 반환하지 않았습니다",
"viewer.export.error.variantsCombined": "공유 카드 유형을 함께 조합할 수 없습니다",
"viewer.export.error.viewerState": "공유 카드 내보내기가 임시 뷰어 상태를 제거하지 못했습니다",
"viewer.export.error.routeState": "경로 카드 내보내기가 해석된 경로를 안전하게 보존하지 못했습니다",
"viewer.export.error.reachState": "도달범위 카드 내보내기가 편집된 도달범위를 안전하게 보존하지 못했습니다",
"viewer.export.error.webmRequirements": "WebM 동작 내보내기는 추적 애니메이션과 브라우저의 MediaRecorder 지원이 필요합니다",
"viewer.export.error.mediaRecorder": "MediaRecorder 실패",
"viewer.export.error.emptyWebm": "MediaRecorder가 빈 WebM을 생성했습니다",
"viewer.export.error.webmBackground": "WebM 내보내기용 SVG 배경을 불러오지 못했습니다",
"viewer.guide.eyebrow": "다이어그램 가이드",
"viewer.guide.close": "다이어그램 가이드 닫기",
"viewer.guide.inspecting": "컴파일된 시맨틱 구조 검사 중",
"viewer.guide.actions": "다이어그램 탐색 동작",
"viewer.guide.find": "아무 노드나 찾기",
"viewer.guide.find.hint": "라벨, 역할, 유형, 고정 ID로 검색합니다.",
"viewer.guide.route": "경로 추적",
"viewer.guide.route.aria": "방향성 경로 추적",
"viewer.guide.route.hint": "두 시맨틱 노드가 편집된 방향으로 어떻게 연결되는지 확인합니다.",
"viewer.guide.map": "전체 시스템 보기",
"viewer.guide.map.hint": "실시간 뷰포트와 고정 노드가 있는 시맨틱 레이더를 엽니다.",
"viewer.guide.lens": "시맨틱 유형 비교",
"viewer.guide.lens.hint": "역할 수를 세고, 트래픽을 표시하고, 직접 편집된 연결을 비교합니다.",
"viewer.guide.present": "프레젠테이션 모드 진입",
"viewer.guide.present.hint": "내보내기는 그대로 두고 실시간 다이어그램에 뷰포트 전체를 할애합니다.",
"viewer.guide.shortcuts": "추가 키보드 단축키",
"viewer.guide.shortcut.export": "내보내기",
"viewer.guide.shortcut.theme": "테마",
"viewer.guide.shortcut.style": "스타일",
"viewer.guide.shortcut.reset": "초기화",
"viewer.guide.shortcut.zoomIn": "확대",
"viewer.guide.shortcut.zoomOut": "축소",
"viewer.guide.shortcut.close": "닫기",
"viewer.guide.facts": "{nodes} · {relationships}",
"viewer.guide.fact.node.one": "시맨틱 노드 {count}개",
"viewer.guide.fact.node.other": "시맨틱 노드 {count}개",
"viewer.guide.fact.relationship.one": "관계 {count}개",
"viewer.guide.fact.relationship.other": "관계 {count}개",
"viewer.guide.open": "다이어그램 가이드 열기",
"viewer.finder.title": "노드 찾기",
"viewer.finder.close": "노드 찾기 닫기",
"viewer.finder.placeholder": "라벨 또는 ID로 검색",
"viewer.finder.search": "다이어그램 노드 검색",
"viewer.finder.results": "다이어그램 노드",
"viewer.finder.empty": "일치하는 노드가 없습니다",
"viewer.finder.result.focus": "{label} 포커스",
"viewer.finder.result.routeStart": "{label}을(를) 경로 시작점으로 선택",
"viewer.finder.result.routeTarget": "{label}을(를) 경로 도착점으로 선택, {links}",
"viewer.finder.status.empty": "일치하는 노드가 없습니다",
"viewer.finder.status.count.one": "일치하는 노드 {count}개",
"viewer.finder.status.count.other": "일치하는 노드 {count}개",
"viewer.finder.noun.nodes": "노드",
"viewer.finder.link.one": "연결 {count}개",
"viewer.finder.link.other": "연결 {count}개",
"viewer.finder.result.focus.one": "{label} 포커스, 관련 연결 {count}개",
"viewer.finder.result.focus.other": "{label} 포커스, 관련 연결 {count}개",
"viewer.finder.status.filtered": "{noun} {available}개 중 {visible}개",
"viewer.finder.status.all": "{noun} {available}개",
"viewer.passport.eyebrow": "시맨틱 패스포트",
"viewer.passport.metadata": "노드 메타데이터",
"viewer.passport.evidence": "검증된 소스 근거",
"viewer.passport.verified": "검증된 소스",
"viewer.passport.verificationScope": "고정된 리비전 기준 로컬 Git으로 검증했습니다. 원격 접근 권한은 확인하지 않았습니다.",
"viewer.passport.reach": "편집된 도달범위",
"viewer.passport.reach.trace": "편집된 도달가능성 추적",
"viewer.passport.upstream": "업스트림",
"viewer.passport.downstream": "다운스트림",
"viewer.passport.upstream.trace": "업스트림 편집 도달가능성 추적",
"viewer.passport.downstream.trace": "다운스트림 편집 도달가능성 추적",
"viewer.passport.close": "시맨틱 패스포트 닫기",
"viewer.passport.copy": "링크 복사",
"viewer.passport.copy.focus": "포커스된 노드의 링크 복사",
"viewer.passport.relations": "관계",
"viewer.passport.relations.show": "연결된 관계 표시",
"viewer.passport.relations.hide": "연결된 관계 숨기기",
"viewer.passport.relations.list": "연결된 관계",
"viewer.passport.copyRelation": "관계 복사",
"viewer.passport.copyNode": "노드 복사",
"viewer.passport.copyPinned": "고정된 관계의 링크 복사",
"viewer.passport.copySource": "소스 노드의 링크 복사",
"viewer.passport.copy.focused.success": "포커스된 노드 링크를 복사했습니다",
"viewer.passport.copy.pinned.success": "고정된 관계 링크를 복사했습니다",
"viewer.passport.copy.focused.failed": "포커스된 노드 링크를 복사할 수 없습니다",
"viewer.passport.copy.pinned.failed": "고정된 관계 링크를 복사할 수 없습니다",
"viewer.passport.relationship.none": "연결된 관계가 없습니다",
"viewer.passport.relationship.count.one": "관계 {count}개",
"viewer.passport.relationship.count.other": "관계 {count}개",
"viewer.passport.relationship.show.one": "연결된 관계 {count}개 표시",
"viewer.passport.relationship.show.other": "연결된 관계 {count}개 표시",
"viewer.passport.relationship.summary": "출향 {out}개 · 입향 {in}개{loops}",
"viewer.passport.relationship.loops": " · 자기순환 {count}개",
"viewer.passport.relationship.explorer": "직접 관계 탐색기",
"viewer.passport.relationship.help": "방향키로 관계를 탐색하세요. Enter 또는 Space로 상세정보를 고정하고, Escape로 지웁니다.",
"viewer.passport.relationship.loopsBack": "되돌아옴",
"viewer.passport.relationship.connectsTo": "연결 대상",
"viewer.passport.relationship.connectsFrom": "연결 출처",
"viewer.passport.relationship.pinned": "고정된 관계 · {from} → {to} · {label}",
"viewer.passport.relationship.inspect": "{total}개 중 {index}번 관계 검사: {from}에서 {to}로, {label}. Enter로 상세정보 확인.",
"viewer.passport.relationship.group.out": "출향",
"viewer.passport.relationship.group.in": "입향",
"viewer.passport.relationship.group.loop": "자기순환",
"viewer.passport.relationship.row": "{group}: {relationship}, {neighbor}",
"viewer.passport.relationship.direction.out": "출 →",
"viewer.passport.relationship.direction.in": "← 입",
"viewer.passport.relationship.direction.loop": "순환",
"viewer.passport.sourceCount.one": "검증된 소스 참조 {count}개",
"viewer.passport.sourceCount.other": "검증된 소스 참조 {count}개",
"viewer.passport.sourceMarker": "출처",
"viewer.passport.beacon.one": "검증된 소스 {count}개; 이 노드를 포커스하여 확인",
"viewer.passport.beacon.other": "검증된 소스 {count}개; 이 노드를 포커스하여 확인",
"viewer.passport.repository.open": "검증된 저장소 리비전 {revision} 열기",
"viewer.passport.source.open": "리비전 {revision}의 검증된 소스 {path} 열기",
"viewer.passport.source.openLink": "열기 ↗",
"viewer.passport.reach.upstream.one": "업스트림 편집 노드 {count}개 추적",
"viewer.passport.reach.upstream.other": "업스트림 편집 노드 {count}개 추적",
"viewer.passport.reach.downstream.one": "다운스트림 편집 노드 {count}개 추적",
"viewer.passport.reach.downstream.other": "다운스트림 편집 노드 {count}개 추적",
"viewer.passport.reach.noUpstream": "업스트림 편집 노드가 없습니다",
"viewer.passport.reach.noDownstream": "다운스트림 편집 노드가 없습니다",
"viewer.passport.reach.status": "{direction} · 노드 {nodes}개 · 연결 {links}개 · 최대 {hops}홉",
"viewer.route.eyebrow": "경로 탐색",
"viewer.route.start": "시작 노드 선택",
"viewer.route.start.find": "시작점 찾기",
"viewer.route.start.find.aria": "경로 시작점 찾기",
"viewer.route.copy": "링크 복사",
"viewer.route.copy.aria": "추적된 경로의 링크 복사",
"viewer.route.clear": "지우기",
"viewer.route.clear.aria": "경로 탐색 지우기",
"viewer.route.traced": "추적된 경로",
"viewer.route.pickTwo": "다이어그램에서 시맨틱 노드 두 개를 선택하세요",
"viewer.route.pickOne": "다이어그램에서 시맨틱 노드 하나를 선택하세요",
"viewer.route.controls": "경로 이동 제어",
"viewer.route.previous": "이전 경로 위치",
"viewer.route.play": "경로 이동 재생",
"viewer.route.pause": "경로 이동 일시정지",
"viewer.route.replay": "경로 이동 다시 재생",
"viewer.route.next": "다음 경로 위치",
"viewer.route.journey": "이동 경로",
"viewer.route.pause.label": "일시정지",
"viewer.route.replay.label": "다시 재생",
"viewer.route.overview": "개요",
"viewer.route.overview.aria": "전체 경로 개요 표시",
"viewer.route.instructions": "출발지를 먼저 선택한 뒤 도착지를 선택하세요. 방향이 중요합니다.",
"viewer.route.destination": "{label}에서 출발할 도착지 선택",
"viewer.route.destination.find": "도착지 찾기",
"viewer.route.destination.find.aria": "도달 가능한 경로 도착지 찾기",
"viewer.route.differentDestination": "다른 도착지 선택",
"viewer.route.distinct": "경로에는 서로 다른 시맨틱 노드 두 개가 필요합니다.",
"viewer.route.unreachable": "{label}(으)로 가는 방향성 경로가 없습니다",
"viewer.route.unreachable.detail": "{source}에서 {target}에 도달할 수 없습니다. 강조 표시된 도착지를 선택하세요.",
"viewer.route.start.instructions": "출발지를 선택하세요. 다음 단계에서는 방향성으로 도달 가능한 도착지만 표시됩니다.",
"viewer.route.copy.success": "추적된 경로 링크를 복사했습니다",
"viewer.route.copy.failed": "경로 링크를 복사할 수 없습니다",
"viewer.route.position": "경로 위치 {total}개 중 {index}번: {label}",
"viewer.route.step": "{total}단계 중 {index}단계 · {phase} · {label}",
"viewer.route.motionRequired": "자동 이동에는 동적 모드가 필요합니다",
"viewer.route.trigger.clear": "추적된 경로 지우기",
"viewer.route.overview.status": "{nodes} · {hops} · 최단 편집 경로",
"viewer.route.overview.node.one": "노드 {count}개",
"viewer.route.overview.node.other": "노드 {count}개",
"viewer.route.overview.hop.one": "방향성 홉 {count}개",
"viewer.route.overview.hop.other": "방향성 홉 {count}개",
"viewer.route.phase.playing": "재생 중",
"viewer.route.phase.complete": "완료됨",
"viewer.route.phase.inspecting": "검사 중",
"viewer.route.destination.count.one": "방향성 도착지 {count}개 사용 가능. 강조 표시된 노드를 선택하세요.",
"viewer.route.destination.count.other": "방향성 도착지 {count}개 사용 가능. 강조 표시된 노드를 선택하세요.",
"viewer.route.noOutgoing": "여기서 시작하는 출향 경로가 없습니다. 지우고 다른 출발지를 선택하세요.",
"viewer.route.result.title": "{source}에서 {target}까지",
"viewer.route.finder.source.title": "경로 시작점 선택",
"viewer.route.finder.source.placeholder": "경로 출발지 검색",
"viewer.route.finder.source.empty": "일치하는 경로 출발지가 없습니다",
"viewer.route.finder.source.results": "경로를 시작할 수 있는 노드",
"viewer.route.finder.source.noun": "경로 출발지",
"viewer.route.finder.source.badge": "시작",
"viewer.route.finder.target.title": "{label}에서 출발할 도착지",
"viewer.route.finder.target.placeholder": "도달 가능한 도착지 검색",
"viewer.route.finder.target.empty": "일치하는 도달 가능한 도착지가 없습니다",
"viewer.route.finder.target.results": "도달 가능한 경로 도착지",
"viewer.route.finder.target.noun": "도달 가능한 도착지",
"viewer.route.hop.one": "홉 {count}개",
"viewer.route.hop.other": "홉 {count}개",
"viewer.lens.eyebrow": "시맨틱 렌즈",
"viewer.lens.title": "시스템 역할 비교",
"viewer.lens.close": "시맨틱 렌즈 닫기",
"viewer.lens.instruction": "시맨틱 유형을 최대 두 개까지 선택하세요. 하나를 선택하면 실제 트래픽을 표시하고, 두 개를 선택하면 직접 편집된 관계만 비교합니다.",
"viewer.lens.kinds": "시맨틱 유형",
"viewer.lens.choose": "유형을 선택해 해당 노드와 연결된 관계를 확인하세요.",
"viewer.lens.copy": "시맨틱 렌즈 링크 복사",
"viewer.lens.clear": "시맨틱 렌즈 지우기",
"viewer.lens.open": "시맨틱 렌즈 열기",
"viewer.lens.openActive": "활성 시맨틱 렌즈 열기",
"viewer.lens.legend": "시맨틱 범례",
"viewer.lens.legend.inspect.one": "{label} 검사, 노드 {count}개",
"viewer.lens.legend.inspect.other": "{label} 검사, 노드 {count}개",
"viewer.lens.kind.count.one": "{label}, 노드 {count}개",
"viewer.lens.kind.count.other": "{label}, 노드 {count}개",
"viewer.lens.compare.one": "{first} → {second}: {forward} · {second} → {first}: {reverse} · 직접 관계 {count}개",
"viewer.lens.compare.other": "{first} → {second}: {forward} · {second} → {first}: {reverse} · 직접 관계 {count}개",
"viewer.lens.single": "{nodes} · {relationships} · 연결된 주변 노드는 계속 표시됩니다",
"viewer.lens.node.one": "{label} 노드 {count}개",
"viewer.lens.node.other": "{label} 노드 {count}개",
"viewer.lens.relationship.one": "연결된 관계 {count}개",
"viewer.lens.relationship.other": "연결된 관계 {count}개",
"viewer.radar.title": "시맨틱 레이더",
"viewer.radar.building": "개요 구성 중",
"viewer.radar.openFull": "전체 시맨틱 레이더 열기",
"viewer.radar.open": "레이더 열기",
"viewer.radar.close": "시맨틱 레이더 닫기",
"viewer.radar.surface": "다이어그램 개요입니다. 노드를 클릭해 포커스하거나 방향키로 이동하세요.",
"viewer.radar.click": "노드 클릭",
"viewer.radar.drag": "드래그로 이동",
"viewer.radar.space": "시맨틱 레이더를 표시하려면 지도 공간이 더 필요합니다.",
"viewer.radar.nodes": "시맨틱 다이어그램 레이더 노드",
"viewer.radar.focus": "시맨틱 레이더에서 {label} 포커스",
"viewer.radar.status": "노드 {count}개 · {viewport}",
"viewer.radar.fullMap": "노드 {count}개 · 전체 지도",
"viewer.radar.compacted": "시맨틱 패스포트나 지도 컨트롤을 가리지 않도록 레이더를 축소했습니다.",
"viewer.radar.cancelWaiting": "지도 공간 확보를 기다리는 시맨틱 레이더 취소",
"viewer.radar.needsSpace": "시맨틱 레이더를 표시하려면 지도 공간이 더 필요합니다",
"viewer.radar.viewport.full": "전체 지도",
"viewer.radar.viewport.width": "너비 {percent}%",
"viewer.radar.viewport.scale": "뷰포트 {percent}%",
"viewer.nav.controls": "다이어그램 보기 제어",
"viewer.nav.route": "방향성 경로 추적",
"viewer.nav.route.title": "경로 추적 (R)",
"viewer.nav.route.short": "경로",
"viewer.nav.radar": "시맨틱 레이더 열기",
"viewer.nav.radar.title": "시맨틱 레이더 (M)",
"viewer.nav.radar.short": "지도",
"viewer.nav.lens": "시맨틱 렌즈 열기",
"viewer.nav.lens.title": "시맨틱 렌즈 (L)",
"viewer.nav.lens.short": "렌즈",
"viewer.nav.find": "노드 찾기",
"viewer.nav.find.title": "노드 찾기 (/)",
"viewer.nav.guide": "다이어그램 가이드 열기",
"viewer.nav.guide.title": "다이어그램 가이드 (?)",
"viewer.nav.zoomOut": "축소",
"viewer.nav.zoomOut.title": "축소 (-)",
"viewer.nav.reset": "다이어그램 보기 초기화",
"viewer.nav.reset.title": "보기 초기화 (0)",
"viewer.nav.read": "읽기",
"viewer.nav.zoomIn": "확대",
"viewer.nav.zoomIn.title": "확대 (+)",
"viewer.nav.camera": "{hint}. 다이어그램 보기 초기화",
"viewer.nav.camera.title": "{semantic}{hint} · 보기 초기화 (0)",
"viewer.nav.camera.semantic": "시맨틱 카메라 활성 · ",
"viewer.nav.level.map": "개요",
"viewer.nav.level.read": "읽기",
"viewer.nav.level.full": "전체",
"viewer.nav.level.auto": "자동",
"viewer.nav.detail.map": "확대하면 관계 라벨과 노드 컨텍스트가 표시됩니다",
"viewer.nav.detail.read": "다시 확대하면 태그와 주석이 표시됩니다",
"viewer.nav.detail.full": "다이어그램 전체 상세정보",
"viewer.intent.summary": "{label}. 출향 {out}개, 입향 {in}개{loops}. 연결 총 {total}개. Enter로 상세정보 확인.",
"viewer.intent.loops": ", 자기순환 {count}개",
"viewer.common.copied": "복사됨",
"viewer.common.copyFailed": "복사 실패",
"viewer.common.copyLink": "링크 복사",
"viewer.common.clear": "지우기",
"viewer.common.close": "닫기",
"viewer.export.svg.auto": "SVG · 자동",
"viewer.export.svg.auto.hint": "호스트 테마에 맞춤",
"viewer.export.svg.light": "SVG · 라이트",
"viewer.export.svg.light.hint": "항상 라이트 테마",
"viewer.export.svg.dark": "SVG · 다크",
"viewer.export.svg.dark.hint": "항상 다크 테마",
"viewer.guide.title": "이 시스템 살펴보기",
"viewer.focus.selectedNodes": "선택한 노드 {count}개",
"viewer.passport.move": "의미 정보 패널 이동. 드래그하거나 화살표 키를 사용하고, Home 키로 초기화하세요.",
"viewer.outline.title": "노드 목록",
"viewer.rail.show": "설명 및 목록",
"viewer.rail.controls": "측면 패널",
"viewer.rail.collapse": "측면 패널 접기",
"viewer.rail.bottom": "패널을 다이어그램 아래로 이동",
"viewer.rail.right": "패널을 다이어그램 옆으로 이동"
}
+425
View File
@@ -0,0 +1,425 @@
{
"page.title": "Diagrama {title}",
"diagram.description.architecture": "Um diagrama de arquitetura gerado pelo Archify.",
"diagram.description.workflow": "Um diagrama de fluxo de trabalho gerado pelo Archify.",
"diagram.description.sequence": "Um diagrama de sequência gerado pelo Archify.",
"diagram.description.dataflow": "Um diagrama de fluxo de dados gerado pelo Archify.",
"diagram.description.lifecycle": "Um diagrama de ciclo de vida gerado pelo Archify.",
"node.focus": "Focar {label}",
"node.focus.detail": "Focar {label}, {detail}",
"node.context.architecture": "Componente de arquitetura",
"node.context.workflow": "Nó de fluxo de trabalho",
"node.context.sequence": "Participante da sequência",
"node.context.dataflow": "Nó de fluxo de dados",
"node.context.lifecycle": "Estado do ciclo de vida",
"legend.title": "Legenda",
"legend.architecture.frontend": "Frontend",
"legend.architecture.backend": "Backend",
"legend.architecture.database": "Banco de dados",
"legend.architecture.cloud": "Nuvem",
"legend.architecture.security": "Segurança",
"legend.architecture.messagebus": "Barramento de mensagens",
"legend.architecture.external": "Externo",
"legend.workflow.frontend": "UI do usuário",
"legend.workflow.backend": "Lógica do agente",
"legend.workflow.security": "Política",
"legend.workflow.messagebus": "Ação de ferramenta",
"legend.workflow.database": "Contexto / rastreamento",
"legend.workflow.cloud": "Serviço de nuvem",
"legend.workflow.external": "Sistema externo",
"legend.sequence.emphasis": "solicitação principal",
"legend.sequence.return": "retorno",
"legend.sequence.security": "segurança",
"legend.sequence.dashed": "rastreamento assíncrono",
"legend.sequence.default": "mensagem",
"legend.dataflow.emphasis": "dado principal",
"legend.dataflow.security": "política / PII",
"legend.dataflow.dashed": "lote assíncrono",
"legend.dataflow.database": "armazenamento de dados",
"legend.dataflow.default": "fluxo de dados",
"legend.lifecycle.start": "estado inicial",
"legend.lifecycle.active": "ativo",
"legend.lifecycle.waiting": "aguardando",
"legend.lifecycle.decision": "decisão",
"legend.lifecycle.success": "sucesso",
"legend.lifecycle.failure": "falha / saída",
"legend.lifecycle.neutral": "neutro",
"legend.lifecycle.external": "externo",
"legend.lifecycle.final": "estado final",
"viewer.kind.frontend": "Frontend",
"viewer.kind.backend": "Backend",
"viewer.kind.database": "Banco de dados",
"viewer.kind.cloud": "Nuvem",
"viewer.kind.security": "Segurança",
"viewer.kind.messagebus": "Barramento de mensagens",
"viewer.kind.external": "Externo",
"viewer.kind.neutral": "Neutro",
"viewer.kind.node": "Nó",
"viewer.kind.start": "Início",
"viewer.kind.active": "Ativo",
"viewer.kind.waiting": "Aguardando",
"viewer.kind.decision": "Decisão",
"viewer.kind.success": "Sucesso",
"viewer.kind.failure": "Falha",
"viewer.toolbar.actions": "Ações do diagrama",
"viewer.theme.toggle.title": "Alternar tema (T)",
"viewer.theme.toggle": "Alternar tema de cores",
"viewer.theme.dark": "Escuro",
"viewer.theme.light": "Claro",
"viewer.preset.choose.title": "Escolher estilo visual (S alterna)",
"viewer.preset.choose": "Escolher estilo visual",
"viewer.preset.style": "Estilo",
"viewer.preset.menu": "Estilo visual",
"viewer.preset.identity": "Identidade visual",
"viewer.preset.cycles": "S alterna",
"viewer.preset.classic": "Clássico",
"viewer.preset.classic.short": "Clássico",
"viewer.preset.classic.hint": "Padrão técnico estável",
"viewer.preset.flow": "Fluxo de Sinal",
"viewer.preset.flow.short": "Fluxo",
"viewer.preset.flow.hint": "Apresentação com foco em movimento",
"viewer.preset.blueprint": "Planta",
"viewer.preset.blueprint.hint": "Revisão de engenharia",
"viewer.preset.editorial": "Editorial",
"viewer.preset.editorial.hint": "Notas de publicação e lançamento",
"viewer.preset.badge.signalFlow": "FLUXO DE SINAL",
"viewer.preset.badge.blueprint": "PLANTA / REV 01",
"viewer.preset.badge.editorial": "EDITORIAL / NOTA DE CAMPO",
"viewer.preset.badge.editorialPlate": "ARCHIFY / PLACA 04",
"viewer.preset.current": "Estilo visual: {style}. Escolher estilo visual",
"viewer.motion.live": "Ao vivo",
"viewer.motion.still": "Estático",
"viewer.motion.pause": "Pausar movimento",
"viewer.motion.resume": "Retomar movimento",
"viewer.motion.reduced": "Movimento pausado pela preferência de movimento reduzido",
"viewer.motion.hidden": "Movimento pausado enquanto esta página está oculta",
"viewer.motion.yielding": "Pausar movimento; cedendo atualmente a {owner}",
"viewer.motion.yielding.title": "Pré-visualização ao vivo ativada · cedendo a {owner}",
"viewer.owner.route": "Sonda de Rota",
"viewer.owner.lens": "Lente Semântica",
"viewer.owner.relationship": "Pré-visualização de Relação",
"viewer.owner.intent": "Rastreamento de Intenção",
"viewer.owner.focus": "foco semântico",
"viewer.owner.legend": "pré-visualização da legenda",
"viewer.owner.reader": "interação do leitor",
"viewer.present.enter": "Entrar no palco de apresentação",
"viewer.present.enter.title": "Palco de apresentação (F)",
"viewer.present.exit": "Sair do palco de apresentação",
"viewer.present.exit.title": "Sair do palco de apresentação (F ou Escape)",
"viewer.present.present": "Apresentar",
"viewer.present.exit.label": "Sair",
"viewer.export.button": "Exportar",
"viewer.export.button.title": "Exportar diagrama (E)",
"viewer.export.diagram": "Exportar diagrama",
"viewer.export.menu": "Exportar",
"viewer.export.subtitle": "Saídas portáteis e limpas",
"viewer.export.share": "Compartilhar",
"viewer.export.shareCard": "Cartão de Compartilhamento",
"viewer.export.routeShareCard": "Cartão de Compartilhamento de Rota",
"viewer.export.reachShareCard": "Cartão de Compartilhamento de Alcance",
"viewer.export.copyDiagram": "Copiar diagrama",
"viewer.export.clipboardPng": "PNG para a área de transferência",
"viewer.export.raster": "Imagens raster",
"viewer.export.image": "Imagem",
"viewer.export.lossless": "Imagem sem perdas",
"viewer.export.compact": "Imagem compacta",
"viewer.export.modern": "Imagem moderna",
"viewer.export.vectorMotion": "Vetor e movimento",
"viewer.export.vectorMotion.heading": "Vetor e movimento",
"viewer.export.editable": "Vetor editável",
"viewer.export.motion6s": "Movimento de 6s",
"viewer.export.unsupported": "Não suportado por este navegador",
"viewer.export.clipboardUnsupported": "Este navegador não suporta gravação de imagem na área de transferência",
"viewer.export.clipboardUnsupported.short": "Gravação de imagem na área de transferência não suportada neste navegador.",
"viewer.export.motionUnavailable": "Captura de movimento indisponível neste navegador",
"viewer.export.webmUnavailable": "WebM indisponível neste navegador",
"viewer.export.failed": "Falha na exportação: {message}",
"viewer.export.unknownVariant": "Variante de Cartão de Compartilhamento desconhecida: {variant}",
"viewer.export.routeRequired": "Trace uma rota antes de exportar um Cartão de Compartilhamento de Rota",
"viewer.export.reachRequired": "Trace o alcance definido antes de exportar um Cartão de Compartilhamento de Alcance",
"viewer.export.unknown": "desconhecido",
"viewer.export.routeFailed": "Falha ao exportar o Cartão de Compartilhamento de Rota: {message}",
"viewer.export.reachFailed": "Falha ao exportar o Cartão de Compartilhamento de Alcance: {message}",
"viewer.export.copyFailed": "Falha ao copiar: {message}",
"viewer.export.copiedPng": "PNG copiado para a área de transferência",
"viewer.export.downloadedRoute": "Cartão de Compartilhamento de Rota baixado",
"viewer.export.downloadedReach": "Cartão de Compartilhamento de Alcance baixado",
"viewer.export.downloadedWebm": "WebM baixado",
"viewer.export.recording": "Gravando 6 segundos de movimento…",
"viewer.export.card.routeSummary.one": "Rota: {source} → {target} · {count} salto direcionado",
"viewer.export.card.routeSummary.other": "Rota: {source} → {target} · {count} saltos direcionados",
"viewer.export.card.reachSummary": "{direction} definido a partir de {origin} · {nodes} · {links} · máx {hops}",
"viewer.export.card.node.one": "{count} nó",
"viewer.export.card.node.other": "{count} nós",
"viewer.export.card.link.one": "{count} conexão",
"viewer.export.card.link.other": "{count} conexões",
"viewer.export.card.hop.one": "{count} salto",
"viewer.export.card.hop.other": "{count} saltos",
"viewer.export.card.routeBadge": "ARCHIFY · ROTA · {hops}",
"viewer.export.card.reachBadge": "ARCHIFY · ALCANCE {direction}",
"viewer.export.direction.upstream": "Upstream",
"viewer.export.direction.downstream": "Downstream",
"viewer.export.error.canvasUnavailable": "Canvas indisponível para {label}",
"viewer.export.error.contextUnavailable": "Contexto de canvas 2D indisponível para {label}",
"viewer.export.error.toBlobUnavailable": "canvas.toBlob indisponível para {label}",
"viewer.export.error.toBlobNull": "canvas.toBlob não retornou dados para {label}",
"viewer.export.error.variantsCombined": "As variantes do Cartão de Compartilhamento não podem ser combinadas",
"viewer.export.error.viewerState": "A exportação do Cartão de Compartilhamento não conseguiu remover o estado temporário do visualizador",
"viewer.export.error.routeState": "A exportação do Cartão de Rota não conseguiu preservar a rota resolvida com segurança",
"viewer.export.error.reachState": "A exportação do Cartão de Alcance não conseguiu preservar o alcance definido com segurança",
"viewer.export.error.webmRequirements": "A exportação de movimento em WebM requer uma animação de rastreamento e suporte a MediaRecorder no navegador",
"viewer.export.error.mediaRecorder": "Falha no MediaRecorder",
"viewer.export.error.emptyWebm": "O MediaRecorder produziu um WebM vazio",
"viewer.export.error.webmBackground": "Não foi possível carregar o plano de fundo SVG para a exportação em WebM",
"viewer.guide.eyebrow": "Guia do diagrama",
"viewer.guide.close": "Fechar guia do diagrama",
"viewer.guide.inspecting": "Inspecionando semântica compilada",
"viewer.guide.actions": "Ações de exploração do diagrama",
"viewer.guide.find": "Encontrar qualquer nó",
"viewer.guide.find.hint": "Pesquise rótulos, responsabilidades, tipos e IDs estáveis.",
"viewer.guide.route": "Traçar uma rota",
"viewer.guide.route.aria": "Traçar uma rota direcionada",
"viewer.guide.route.hint": "Descubra como dois nós semânticos se conectam na direção definida.",
"viewer.guide.map": "Ver o sistema inteiro",
"viewer.guide.map.hint": "Abra o Radar Semântico com uma janela de visualização ativa e nós estáveis.",
"viewer.guide.lens": "Comparar tipos semânticos",
"viewer.guide.lens.hint": "Conte papéis, revele seu tráfego e compare links diretos definidos.",
"viewer.guide.present": "Entrar no Palco de Apresentação",
"viewer.guide.present.hint": "Dê ao diagrama ao vivo a janela de visualização inteira sem alterar a exportação.",
"viewer.guide.shortcuts": "Atalhos de teclado adicionais",
"viewer.guide.shortcut.export": "Exportar",
"viewer.guide.shortcut.theme": "Tema",
"viewer.guide.shortcut.style": "Estilo",
"viewer.guide.shortcut.reset": "Redefinir",
"viewer.guide.shortcut.zoomIn": "Ampliar",
"viewer.guide.shortcut.zoomOut": "Reduzir",
"viewer.guide.shortcut.close": "Fechar",
"viewer.guide.facts": "{nodes} · {relationships}",
"viewer.guide.fact.node.one": "{count} nó semântico",
"viewer.guide.fact.node.other": "{count} nós semânticos",
"viewer.guide.fact.relationship.one": "{count} relação",
"viewer.guide.fact.relationship.other": "{count} relações",
"viewer.guide.open": "Abrir guia do diagrama",
"viewer.finder.title": "Encontrar um nó",
"viewer.finder.close": "Fechar buscador de nós",
"viewer.finder.placeholder": "Pesquisar rótulos ou IDs",
"viewer.finder.search": "Pesquisar nós do diagrama",
"viewer.finder.results": "Nós do diagrama",
"viewer.finder.empty": "Nenhum nó correspondente",
"viewer.finder.result.focus": "Focar {label}",
"viewer.finder.result.routeStart": "Escolher {label} como início da rota",
"viewer.finder.result.routeTarget": "Escolher {label} como destino da rota, {links}",
"viewer.finder.status.empty": "Nenhum nó correspondente",
"viewer.finder.status.count.one": "{count} nó correspondente",
"viewer.finder.status.count.other": "{count} nós correspondentes",
"viewer.finder.noun.nodes": "nós",
"viewer.finder.link.one": "{count} conexão",
"viewer.finder.link.other": "{count} conexões",
"viewer.finder.result.focus.one": "Focar {label}, {count} conexão relacionada",
"viewer.finder.result.focus.other": "Focar {label}, {count} conexões relacionadas",
"viewer.finder.status.filtered": "{visible} de {available} {noun}",
"viewer.finder.status.all": "{available} {noun}",
"viewer.passport.eyebrow": "Passaporte semântico",
"viewer.passport.metadata": "Metadados do nó",
"viewer.passport.evidence": "Evidência de origem verificada",
"viewer.passport.verified": "Origem verificada",
"viewer.passport.verificationScope": "Verificado com o Git local na revisão fixada. O acesso remoto não foi verificado.",
"viewer.passport.reach": "Alcance definido",
"viewer.passport.reach.trace": "Traçar alcançabilidade definida",
"viewer.passport.upstream": "Upstream",
"viewer.passport.downstream": "Downstream",
"viewer.passport.upstream.trace": "Traçar alcançabilidade definida upstream",
"viewer.passport.downstream.trace": "Traçar alcançabilidade definida downstream",
"viewer.passport.close": "Fechar passaporte semântico",
"viewer.passport.copy": "Copiar link",
"viewer.passport.copy.focus": "Copiar link do nó em foco",
"viewer.passport.relations": "Relações",
"viewer.passport.relations.show": "Mostrar relações conectadas",
"viewer.passport.relations.hide": "Ocultar relações conectadas",
"viewer.passport.relations.list": "Relações conectadas",
"viewer.passport.copyRelation": "Copiar relação",
"viewer.passport.copyNode": "Copiar nó",
"viewer.passport.copyPinned": "Copiar link da relação fixada",
"viewer.passport.copySource": "Copiar link do nó de origem",
"viewer.passport.copy.focused.success": "Link do nó em foco copiado",
"viewer.passport.copy.pinned.success": "Link da relação fixada copiado",
"viewer.passport.copy.focused.failed": "Não foi possível copiar o link do nó em foco",
"viewer.passport.copy.pinned.failed": "Não foi possível copiar o link da relação fixada",
"viewer.passport.relationship.none": "Nenhuma relação conectada",
"viewer.passport.relationship.count.one": "{count} relação",
"viewer.passport.relationship.count.other": "{count} relações",
"viewer.passport.relationship.show.one": "Mostrar {count} relação conectada",
"viewer.passport.relationship.show.other": "Mostrar {count} relações conectadas",
"viewer.passport.relationship.summary": "{out} de saída · {in} de entrada{loops}",
"viewer.passport.relationship.loops": " · {count} laço",
"viewer.passport.relationship.explorer": "Explorador de relações diretas",
"viewer.passport.relationship.help": "Use as setas para explorar relações. Pressione Enter ou Espaço para fixar detalhes; Escape limpa.",
"viewer.passport.relationship.loopsBack": "retorna em laço",
"viewer.passport.relationship.connectsTo": "conecta-se a",
"viewer.passport.relationship.connectsFrom": "conecta-se de",
"viewer.passport.relationship.pinned": "Relação fixada · {from} → {to} · {label}",
"viewer.passport.relationship.inspect": "Inspecionar relação {index} de {total}: {from} para {to}, {label}. Pressione Enter para detalhes.",
"viewer.passport.relationship.group.out": "Saída",
"viewer.passport.relationship.group.in": "Entrada",
"viewer.passport.relationship.group.loop": "Laços próprios",
"viewer.passport.relationship.row": "{group}: {relationship}, {neighbor}",
"viewer.passport.relationship.direction.out": "SAÍDA →",
"viewer.passport.relationship.direction.in": "← ENTRADA",
"viewer.passport.relationship.direction.loop": "LAÇO",
"viewer.passport.sourceCount.one": "{count} referência de origem verificada",
"viewer.passport.sourceCount.other": "{count} referências de origem verificadas",
"viewer.passport.sourceMarker": "ORIG",
"viewer.passport.beacon.one": "{count} origem verificada; foque este nó para inspecionar",
"viewer.passport.beacon.other": "{count} origens verificadas; foque este nó para inspecionar",
"viewer.passport.repository.open": "Abrir revisão verificada do repositório {revision}",
"viewer.passport.source.open": "Abrir origem verificada {path} na revisão {revision}",
"viewer.passport.source.openLink": "Abrir ↗",
"viewer.passport.reach.upstream.one": "Traçar {count} nó definido upstream",
"viewer.passport.reach.upstream.other": "Traçar {count} nós definidos upstream",
"viewer.passport.reach.downstream.one": "Traçar {count} nó definido downstream",
"viewer.passport.reach.downstream.other": "Traçar {count} nós definidos downstream",
"viewer.passport.reach.noUpstream": "Nenhum nó definido upstream",
"viewer.passport.reach.noDownstream": "Nenhum nó definido downstream",
"viewer.passport.reach.status": "{direction} · {nodes} nós · {links} conexões · máx {hops} saltos",
"viewer.route.eyebrow": "Sonda de rota",
"viewer.route.start": "Escolher um nó inicial",
"viewer.route.start.find": "Encontrar início",
"viewer.route.start.find.aria": "Encontrar um início de rota",
"viewer.route.copy": "Copiar link",
"viewer.route.copy.aria": "Copiar link da rota traçada",
"viewer.route.clear": "Limpar",
"viewer.route.clear.aria": "Limpar sonda de rota",
"viewer.route.traced": "Rota traçada",
"viewer.route.pickTwo": "Escolha dois nós semânticos no diagrama",
"viewer.route.pickOne": "Escolha um nó semântico no diagrama",
"viewer.route.controls": "Controles da jornada de rota",
"viewer.route.previous": "Posição anterior da rota",
"viewer.route.play": "Reproduzir jornada de rota",
"viewer.route.pause": "Pausar jornada de rota",
"viewer.route.replay": "Reproduzir jornada de rota novamente",
"viewer.route.next": "Próxima posição da rota",
"viewer.route.journey": "Jornada",
"viewer.route.pause.label": "Pausar",
"viewer.route.replay.label": "Repetir",
"viewer.route.overview": "Visão geral",
"viewer.route.overview.aria": "Mostrar visão geral completa da rota",
"viewer.route.instructions": "Escolha a origem e depois o destino. A direção importa.",
"viewer.route.destination": "Escolher um destino a partir de {label}",
"viewer.route.destination.find": "Encontrar destino",
"viewer.route.destination.find.aria": "Encontrar um destino de rota alcançável",
"viewer.route.differentDestination": "Escolher um destino diferente",
"viewer.route.distinct": "Uma rota precisa de dois nós semânticos distintos.",
"viewer.route.unreachable": "Nenhuma rota direcionada para {label}",
"viewer.route.unreachable.detail": "{target} não é alcançável a partir de {source}. Escolha um destino destacado.",
"viewer.route.start.instructions": "Selecione a origem. O próximo passo revelará apenas destinos direcionados.",
"viewer.route.copy.success": "Link da rota traçada copiado",
"viewer.route.copy.failed": "Não foi possível copiar o link da rota traçada",
"viewer.route.position": "Posição {index} de {total} na rota: {label}",
"viewer.route.step": "Passo {index} de {total} · {phase} · {label}",
"viewer.route.motionRequired": "A jornada automática requer movimento Ao vivo",
"viewer.route.trigger.clear": "Limpar rota traçada",
"viewer.route.overview.status": "{nodes} · {hops} · rota mais curta definida",
"viewer.route.overview.node.one": "{count} nó",
"viewer.route.overview.node.other": "{count} nós",
"viewer.route.overview.hop.one": "{count} salto direcionado",
"viewer.route.overview.hop.other": "{count} saltos direcionados",
"viewer.route.phase.playing": "Reproduzindo",
"viewer.route.phase.complete": "Concluído",
"viewer.route.phase.inspecting": "Inspecionando",
"viewer.route.destination.count.one": "{count} destino direcionado disponível. Escolha um nó destacado.",
"viewer.route.destination.count.other": "{count} destinos direcionados disponíveis. Escolha um nó destacado.",
"viewer.route.noOutgoing": "Nenhuma rota de saída começa aqui. Limpe e escolha outra origem.",
"viewer.route.result.title": "{source} até {target}",
"viewer.route.finder.source.title": "Escolher início da rota",
"viewer.route.finder.source.placeholder": "Pesquisar origens de rota",
"viewer.route.finder.source.empty": "Nenhuma origem de rota correspondente",
"viewer.route.finder.source.results": "Nós que podem iniciar uma rota",
"viewer.route.finder.source.noun": "origens de rota",
"viewer.route.finder.source.badge": "início",
"viewer.route.finder.target.title": "Destino a partir de {label}",
"viewer.route.finder.target.placeholder": "Pesquisar destinos alcançáveis",
"viewer.route.finder.target.empty": "Nenhum destino alcançável correspondente",
"viewer.route.finder.target.results": "Destinos de rota alcançáveis",
"viewer.route.finder.target.noun": "destinos alcançáveis",
"viewer.route.hop.one": "{count} salto",
"viewer.route.hop.other": "{count} saltos",
"viewer.lens.eyebrow": "Lente semântica",
"viewer.lens.title": "Comparar papéis do sistema",
"viewer.lens.close": "Fechar lente semântica",
"viewer.lens.instruction": "Escolha até dois tipos semânticos. Um revela seu tráfego real; dois comparam apenas relações diretas definidas.",
"viewer.lens.kinds": "Tipos semânticos",
"viewer.lens.choose": "Escolha um tipo para inspecionar seus nós e relações que o tocam.",
"viewer.lens.copy": "Copiar link da lente semântica",
"viewer.lens.clear": "Limpar lente semântica",
"viewer.lens.open": "Abrir lente semântica",
"viewer.lens.openActive": "Abrir lente semântica ativa",
"viewer.lens.legend": "Legenda semântica",
"viewer.lens.legend.inspect.one": "Inspecionar {label}, {count} nó",
"viewer.lens.legend.inspect.other": "Inspecionar {label}, {count} nós",
"viewer.lens.kind.count.one": "{label}, {count} nó",
"viewer.lens.kind.count.other": "{label}, {count} nós",
"viewer.lens.compare.one": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} relação direta",
"viewer.lens.compare.other": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} relações diretas",
"viewer.lens.single": "{nodes} · {relationships} · nós conectados permanecem visíveis",
"viewer.lens.node.one": "{count} nó {label}",
"viewer.lens.node.other": "{count} nós {label}",
"viewer.lens.relationship.one": "{count} relação que toca",
"viewer.lens.relationship.other": "{count} relações que tocam",
"viewer.radar.title": "Radar semântico",
"viewer.radar.building": "Construindo visão geral",
"viewer.radar.openFull": "Abrir radar semântico completo",
"viewer.radar.open": "Abrir radar",
"viewer.radar.close": "Fechar radar semântico",
"viewer.radar.surface": "Visão geral do diagrama. Clique em um nó para focá-lo, ou use as setas para navegar.",
"viewer.radar.click": "Clicar no nó",
"viewer.radar.drag": "Arrastar para navegar",
"viewer.radar.space": "O radar semântico precisa de mais espaço no MAPA.",
"viewer.radar.nodes": "Nós do radar do diagrama semântico",
"viewer.radar.focus": "Focar {label} a partir do Radar Semântico",
"viewer.radar.status": "{count} nós · {viewport}",
"viewer.radar.fullMap": "{count} nós · mapa completo",
"viewer.radar.compacted": "Radar compactado para não cobrir o Passaporte Semântico ou os controles do MAPA.",
"viewer.radar.cancelWaiting": "Cancelar radar semântico aguardando mais espaço no MAPA",
"viewer.radar.needsSpace": "O radar semântico precisa de mais espaço visível no MAPA",
"viewer.radar.viewport.full": "mapa completo",
"viewer.radar.viewport.width": "{percent}% de largura",
"viewer.radar.viewport.scale": "{percent}% da janela de visualização",
"viewer.nav.controls": "Controles de visualização do diagrama",
"viewer.nav.route": "Traçar uma rota direcionada",
"viewer.nav.route.title": "Traçar rota (R)",
"viewer.nav.route.short": "ROTA",
"viewer.nav.radar": "Abrir radar semântico",
"viewer.nav.radar.title": "Radar semântico (M)",
"viewer.nav.radar.short": "MAPA",
"viewer.nav.lens": "Abrir lente semântica",
"viewer.nav.lens.title": "Lente semântica (L)",
"viewer.nav.lens.short": "LENTE",
"viewer.nav.find": "Encontrar um nó",
"viewer.nav.find.title": "Encontrar um nó (/)",
"viewer.nav.guide": "Abrir guia do diagrama",
"viewer.nav.guide.title": "Guia do diagrama (?)",
"viewer.nav.zoomOut": "Reduzir",
"viewer.nav.zoomOut.title": "Reduzir (-)",
"viewer.nav.reset": "Redefinir visualização do diagrama",
"viewer.nav.reset.title": "Redefinir visualização (0)",
"viewer.nav.read": "LEITURA",
"viewer.nav.zoomIn": "Ampliar",
"viewer.nav.zoomIn.title": "Ampliar (+)",
"viewer.nav.camera": "{hint}. Redefinir visualização do diagrama",
"viewer.nav.camera.title": "{semantic}{hint} · redefinir visualização (0)",
"viewer.nav.camera.semantic": "Câmera semântica ativa · ",
"viewer.nav.level.map": "MAPA",
"viewer.nav.level.read": "LEITURA",
"viewer.nav.level.full": "COMPLETO",
"viewer.nav.level.auto": "AUTO",
"viewer.nav.detail.map": "Amplie para revelar rótulos de relações e contexto do nó",
"viewer.nav.detail.read": "Amplie novamente para revelar tags e anotações",
"viewer.nav.detail.full": "Detalhe completo do diagrama",
"viewer.intent.summary": "{label}. {out} de saída, {in} de entrada{loops}. {total} conexões. Pressione Enter para detalhes.",
"viewer.intent.loops": ", {count} laço próprio",
"viewer.common.copied": "Copiado",
"viewer.common.copyFailed": "Falha ao copiar",
"viewer.common.copyLink": "Copiar link",
"viewer.common.clear": "Limpar",
"viewer.common.close": "Fechar"
}
+425
View File
@@ -0,0 +1,425 @@
{
"page.title": "{title} — диаграмма",
"diagram.description.architecture": "Диаграмма архитектуры, созданная в Archify.",
"diagram.description.workflow": "Диаграмма рабочего процесса, созданная в Archify.",
"diagram.description.sequence": "Диаграмма последовательности, созданная в Archify.",
"diagram.description.dataflow": "Диаграмма потока данных, созданная в Archify.",
"diagram.description.lifecycle": "Диаграмма жизненного цикла, созданная в Archify.",
"node.focus": "Фокус: {label}",
"node.focus.detail": "Фокус: {label}, {detail}",
"node.context.architecture": "Компонент архитектуры",
"node.context.workflow": "Узел рабочего процесса",
"node.context.sequence": "Участник последовательности",
"node.context.dataflow": "Узел потока данных",
"node.context.lifecycle": "Состояние жизненного цикла",
"legend.title": "Легенда",
"legend.architecture.frontend": "Фронтенд",
"legend.architecture.backend": "Бэкенд",
"legend.architecture.database": "База данных",
"legend.architecture.cloud": "Облако",
"legend.architecture.security": "Безопасность",
"legend.architecture.messagebus": "Шина сообщений",
"legend.architecture.external": "Внешний",
"legend.workflow.frontend": "Интерфейс пользователя",
"legend.workflow.backend": "Логика агента",
"legend.workflow.security": "Политика",
"legend.workflow.messagebus": "Действие инструмента",
"legend.workflow.database": "Контекст / трассировка",
"legend.workflow.cloud": "Облачный сервис",
"legend.workflow.external": "Внешняя система",
"legend.sequence.emphasis": "основной запрос",
"legend.sequence.return": "возврат",
"legend.sequence.security": "безопасность",
"legend.sequence.dashed": "асинхронная трассировка",
"legend.sequence.default": "сообщение",
"legend.dataflow.emphasis": "основные данные",
"legend.dataflow.security": "политика / ПДн",
"legend.dataflow.dashed": "асинхронный пакет",
"legend.dataflow.database": "хранилище данных",
"legend.dataflow.default": "поток данных",
"legend.lifecycle.start": "начальное состояние",
"legend.lifecycle.active": "активно",
"legend.lifecycle.waiting": "ожидание",
"legend.lifecycle.decision": "решение",
"legend.lifecycle.success": "успех",
"legend.lifecycle.failure": "ошибка / выход",
"legend.lifecycle.neutral": "нейтральное",
"legend.lifecycle.external": "внешнее",
"legend.lifecycle.final": "конечное состояние",
"viewer.kind.frontend": "Фронтенд",
"viewer.kind.backend": "Бэкенд",
"viewer.kind.database": "База данных",
"viewer.kind.cloud": "Облако",
"viewer.kind.security": "Безопасность",
"viewer.kind.messagebus": "Шина сообщений",
"viewer.kind.external": "Внешний",
"viewer.kind.neutral": "Нейтральный",
"viewer.kind.node": "Узел",
"viewer.kind.start": "Начало",
"viewer.kind.active": "Активно",
"viewer.kind.waiting": "Ожидание",
"viewer.kind.decision": "Решение",
"viewer.kind.success": "Успех",
"viewer.kind.failure": "Ошибка",
"viewer.toolbar.actions": "Действия с диаграммой",
"viewer.theme.toggle.title": "Переключить тему (T)",
"viewer.theme.toggle": "Переключить цветовую тему",
"viewer.theme.dark": "Тёмная",
"viewer.theme.light": "Светлая",
"viewer.preset.choose.title": "Выбрать визуальный стиль (S — переключение)",
"viewer.preset.choose": "Выбрать визуальный стиль",
"viewer.preset.style": "Стиль",
"viewer.preset.menu": "Визуальный стиль",
"viewer.preset.identity": "Визуальная идентичность",
"viewer.preset.cycles": "S — переключение",
"viewer.preset.classic": "Классический",
"viewer.preset.classic.short": "Классика",
"viewer.preset.classic.hint": "Стабильный технический стиль по умолчанию",
"viewer.preset.flow": "Поток сигналов",
"viewer.preset.flow.short": "Поток",
"viewer.preset.flow.hint": "Презентация с акцентом на анимацию",
"viewer.preset.blueprint": "Чертёж",
"viewer.preset.blueprint.hint": "Для инженерного обзора",
"viewer.preset.editorial": "Редакционный",
"viewer.preset.editorial.hint": "Для публикаций и анонсов",
"viewer.preset.badge.signalFlow": "ПОТОК СИГНАЛОВ",
"viewer.preset.badge.blueprint": "ЧЕРТЁЖ / РЕД. 01",
"viewer.preset.badge.editorial": "РЕДАКЦИЯ / ЗАМЕТКА",
"viewer.preset.badge.editorialPlate": "ARCHIFY / ПЛАСТИНА 04",
"viewer.preset.current": "Визуальный стиль: {style}. Выбрать визуальный стиль",
"viewer.motion.live": "Динамика",
"viewer.motion.still": "Статика",
"viewer.motion.pause": "Приостановить анимацию",
"viewer.motion.resume": "Возобновить анимацию",
"viewer.motion.reduced": "Анимация приостановлена из-за настройки сниженного движения",
"viewer.motion.hidden": "Анимация приостановлена, пока страница скрыта",
"viewer.motion.yielding": "Приостановить анимацию; сейчас уступает место: {owner}",
"viewer.motion.yielding.title": "Динамический просмотр включён · уступает место: {owner}",
"viewer.owner.route": "Зонд маршрута",
"viewer.owner.lens": "Семантическая линза",
"viewer.owner.relationship": "Предпросмотр связи",
"viewer.owner.intent": "Трассировка намерения",
"viewer.owner.focus": "семантический фокус",
"viewer.owner.legend": "предпросмотр легенды",
"viewer.owner.reader": "взаимодействие читателя",
"viewer.present.enter": "Войти в режим презентации",
"viewer.present.enter.title": "Режим презентации (F)",
"viewer.present.exit": "Выйти из режима презентации",
"viewer.present.exit.title": "Выйти из режима презентации (F или Escape)",
"viewer.present.present": "Презентация",
"viewer.present.exit.label": "Выход",
"viewer.export.button": "Экспорт",
"viewer.export.button.title": "Экспортировать диаграмму (E)",
"viewer.export.diagram": "Экспортировать диаграмму",
"viewer.export.menu": "Экспорт",
"viewer.export.subtitle": "Портативные, аккуратные файлы",
"viewer.export.share": "Поделиться",
"viewer.export.shareCard": "Карточка для публикации",
"viewer.export.routeShareCard": "Карточка маршрута",
"viewer.export.reachShareCard": "Карточка достижимости",
"viewer.export.copyDiagram": "Копировать диаграмму",
"viewer.export.clipboardPng": "PNG в буфер обмена",
"viewer.export.raster": "Растровые изображения",
"viewer.export.image": "Изображение",
"viewer.export.lossless": "Изображение без потерь",
"viewer.export.compact": "Компактное изображение",
"viewer.export.modern": "Современный формат изображения",
"viewer.export.vectorMotion": "Вектор и анимация",
"viewer.export.vectorMotion.heading": "Вектор и анимация",
"viewer.export.editable": "Редактируемый вектор",
"viewer.export.motion6s": "Анимация 6 с",
"viewer.export.unsupported": "Не поддерживается этим браузером",
"viewer.export.clipboardUnsupported": "Этот браузер не поддерживает запись изображений в буфер обмена",
"viewer.export.clipboardUnsupported.short": "Запись изображений в буфер обмена не поддерживается в этом браузере.",
"viewer.export.motionUnavailable": "Запись анимации недоступна в этом браузере",
"viewer.export.webmUnavailable": "WebM недоступен в этом браузере",
"viewer.export.failed": "Ошибка экспорта: {message}",
"viewer.export.unknownVariant": "Неизвестный тип карточки: {variant}",
"viewer.export.routeRequired": "Постройте маршрут перед экспортом карточки маршрута",
"viewer.export.reachRequired": "Постройте заданную достижимость перед экспортом карточки достижимости",
"viewer.export.unknown": "неизвестно",
"viewer.export.routeFailed": "Не удалось экспортировать карточку маршрута: {message}",
"viewer.export.reachFailed": "Не удалось экспортировать карточку достижимости: {message}",
"viewer.export.copyFailed": "Не удалось скопировать: {message}",
"viewer.export.copiedPng": "PNG скопирован в буфер обмена",
"viewer.export.downloadedRoute": "Карточка маршрута загружена",
"viewer.export.downloadedReach": "Карточка достижимости загружена",
"viewer.export.downloadedWebm": "WebM загружен",
"viewer.export.recording": "Запись анимации, 6 секунд…",
"viewer.export.card.routeSummary.one": "Маршрут: {source} → {target} · {count} направленный переход",
"viewer.export.card.routeSummary.other": "Маршрут: {source} → {target} · {count} направленных переходов",
"viewer.export.card.reachSummary": "Заданная достижимость ({direction}) от {origin} · {nodes} · {links} · макс. {hops}",
"viewer.export.card.node.one": "{count} узел",
"viewer.export.card.node.other": "{count} узлов",
"viewer.export.card.link.one": "{count} связь",
"viewer.export.card.link.other": "{count} связей",
"viewer.export.card.hop.one": "{count} переход",
"viewer.export.card.hop.other": "{count} переходов",
"viewer.export.card.routeBadge": "ARCHIFY · МАРШРУТ · {hops}",
"viewer.export.card.reachBadge": "ARCHIFY · ДОСТИЖИМОСТЬ ({direction})",
"viewer.export.direction.upstream": "Восходящий",
"viewer.export.direction.downstream": "Нисходящий",
"viewer.export.error.canvasUnavailable": "Canvas недоступен для {label}",
"viewer.export.error.contextUnavailable": "2D-контекст canvas недоступен для {label}",
"viewer.export.error.toBlobUnavailable": "canvas.toBlob недоступен для {label}",
"viewer.export.error.toBlobNull": "canvas.toBlob не вернул данные для {label}",
"viewer.export.error.variantsCombined": "Типы карточек нельзя комбинировать",
"viewer.export.error.viewerState": "Не удалось удалить временное состояние просмотра при экспорте карточки",
"viewer.export.error.routeState": "Не удалось безопасно сохранить построенный маршрут при экспорте карточки",
"viewer.export.error.reachState": "Не удалось безопасно сохранить заданную достижимость при экспорте карточки",
"viewer.export.error.webmRequirements": "Экспорт анимации в WebM требует анимации трассировки и поддержки MediaRecorder в браузере",
"viewer.export.error.mediaRecorder": "Ошибка MediaRecorder",
"viewer.export.error.emptyWebm": "MediaRecorder создал пустой файл WebM",
"viewer.export.error.webmBackground": "Не удалось загрузить фон SVG для экспорта WebM",
"viewer.guide.eyebrow": "Гид по диаграмме",
"viewer.guide.close": "Закрыть гид по диаграмме",
"viewer.guide.inspecting": "Анализ скомпилированной семантики",
"viewer.guide.actions": "Действия для изучения диаграммы",
"viewer.guide.find": "Найти любой узел",
"viewer.guide.find.hint": "Поиск по меткам, ролям, типам и постоянным ID.",
"viewer.guide.route": "Построить маршрут",
"viewer.guide.route.aria": "Построить направленный маршрут",
"viewer.guide.route.hint": "Узнайте, как два семантических узла связаны в заданном направлении.",
"viewer.guide.map": "Просмотреть всю систему",
"viewer.guide.map.hint": "Откройте семантический радар с живым видом и постоянными узлами.",
"viewer.guide.lens": "Сравнить семантические типы",
"viewer.guide.lens.hint": "Подсчитайте роли, покажите их связи и сравните прямые заданные связи.",
"viewer.guide.present": "Войти в режим презентации",
"viewer.guide.present.hint": "Отдать весь экран живой диаграмме без изменения экспорта.",
"viewer.guide.shortcuts": "Дополнительные горячие клавиши",
"viewer.guide.shortcut.export": "Экспорт",
"viewer.guide.shortcut.theme": "Тема",
"viewer.guide.shortcut.style": "Стиль",
"viewer.guide.shortcut.reset": "Сброс",
"viewer.guide.shortcut.zoomIn": "Увеличить",
"viewer.guide.shortcut.zoomOut": "Уменьшить",
"viewer.guide.shortcut.close": "Закрыть",
"viewer.guide.facts": "{nodes} · {relationships}",
"viewer.guide.fact.node.one": "{count} семантический узел",
"viewer.guide.fact.node.other": "{count} семантических узлов",
"viewer.guide.fact.relationship.one": "{count} связь",
"viewer.guide.fact.relationship.other": "{count} связей",
"viewer.guide.open": "Открыть гид по диаграмме",
"viewer.finder.title": "Найти узел",
"viewer.finder.close": "Закрыть поиск узлов",
"viewer.finder.placeholder": "Поиск по меткам или ID",
"viewer.finder.search": "Поиск узлов диаграммы",
"viewer.finder.results": "Узлы диаграммы",
"viewer.finder.empty": "Совпадений не найдено",
"viewer.finder.result.focus": "Фокус: {label}",
"viewer.finder.result.routeStart": "Выбрать {label} как начало маршрута",
"viewer.finder.result.routeTarget": "Выбрать {label} как конец маршрута, {links}",
"viewer.finder.status.empty": "Совпадений не найдено",
"viewer.finder.status.count.one": "{count} совпадающий узел",
"viewer.finder.status.count.other": "{count} совпадающих узлов",
"viewer.finder.noun.nodes": "узлов",
"viewer.finder.link.one": "{count} связь",
"viewer.finder.link.other": "{count} связей",
"viewer.finder.result.focus.one": "Фокус: {label}, {count} связанное соединение",
"viewer.finder.result.focus.other": "Фокус: {label}, {count} связанных соединений",
"viewer.finder.status.filtered": "{visible} из {available} {noun}",
"viewer.finder.status.all": "{available} {noun}",
"viewer.passport.eyebrow": "Семантический паспорт",
"viewer.passport.metadata": "Метаданные узла",
"viewer.passport.evidence": "Проверенные источники",
"viewer.passport.verified": "Проверенный источник",
"viewer.passport.verificationScope": "Проверено по локальному Git на фиксированной ревизии. Удалённый доступ не проверялся.",
"viewer.passport.reach": "Заданная достижимость",
"viewer.passport.reach.trace": "Отследить заданную достижимость",
"viewer.passport.upstream": "Восходящий",
"viewer.passport.downstream": "Нисходящий",
"viewer.passport.upstream.trace": "Отследить восходящую заданную достижимость",
"viewer.passport.downstream.trace": "Отследить нисходящую заданную достижимость",
"viewer.passport.close": "Закрыть семантический паспорт",
"viewer.passport.copy": "Скопировать ссылку",
"viewer.passport.copy.focus": "Скопировать ссылку на выделенный узел",
"viewer.passport.relations": "Связи",
"viewer.passport.relations.show": "Показать связанные отношения",
"viewer.passport.relations.hide": "Скрыть связанные отношения",
"viewer.passport.relations.list": "Связанные отношения",
"viewer.passport.copyRelation": "Копировать связь",
"viewer.passport.copyNode": "Копировать узел",
"viewer.passport.copyPinned": "Скопировать ссылку на закреплённую связь",
"viewer.passport.copySource": "Скопировать ссылку на исходный узел",
"viewer.passport.copy.focused.success": "Ссылка на выделенный узел скопирована",
"viewer.passport.copy.pinned.success": "Ссылка на закреплённую связь скопирована",
"viewer.passport.copy.focused.failed": "Не удалось скопировать ссылку на выделенный узел",
"viewer.passport.copy.pinned.failed": "Не удалось скопировать ссылку на закреплённую связь",
"viewer.passport.relationship.none": "Нет связанных отношений",
"viewer.passport.relationship.count.one": "{count} связь",
"viewer.passport.relationship.count.other": "{count} связей",
"viewer.passport.relationship.show.one": "Показать {count} связанное отношение",
"viewer.passport.relationship.show.other": "Показать {count} связанных отношений",
"viewer.passport.relationship.summary": "{out} исходящих · {in} входящих{loops}",
"viewer.passport.relationship.loops": " · {count} петля",
"viewer.passport.relationship.explorer": "Обзор прямых связей",
"viewer.passport.relationship.help": "Используйте стрелки для просмотра связей. Enter или пробел — закрепить детали; Escape — очистить.",
"viewer.passport.relationship.loopsBack": "замыкается",
"viewer.passport.relationship.connectsTo": "соединяется с",
"viewer.passport.relationship.connectsFrom": "соединяется от",
"viewer.passport.relationship.pinned": "Закреплённая связь · {from} → {to} · {label}",
"viewer.passport.relationship.inspect": "Просмотр связи {index} из {total}: {from} → {to}, {label}. Enter — подробности.",
"viewer.passport.relationship.group.out": "Исходящие",
"viewer.passport.relationship.group.in": "Входящие",
"viewer.passport.relationship.group.loop": "Петли",
"viewer.passport.relationship.row": "{group}: {relationship}, {neighbor}",
"viewer.passport.relationship.direction.out": "ИСХ →",
"viewer.passport.relationship.direction.in": "← ВХ",
"viewer.passport.relationship.direction.loop": "ПЕТЛЯ",
"viewer.passport.sourceCount.one": "{count} проверенная ссылка на источник",
"viewer.passport.sourceCount.other": "{count} проверенных ссылок на источники",
"viewer.passport.sourceMarker": "ИСТ",
"viewer.passport.beacon.one": "{count} проверенный источник; выделите узел для просмотра",
"viewer.passport.beacon.other": "{count} проверенных источников; выделите узел для просмотра",
"viewer.passport.repository.open": "Открыть проверенную ревизию репозитория {revision}",
"viewer.passport.source.open": "Открыть проверенный источник {path} на ревизии {revision}",
"viewer.passport.source.openLink": "Открыть ↗",
"viewer.passport.reach.upstream.one": "Отследить {count} восходящий заданный узел",
"viewer.passport.reach.upstream.other": "Отследить {count} восходящих заданных узлов",
"viewer.passport.reach.downstream.one": "Отследить {count} нисходящий заданный узел",
"viewer.passport.reach.downstream.other": "Отследить {count} нисходящих заданных узлов",
"viewer.passport.reach.noUpstream": "Нет восходящих заданных узлов",
"viewer.passport.reach.noDownstream": "Нет нисходящих заданных узлов",
"viewer.passport.reach.status": "{direction} · узлов: {nodes} · связей: {links} · макс. переходов: {hops}",
"viewer.route.eyebrow": "Зонд маршрута",
"viewer.route.start": "Выбрать начальный узел",
"viewer.route.start.find": "Найти начало",
"viewer.route.start.find.aria": "Найти начало маршрута",
"viewer.route.copy": "Скопировать ссылку",
"viewer.route.copy.aria": "Скопировать ссылку на построенный маршрут",
"viewer.route.clear": "Очистить",
"viewer.route.clear.aria": "Очистить зонд маршрута",
"viewer.route.traced": "Построенный маршрут",
"viewer.route.pickTwo": "Выберите два семантических узла на диаграмме",
"viewer.route.pickOne": "Выберите семантический узел на диаграмме",
"viewer.route.controls": "Управление воспроизведением маршрута",
"viewer.route.previous": "Предыдущая позиция маршрута",
"viewer.route.play": "Воспроизвести маршрут",
"viewer.route.pause": "Приостановить маршрут",
"viewer.route.replay": "Повторить маршрут",
"viewer.route.next": "Следующая позиция маршрута",
"viewer.route.journey": "Путь",
"viewer.route.pause.label": "Пауза",
"viewer.route.replay.label": "Повтор",
"viewer.route.overview": "Обзор",
"viewer.route.overview.aria": "Показать полный обзор маршрута",
"viewer.route.instructions": "Сначала выберите источник, затем цель. Направление важно.",
"viewer.route.destination": "Выбрать цель от {label}",
"viewer.route.destination.find": "Найти цель",
"viewer.route.destination.find.aria": "Найти достижимую цель маршрута",
"viewer.route.differentDestination": "Выбрать другую цель",
"viewer.route.distinct": "Для маршрута нужны два разных семантических узла.",
"viewer.route.unreachable": "Нет направленного маршрута к {label}",
"viewer.route.unreachable.detail": "{target} недостижим из {source}. Выберите подсвеченную цель.",
"viewer.route.start.instructions": "Выберите источник. На следующем шаге будут показаны только направленно достижимые цели.",
"viewer.route.copy.success": "Ссылка на построенный маршрут скопирована",
"viewer.route.copy.failed": "Не удалось скопировать ссылку на маршрут",
"viewer.route.position": "Позиция маршрута {index} из {total}: {label}",
"viewer.route.step": "Шаг {index} из {total} · {phase} · {label}",
"viewer.route.motionRequired": "Автоматическое воспроизведение требует режима «Динамика»",
"viewer.route.trigger.clear": "Очистить построенный маршрут",
"viewer.route.overview.status": "{nodes} · {hops} · кратчайший заданный маршрут",
"viewer.route.overview.node.one": "{count} узел",
"viewer.route.overview.node.other": "{count} узлов",
"viewer.route.overview.hop.one": "{count} направленный переход",
"viewer.route.overview.hop.other": "{count} направленных переходов",
"viewer.route.phase.playing": "Воспроизведение",
"viewer.route.phase.complete": "Завершено",
"viewer.route.phase.inspecting": "Просмотр",
"viewer.route.destination.count.one": "Доступна {count} направленная цель. Выберите подсвеченный узел.",
"viewer.route.destination.count.other": "Доступно {count} направленных целей. Выберите подсвеченный узел.",
"viewer.route.noOutgoing": "Отсюда не начинается ни один исходящий маршрут. Очистите и выберите другой источник.",
"viewer.route.result.title": "{source} → {target}",
"viewer.route.finder.source.title": "Выбрать начало маршрута",
"viewer.route.finder.source.placeholder": "Поиск источников маршрута",
"viewer.route.finder.source.empty": "Совпадающих источников маршрута не найдено",
"viewer.route.finder.source.results": "Узлы, с которых можно начать маршрут",
"viewer.route.finder.source.noun": "источников маршрута",
"viewer.route.finder.source.badge": "начало",
"viewer.route.finder.target.title": "Цель от {label}",
"viewer.route.finder.target.placeholder": "Поиск достижимых целей",
"viewer.route.finder.target.empty": "Совпадающих достижимых целей не найдено",
"viewer.route.finder.target.results": "Достижимые цели маршрута",
"viewer.route.finder.target.noun": "достижимых целей",
"viewer.route.hop.one": "{count} переход",
"viewer.route.hop.other": "{count} переходов",
"viewer.lens.eyebrow": "Семантическая линза",
"viewer.lens.title": "Сравнить роли системы",
"viewer.lens.close": "Закрыть семантическую линзу",
"viewer.lens.instruction": "Выберите до двух семантических типов. Один тип показывает реальные связи; два — сравнивают только прямые заданные связи.",
"viewer.lens.kinds": "Семантические типы",
"viewer.lens.choose": "Выберите тип, чтобы просмотреть его узлы и смежные связи.",
"viewer.lens.copy": "Скопировать ссылку на семантическую линзу",
"viewer.lens.clear": "Очистить семантическую линзу",
"viewer.lens.open": "Открыть семантическую линзу",
"viewer.lens.openActive": "Открыть активную семантическую линзу",
"viewer.lens.legend": "Семантическая легенда",
"viewer.lens.legend.inspect.one": "Просмотр {label}, {count} узел",
"viewer.lens.legend.inspect.other": "Просмотр {label}, {count} узлов",
"viewer.lens.kind.count.one": "{label}, {count} узел",
"viewer.lens.kind.count.other": "{label}, {count} узлов",
"viewer.lens.compare.one": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} прямая связь",
"viewer.lens.compare.other": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} прямых связей",
"viewer.lens.single": "{nodes} · {relationships} · связанные узлы остаются видимыми",
"viewer.lens.node.one": "{count} узел типа {label}",
"viewer.lens.node.other": "{count} узлов типа {label}",
"viewer.lens.relationship.one": "{count} смежная связь",
"viewer.lens.relationship.other": "{count} смежных связей",
"viewer.radar.title": "Семантический радар",
"viewer.radar.building": "Построение обзора",
"viewer.radar.openFull": "Открыть полный семантический радар",
"viewer.radar.open": "Открыть радар",
"viewer.radar.close": "Закрыть семантический радар",
"viewer.radar.surface": "Обзор диаграммы. Щёлкните узел, чтобы выделить его, или используйте стрелки для панорамирования.",
"viewer.radar.click": "Щёлкнуть узел",
"viewer.radar.drag": "Перетащите для панорамирования",
"viewer.radar.space": "Семантическому радару нужно больше места на карте.",
"viewer.radar.nodes": "Узлы семантического радара диаграммы",
"viewer.radar.focus": "Фокус: {label} (из семантического радара)",
"viewer.radar.status": "Узлов: {count} · {viewport}",
"viewer.radar.fullMap": "Узлов: {count} · полная карта",
"viewer.radar.compacted": "Радар уменьшен, чтобы не перекрывать семантический паспорт или элементы управления картой.",
"viewer.radar.cancelWaiting": "Отменить ожидание семантическим радаром дополнительного места",
"viewer.radar.needsSpace": "Семантическому радару нужно больше видимого места на карте",
"viewer.radar.viewport.full": "полная карта",
"viewer.radar.viewport.width": "ширина {percent}%",
"viewer.radar.viewport.scale": "масштаб {percent}%",
"viewer.nav.controls": "Управление видом диаграммы",
"viewer.nav.route": "Построить направленный маршрут",
"viewer.nav.route.title": "Построить маршрут (R)",
"viewer.nav.route.short": "ПУТЬ",
"viewer.nav.radar": "Открыть семантический радар",
"viewer.nav.radar.title": "Семантический радар (M)",
"viewer.nav.radar.short": "КАРТА",
"viewer.nav.lens": "Открыть семантическую линзу",
"viewer.nav.lens.title": "Семантическая линза (L)",
"viewer.nav.lens.short": "ЛИНЗА",
"viewer.nav.find": "Найти узел",
"viewer.nav.find.title": "Найти узел (/)",
"viewer.nav.guide": "Открыть гид по диаграмме",
"viewer.nav.guide.title": "Гид по диаграмме (?)",
"viewer.nav.zoomOut": "Уменьшить",
"viewer.nav.zoomOut.title": "Уменьшить (-)",
"viewer.nav.reset": "Сбросить вид диаграммы",
"viewer.nav.reset.title": "Сбросить вид (0)",
"viewer.nav.read": "ЧТЕНИЕ",
"viewer.nav.zoomIn": "Увеличить",
"viewer.nav.zoomIn.title": "Увеличить (+)",
"viewer.nav.camera": "{hint}. Сбросить вид диаграммы",
"viewer.nav.camera.title": "{semantic}{hint} · сбросить вид (0)",
"viewer.nav.camera.semantic": "Семантическая камера активна · ",
"viewer.nav.level.map": "КАРТА",
"viewer.nav.level.read": "ЧТЕНИЕ",
"viewer.nav.level.full": "ПОЛНЫЙ",
"viewer.nav.level.auto": "АВТО",
"viewer.nav.detail.map": "Увеличьте, чтобы увидеть подписи связей и контекст узлов",
"viewer.nav.detail.read": "Увеличьте ещё, чтобы увидеть теги и аннотации",
"viewer.nav.detail.full": "Полная детализация диаграммы",
"viewer.intent.summary": "{label}. {out} исходящих, {in} входящих{loops}. Всего связей: {total}. Enter — подробности.",
"viewer.intent.loops": ", {count} петля",
"viewer.common.copied": "Скопировано",
"viewer.common.copyFailed": "Не удалось скопировать",
"viewer.common.copyLink": "Скопировать ссылку",
"viewer.common.clear": "Очистить",
"viewer.common.close": "Закрыть"
}
+71
View File
@@ -0,0 +1,71 @@
{
"schema_version": 1,
"diagram_type": "dataflow",
"meta": {
"title": "Product Analytics Data Flow",
"output": "examples/dataflow-product-analytics.html",
"viewBox": [1080, 520],
"animation": "trace",
"quality_profile": "showcase"
},
"stages": [
{ "label": "Sources" },
{ "label": "Ingest" },
{ "label": "Process" },
{ "label": "Store" },
{ "label": "Consume" }
],
"nodes": [
{ "id": "web", "type": "frontend", "label": "Web App", "sublabel": "browser SDK", "stage": 0, "row": 0, "tag": "events" },
{ "id": "mobile", "type": "frontend", "label": "Mobile", "sublabel": "iOS / Android", "stage": 0, "row": 2, "tag": "events" },
{ "id": "edge", "type": "cloud", "label": "Edge API", "sublabel": "collector", "stage": 1, "row": 1, "tag": "TLS" },
{ "id": "consent", "type": "security", "label": "Consent Gate", "sublabel": "policy filter", "stage": 2, "row": 0, "tag": "PII guard" },
{ "id": "stream", "type": "messagebus", "label": "Event Stream", "sublabel": "Kafka topic", "stage": 2, "row": 2, "tag": "ordered" },
{ "id": "pii", "type": "security", "label": "PII Vault", "sublabel": "encrypted", "stage": 3, "row": 0, "tag": "restricted" },
{ "id": "warehouse", "type": "database", "label": "Warehouse", "sublabel": "analytics tables", "stage": 3, "row": 1, "tag": "curated" },
{ "id": "features", "type": "database", "label": "Feature Store", "sublabel": "daily batch", "stage": 3, "row": 2, "tag": "derived" },
{ "id": "dashboard", "type": "backend", "label": "Dashboards", "sublabel": "product metrics", "stage": 4, "row": 0, "tag": "SQL" },
{ "id": "model", "type": "backend", "label": "ML Model", "sublabel": "ranking job", "stage": 4, "row": 2, "tag": "features" }
],
"flows": [
{ "id": "web-clickstream", "from": "web", "to": "edge", "label": "clickstream", "classification": "user events", "variant": "emphasis", "fromSide": "right", "toSide": "left", "via": [[205, 157], [205, 271]], "labelAt": [204, 190] },
{ "id": "mobile-events", "from": "mobile", "to": "edge", "label": "app events", "classification": "device events", "variant": "default", "fromSide": "right", "toSide": "left", "via": [[222, 385], [222, 271]], "labelAt": [220, 342] },
{ "id": "consent-enrichment", "from": "edge", "to": "consent", "label": "identity + consent", "classification": "PII touch", "variant": "security", "fromSide": "top", "toSide": "left", "via": [[315, 112], [450, 112], [450, 157]], "labelAt": [382, 100] },
{ "id": "accepted-events", "from": "edge", "to": "stream", "label": "accepted events", "classification": "append-only", "variant": "emphasis", "fromSide": "right", "toSide": "left", "via": [[420, 271], [420, 385]], "labelAt": [438, 324] },
{ "id": "identity-map", "from": "consent", "to": "pii", "label": "identity map", "classification": "encrypted PII", "variant": "security", "route": "straight", "labelAt": [638, 144] },
{ "id": "normalized-facts", "from": "stream", "to": "warehouse", "label": "normalized facts", "classification": "non-PII", "variant": "emphasis", "fromSide": "right", "toSide": "left", "via": [[638, 385], [638, 271]], "labelAt": [638, 326] },
{ "id": "daily-aggregates", "from": "warehouse", "to": "features", "label": "daily aggregates", "classification": "batch", "variant": "dashed", "fromSide": "bottom", "toSide": "top", "route": "straight", "labelAt": [745, 326] },
{ "id": "metrics-query", "from": "warehouse", "to": "dashboard", "label": "metrics SQL", "classification": "read-only", "variant": "default", "fromSide": "right", "toSide": "bottom", "via": [[852, 271], [960, 271]], "labelAt": [876, 258] },
{ "id": "feature-vectors", "from": "features", "to": "model", "label": "feature vectors", "classification": "derived", "variant": "dashed", "route": "straight", "labelAt": [852, 372] },
{ "id": "restricted-join", "from": "pii", "to": "dashboard", "label": "restricted join", "classification": "approved only", "variant": "security", "route": "straight", "labelAt": [852, 144] }
],
"cards": [
{
"dot": "emerald",
"title": "Primary Data Path",
"items": [
"Events move left to right through source, ingest, process, store, and consume stages",
"The hot path stays visually clear even with secondary batch flows",
"Labels name data assets instead of generic API verbs"
]
},
{
"dot": "rose",
"title": "Sensitive Boundary",
"items": [
"Consent and PII paths are styled as security flows",
"PII lands in a restricted vault, separate from the analytics warehouse",
"Restricted joins are visible without implying default access"
]
},
{
"dot": "orange",
"title": "Derived Consumers",
"items": [
"Dashboards read curated facts from the warehouse",
"Feature vectors are derived by batch from analytics tables",
"Consumption paths stay distinct from collection and consent handling"
]
}
]
}
@@ -0,0 +1,51 @@
{
"schema_version": 1,
"diagram_type": "architecture",
"meta": {
"title": "Production Deployment Ownership",
"output": "examples/production-deployment.html",
"visual_preset": "blueprint",
"animation": "trace",
"quality_profile": "showcase",
"engineering_profile": "deployment-ownership"
},
"components": [
{ "id": "clients", "type": "external", "label": "Customers", "sublabel": "web + mobile", "pos": [38, 300], "size": [122, 60] },
{ "id": "edge", "type": "cloud", "label": "Global Edge", "sublabel": "CDN + WAF", "pos": [230, 300], "size": [126, 60], "tag": "edge team" },
{ "id": "gateway", "type": "security", "label": "API Gateway", "sublabel": "public :443", "pos": [430, 300], "size": [128, 60], "tag": "platform" },
{ "id": "api_a", "type": "backend", "label": "API Pods / AZ-a", "sublabel": "private subnet", "pos": [630, 195], "size": [136, 62], "tag": "app team" },
{ "id": "api_b", "type": "backend", "label": "API Pods / AZ-b", "sublabel": "private subnet", "pos": [630, 405], "size": [136, 62], "tag": "app team" },
{ "id": "redis", "type": "database", "label": "Redis", "sublabel": "multi-AZ cache", "pos": [840, 195], "size": [126, 62], "tag": "platform" },
{ "id": "postgres", "type": "database", "label": "PostgreSQL", "sublabel": "primary / encrypted", "pos": [840, 405], "size": [126, 62], "tag": "data team" },
{ "id": "events", "type": "messagebus", "label": "Event Bus", "sublabel": "orders.v1", "pos": [1040, 300], "size": [126, 60], "tag": "platform" },
{ "id": "worker", "type": "backend", "label": "Workers", "sublabel": "private workload", "pos": [1190, 300], "size": [126, 60], "tag": "app team" },
{ "id": "replica", "type": "database", "label": "DR Replica", "sublabel": "eu-west-1", "pos": [1040, 578], "size": [126, 62], "tag": "data team" },
{ "id": "audit", "type": "cloud", "label": "Audit Archive", "sublabel": "immutable objects", "pos": [1190, 450], "size": [126, 62], "tag": "security" },
{ "id": "observability", "type": "external", "label": "Observability", "sublabel": "metrics + traces", "pos": [1190, 85], "size": [126, 62], "tag": "SRE" }
],
"boundaries": [
{ "kind": "region", "label": "AWS us-east-1 / production", "wraps": ["edge", "gateway", "api_a", "api_b", "redis", "postgres", "events", "worker", "audit"], "pad": 20 },
{ "kind": "security-group", "label": "private application network", "wraps": ["api_a", "api_b", "redis", "postgres", "events", "worker"], "pad": 14 },
{ "kind": "region", "label": "AWS eu-west-1 / disaster recovery", "wraps": ["replica"] },
{ "kind": "security-group", "label": "DR private subnet", "wraps": ["replica"], "pad": 14 }
],
"connections": [
{ "from": "clients", "to": "edge", "label": "HTTPS", "variant": "emphasis" },
{ "from": "edge", "to": "gateway", "label": "mTLS", "variant": "security" },
{ "from": "gateway", "to": "api_a", "label": "VPC route", "variant": "emphasis", "route": "orthogonal-h", "labelAt": [594, 275] },
{ "from": "gateway", "to": "api_b", "label": "VPC route", "variant": "emphasis", "route": "orthogonal-h", "labelAt": [594, 385] },
{ "from": "api_a", "to": "redis", "label": "cache", "route": "straight" },
{ "from": "api_b", "to": "postgres", "label": "SQL", "route": "straight" },
{ "from": "api_a", "to": "events", "label": "publish", "variant": "dashed", "fromSide": "top", "toSide": "top", "via": [[698, 170], [1103, 170]] },
{ "from": "api_b", "to": "events", "variant": "dashed", "fromSide": "top", "toSide": "bottom", "via": [[698, 380], [1103, 380]] },
{ "from": "events", "to": "worker", "variant": "emphasis" },
{ "from": "postgres", "to": "replica", "label": "cross-region WAL", "variant": "security", "route": "orthogonal-v", "labelAt": [1003, 529] },
{ "from": "worker", "to": "audit", "label": "evidence", "variant": "dashed", "fromSide": "bottom", "toSide": "top", "labelDy": 58 },
{ "from": "worker", "to": "observability", "label": "OTLP", "variant": "dashed", "route": "orthogonal-v" }
],
"cards": [
{ "dot": "cyan", "title": "Runtime Ownership", "items": ["Platform owns the edge, gateway, cache, and event bus", "Application teams own API pods and workers", "Data owns primary and disaster-recovery state"] },
{ "dot": "rose", "title": "Named Crossings", "items": ["Public HTTPS terminates at the managed edge", "mTLS crosses into the application network", "Cross-region WAL is explicit and encrypted"] },
{ "dot": "emerald", "title": "Operational Evidence", "items": ["Workers emit traces to SRE-owned observability", "Audit evidence lands in immutable storage", "Unknown placement should remain marked, never invented"] }
]
}
+57
View File
@@ -0,0 +1,57 @@
{
"schema_version": 1,
"diagram_type": "workflow",
"meta": {
"title": "Release Delivery Workflow",
"output": "examples/release-delivery.html",
"animation": "trace",
"quality_profile": "showcase"
},
"lanes": [
{ "id": "dev", "label": "Developer" },
{ "id": "ci", "label": "Continuous Integration" },
{ "id": "approval", "label": "Release Governance" },
{ "id": "environment", "label": "Production Environment" },
{ "id": "communication", "label": "Release Communication" },
{ "id": "exceptions", "label": "Failure + Rollback", "variant": "exception" }
],
"phases": [
{ "id": "change", "label": "Change", "fromCol": 0, "toCol": 1 },
{ "id": "verify", "label": "Build + verify", "fromCol": 2, "toCol": 3, "variant": "emphasis" },
{ "id": "promote", "label": "Promote + observe", "fromCol": 4, "toCol": 5, "variant": "dashed" }
],
"groups": [
{ "id": "blocking_checks", "label": "Blocking checks", "lane": "ci", "fromCol": 2, "toCol": 3, "variant": "emphasis" },
{ "id": "rollback_work", "label": "Recovery path", "lane": "exceptions", "fromCol": 3, "toCol": 5, "variant": "security" }
],
"mainPath": ["commit", "pull_request", "build", "checks", "approval", "deploy", "verify_prod", "announce"],
"nodes": [
{ "id": "commit", "lane": "dev", "col": 0, "type": "frontend", "label": "Commit", "sublabel": "signed change" },
{ "id": "pull_request", "lane": "dev", "col": 1, "type": "frontend", "label": "Pull Request", "sublabel": "reviewed diff" },
{ "id": "build", "lane": "ci", "col": 2, "type": "backend", "label": "Build", "sublabel": "locked inputs", "tag": "reproducible" },
{ "id": "checks", "lane": "ci", "col": 3, "type": "security", "label": "Quality Gates", "sublabel": "test + scan", "tag": "blocking" },
{ "id": "approval", "lane": "approval", "col": 4, "type": "security", "label": "Approve", "sublabel": "release owner", "tag": "human gate" },
{ "id": "deploy", "lane": "environment", "col": 4, "type": "cloud", "label": "Deploy", "sublabel": "canary 10%", "tag": "production" },
{ "id": "verify_prod", "lane": "environment", "col": 5, "type": "backend", "label": "Verify", "sublabel": "smoke + SLO" },
{ "id": "announce", "lane": "communication", "col": 5, "type": "external", "label": "Announce", "sublabel": "status + notes" },
{ "id": "failed", "lane": "exceptions", "col": 2, "type": "security", "label": "Stop Release", "sublabel": "gate failed" },
{ "id": "rollback", "lane": "exceptions", "col": 4, "width": 64, "type": "messagebus", "label": "Rollback", "sublabel": "last good image", "tag": "owner: on-call" }
],
"edges": [
{ "from": "commit", "to": "pull_request" },
{ "from": "pull_request", "to": "build", "label": "merge", "variant": "emphasis", "route": "drop", "fromSide": "bottom", "toSide": "top" },
{ "from": "build", "to": "checks" },
{ "from": "checks", "to": "approval", "variant": "emphasis", "route": "drop", "fromSide": "bottom", "toSide": "top" },
{ "from": "approval", "to": "deploy", "variant": "security", "route": "drop", "fromSide": "bottom", "toSide": "top" },
{ "from": "deploy", "to": "verify_prod" },
{ "from": "verify_prod", "to": "announce", "label": "healthy", "variant": "emphasis", "route": "drop", "fromSide": "bottom", "toSide": "top" },
{ "from": "checks", "to": "failed", "label": "red", "variant": "security", "role": "error", "route": "drop", "fromSide": "bottom", "toSide": "top" },
{ "from": "verify_prod", "to": "rollback", "variant": "security", "role": "error", "route": "outside-right", "fromSide": "right", "toSide": "right" },
{ "from": "rollback", "to": "deploy", "label": "restore", "variant": "dashed", "role": "return", "route": "return-left", "fromSide": "left", "toSide": "left" }
],
"cards": [
{ "dot": "emerald", "title": "One Happy Path", "items": ["Every change is reviewed before a reproducible build", "Blocking checks must be green before human approval", "Production is complete only after smoke and SLO verification"] },
{ "dot": "rose", "title": "Stop Conditions", "items": ["Test or security failure stops promotion", "Production health can reverse a release", "Rollback ownership is visible before an incident"] },
{ "dot": "cyan", "title": "Release Evidence", "items": ["Approval, immutable image, and check results are retained", "The release announcement follows verification", "The main path remains readable without hiding failure"] }
]
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+41
View File
@@ -0,0 +1,41 @@
{
"schema_version": 1,
"diagram_type": "architecture",
"meta": {
"title": "Sample Web App",
"output": "web-app-rendered.html",
"quality_profile": "showcase"
},
"components": [
{ "id": "users", "type": "external", "label": "Users", "sublabel": "Browser / Mobile", "pos": [40, 300], "size": [120, 60] },
{ "id": "auth", "type": "security", "label": "Auth Provider", "sublabel": "OAuth 2.0", "pos": [40, 110], "size": [120, 64], "tag": "JWT + PKCE" },
{ "id": "cdn", "type": "cloud", "label": "CloudFront", "sublabel": "CDN", "pos": [250, 300], "size": [130, 60] },
{ "id": "lb", "type": "cloud", "label": "Load Balancer", "sublabel": "HTTPS :443", "pos": [460, 300], "size": [130, 60] },
{ "id": "api", "type": "backend", "label": "API Server", "sublabel": "FastAPI :8000", "pos": [670, 300], "size": [130, 60] },
{ "id": "cache", "type": "database", "label": "Redis", "sublabel": "cache :6379", "pos": [670, 150], "size": [130, 60] },
{ "id": "db", "type": "database", "label": "PostgreSQL", "sublabel": "primary :5432", "pos": [880, 300], "size": [130, 60] },
{ "id": "s3", "type": "cloud", "label": "S3", "sublabel": "static assets", "pos": [250, 440], "size": [130, 60], "tag": "OAI protected" },
{ "id": "queue", "type": "messagebus", "label": "SQS", "sublabel": "job queue", "pos": [670, 440], "size": [130, 60] },
{ "id": "worker", "type": "backend", "label": "Worker", "sublabel": "async jobs", "pos": [880, 440], "size": [130, 60] }
],
"boundaries": [
{ "kind": "region", "label": "AWS Region: us-west-2", "wraps": ["cdn", "lb", "api", "cache", "db", "s3", "queue", "worker"] },
{ "kind": "security-group", "label": "sg-api :443/:8000", "wraps": ["lb", "api"] }
],
"connections": [
{ "id": "users-to-cdn", "from": "users", "to": "cdn", "label": "HTTPS", "variant": "emphasis" },
{ "id": "jwt-verification", "from": "auth", "to": "api", "label": "verify JWT", "variant": "security", "fromSide": "right", "toSide": "top", "via": [[620, 142], [620, 246], [735, 246]] },
{ "id": "cdn-to-lb", "from": "cdn", "to": "lb" },
{ "id": "static-assets", "from": "cdn", "to": "s3", "label": "static", "variant": "dashed", "fromSide": "bottom", "toSide": "top", "labelDy": 58 },
{ "id": "lb-to-api", "from": "lb", "to": "api" },
{ "id": "cache-read-through", "from": "api", "to": "cache", "label": "read-through", "fromSide": "top", "toSide": "bottom", "labelDy": -68 },
{ "id": "api-sql", "from": "api", "to": "db", "label": "SQL" },
{ "id": "enqueue-job", "from": "api", "to": "queue", "label": "enqueue", "variant": "dashed", "fromSide": "bottom", "toSide": "top", "labelDy": 58 },
{ "id": "queue-to-worker", "from": "queue", "to": "worker" }
],
"cards": [
{ "dot": "cyan", "title": "Edge", "items": ["CloudFront CDN fronts all traffic", "S3 serves static assets via OAI"] },
{ "dot": "emerald", "title": "Application", "items": ["FastAPI behind an HTTPS load balancer", "Redis read-through cache", "Async work drained from SQS by a worker"] },
{ "dot": "rose", "title": "Security", "items": ["OAuth 2.0 with JWT + PKCE", "API + LB isolated in a security group"] }
]
}
File diff suppressed because it is too large. Load diff