feat: add section navigation and embedded Archify diagrams
Build and publish Eldorado documentation / build (pull_request) Successful in 29s
Build and publish Eldorado documentation / build (pull_request) Successful in 29s
This commit is contained in:
1 parent
076a7e5329
commit
9ad62a2ed6
133 files changed
+131095
-28
No files matched your search
@@ -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"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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]] }
|
||||
]
|
||||
}
|
||||
+13820
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"] }
|
||||
]
|
||||
}
|
||||
@@ -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"] }
|
||||
]
|
||||
}
|
||||
@@ -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年底不再有法定节假日安排"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"] }
|
||||
]
|
||||
}
|
||||
+13765
File diff suppressed because it is too large.
Load diff
+425
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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": "Закрыть"
|
||||
}
|
||||
@@ -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"] }
|
||||
]
|
||||
}
|
||||
@@ -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"] }
|
||||
]
|
||||
}
|
||||
+13835
File diff suppressed because it is too large.
Load diff
+13808
File diff suppressed because it is too large.
Load diff
@@ -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
Reference in new issue
Block a user