@stacksjs/defaults 0.75.361 → 0.75.366

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/ai/skills/stacks-ai/SKILL.md +22 -0
  2. package/ai/skills/stacks-native/CATALOG.md +5 -5
  3. package/ai/skills/stacks-payments/SKILL.md +10 -0
  4. package/ai/skills/stacks-technical-diagrams/LICENSE +202 -22
  5. package/ai/skills/stacks-technical-diagrams/LICENSE-MIT +22 -0
  6. package/ai/skills/stacks-technical-diagrams/NOTICE +26 -0
  7. package/ai/skills/stacks-technical-diagrams/SKILL.md +106 -266
  8. package/ai/skills/stacks-technical-diagrams/THIRD_PARTY_NOTICES.md +11 -2
  9. package/ai/skills/stacks-technical-diagrams/UPSTREAM.json +12 -0
  10. package/ai/skills/stacks-technical-diagrams/agents/openai.yaml +2 -2
  11. package/ai/skills/stacks-technical-diagrams/assets/template.html +3655 -3798
  12. package/ai/skills/stacks-technical-diagrams/bin/archify.mjs +7290 -0
  13. package/ai/skills/stacks-technical-diagrams/bin/delivery-update.mjs +7 -0
  14. package/ai/skills/stacks-technical-diagrams/bin/diagrams +1 -0
  15. package/ai/skills/stacks-technical-diagrams/bin/finalize.mjs +1056 -0
  16. package/ai/skills/stacks-technical-diagrams/bin/open-artifact.mjs +72 -12
  17. package/ai/skills/stacks-technical-diagrams/bin/preview.mjs +348 -31
  18. package/ai/skills/stacks-technical-diagrams/bin/recover-output.mjs +41 -0
  19. package/ai/skills/stacks-technical-diagrams/bin/technical-diagrams.mjs +3 -2097
  20. package/ai/skills/stacks-technical-diagrams/bin/visual-check.mjs +2142 -157
  21. package/ai/skills/stacks-technical-diagrams/brand-marks/README.md +3 -3
  22. package/ai/skills/stacks-technical-diagrams/delta/architecture-delta.mjs +130 -33
  23. package/ai/skills/stacks-technical-diagrams/examples/agent-run.lifecycle.json +25 -30
  24. package/ai/skills/stacks-technical-diagrams/examples/agent-tool-call.workflow.json +0 -20
  25. package/ai/skills/stacks-technical-diagrams/examples/archify-dev-activity.timeline.json +176 -0
  26. package/ai/skills/stacks-technical-diagrams/examples/archify-repository.tree.json +197 -0
  27. package/ai/skills/stacks-technical-diagrams/examples/async-job-roundtrip.sequence.json +1 -6
  28. package/ai/skills/stacks-technical-diagrams/examples/brand-aware-delivery.architecture.json +3 -16
  29. package/ai/skills/stacks-technical-diagrams/examples/cache-miss-request.sequence.json +2 -7
  30. package/ai/skills/stacks-technical-diagrams/examples/checkout-platform.base.architecture.json +2 -1
  31. package/ai/skills/stacks-technical-diagrams/examples/checkout-platform.head.architecture.json +2 -1
  32. package/ai/skills/stacks-technical-diagrams/examples/checkout-request.waterfall.json +20 -0
  33. package/ai/skills/stacks-technical-diagrams/examples/class-payment-processors-rendered.html +14987 -0
  34. package/ai/skills/stacks-technical-diagrams/examples/class-payments-rendered.html +14787 -0
  35. package/ai/skills/stacks-technical-diagrams/examples/dataflow-product-analytics.html +14880 -0
  36. package/ai/skills/stacks-technical-diagrams/examples/delivery.explainer.json +155 -0
  37. package/ai/skills/stacks-technical-diagrams/examples/deployment-release.lifecycle.json +57 -34
  38. package/ai/skills/stacks-technical-diagrams/examples/erd-orders-rendered.html +15112 -0
  39. package/ai/skills/stacks-technical-diagrams/examples/event-stream.dataflow.json +1 -6
  40. package/ai/skills/stacks-technical-diagrams/examples/example-rebuild.waterfall.json +212 -0
  41. package/ai/skills/stacks-technical-diagrams/examples/holiday-planning.workflow.json +143 -0
  42. package/ai/skills/stacks-technical-diagrams/examples/incident-response.workflow.json +1 -6
  43. package/ai/skills/stacks-technical-diagrams/examples/lifecycle-agent-run.html +14892 -0
  44. package/ai/skills/stacks-technical-diagrams/examples/locales/de.json +463 -0
  45. package/ai/skills/stacks-technical-diagrams/examples/locales/fr.json +463 -0
  46. package/ai/skills/stacks-technical-diagrams/examples/locales/fr.partial.json +22 -0
  47. package/ai/skills/stacks-technical-diagrams/examples/locales/it.json +463 -0
  48. package/ai/skills/stacks-technical-diagrams/examples/locales/ja.json +463 -0
  49. package/ai/skills/stacks-technical-diagrams/examples/locales/pt.json +463 -0
  50. package/ai/skills/stacks-technical-diagrams/examples/locales/ru.json +463 -0
  51. package/ai/skills/stacks-technical-diagrams/examples/orders.erd.json +337 -0
  52. package/ai/skills/stacks-technical-diagrams/examples/payment-incident.timeline.json +24 -0
  53. package/ai/skills/stacks-technical-diagrams/examples/payment-platform.tree.json +22 -0
  54. package/ai/skills/stacks-technical-diagrams/examples/payment-processors.class.json +177 -0
  55. package/ai/skills/stacks-technical-diagrams/examples/payments.class.json +85 -0
  56. package/ai/skills/stacks-technical-diagrams/examples/product-analytics.dataflow.json +1 -6
  57. package/ai/skills/stacks-technical-diagrams/examples/production-deployment.architecture.json +3 -23
  58. package/ai/skills/stacks-technical-diagrams/examples/release-delivery.workflow.json +1 -6
  59. package/ai/skills/stacks-technical-diagrams/examples/sequence-cache-miss-request.html +14895 -0
  60. package/ai/skills/stacks-technical-diagrams/examples/subscription-billing-rendered.html +15369 -0
  61. package/ai/skills/stacks-technical-diagrams/examples/subscription-billing.erd.json +548 -0
  62. package/ai/skills/stacks-technical-diagrams/examples/timeline-archify-dev-activity-rendered.html +15002 -0
  63. package/ai/skills/stacks-technical-diagrams/examples/timeline-payment-incident-rendered.html +14772 -0
  64. package/ai/skills/stacks-technical-diagrams/examples/tree-archify-repository-rendered.html +15071 -0
  65. package/ai/skills/stacks-technical-diagrams/examples/tree-payment-platform-rendered.html +14810 -0
  66. package/ai/skills/stacks-technical-diagrams/examples/waterfall-checkout-request-rendered.html +14754 -0
  67. package/ai/skills/stacks-technical-diagrams/examples/waterfall-example-rebuild-rendered.html +14940 -0
  68. package/ai/skills/stacks-technical-diagrams/examples/web-app-rendered.html +14889 -0
  69. package/ai/skills/stacks-technical-diagrams/examples/web-app.architecture.json +1 -6
  70. package/ai/skills/stacks-technical-diagrams/examples/workflow-agent-tool-call-rendered.html +14907 -0
  71. package/ai/skills/stacks-technical-diagrams/explainer/browser-check.mjs +208 -0
  72. package/ai/skills/stacks-technical-diagrams/explainer/charts.mjs +70 -0
  73. package/ai/skills/stacks-technical-diagrams/explainer/check.mjs +168 -0
  74. package/ai/skills/stacks-technical-diagrams/explainer/diagrams.mjs +518 -0
  75. package/ai/skills/stacks-technical-diagrams/explainer/diff.mjs +124 -0
  76. package/ai/skills/stacks-technical-diagrams/explainer/inline.mjs +155 -0
  77. package/ai/skills/stacks-technical-diagrams/explainer/layout.mjs +35 -0
  78. package/ai/skills/stacks-technical-diagrams/explainer/page-bundle.mjs +16 -0
  79. package/ai/skills/stacks-technical-diagrams/explainer/parse.mjs +300 -0
  80. package/ai/skills/stacks-technical-diagrams/explainer/patch.mjs +117 -0
  81. package/ai/skills/stacks-technical-diagrams/explainer/prepare.mjs +131 -0
  82. package/ai/skills/stacks-technical-diagrams/explainer/reader.css +472 -0
  83. package/ai/skills/stacks-technical-diagrams/explainer/reader.js +667 -0
  84. package/ai/skills/stacks-technical-diagrams/explainer/render.mjs +224 -0
  85. package/ai/skills/stacks-technical-diagrams/explainer/revision.mjs +20 -0
  86. package/ai/skills/stacks-technical-diagrams/explainer/sources.mjs +318 -0
  87. package/ai/skills/stacks-technical-diagrams/explainer/validate.mjs +138 -0
  88. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/LICENSE +40 -0
  89. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/README.md +5 -0
  90. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/3DKXF73K.js +4 -0
  91. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/42UTT654.js +3 -0
  92. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/DKTLEL5E.js +1 -0
  93. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/EEIX5ZYH.js +2 -0
  94. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/EJ5KOXYD.js +25 -0
  95. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/GUJTEFZK.js +1 -0
  96. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/IZOKQ2GT.js +4 -0
  97. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/L4LY553T.js +3 -0
  98. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/MSKIJHB2.js +2 -0
  99. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/RVARI57O.js +1 -0
  100. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/UKSIWDDN.js +2 -0
  101. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/UPTXNAXN.js +2 -0
  102. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/XTDUIGUI.js +9 -0
  103. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/YAYTP6L5.js +9 -0
  104. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/core.js +1 -0
  105. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/pie.js +1 -0
  106. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/quadrantChart.js +1 -0
  107. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/radar.js +1 -0
  108. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/sankey.js +1 -0
  109. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/venn.js +1 -0
  110. package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/xychart.js +1 -0
  111. package/ai/skills/stacks-technical-diagrams/explainer/writing.mjs +139 -0
  112. package/ai/skills/stacks-technical-diagrams/locales/README.md +40 -0
  113. package/ai/skills/stacks-technical-diagrams/locales/ar.json +488 -0
  114. package/ai/skills/stacks-technical-diagrams/locales/en.json +488 -0
  115. package/ai/skills/stacks-technical-diagrams/locales/es.json +488 -0
  116. package/ai/skills/stacks-technical-diagrams/locales/ko.json +488 -0
  117. package/ai/skills/stacks-technical-diagrams/locales/manifest.json +10 -0
  118. package/ai/skills/stacks-technical-diagrams/locales/zh-CN.json +488 -0
  119. package/ai/skills/stacks-technical-diagrams/locales/zh-TW.json +488 -0
  120. package/ai/skills/stacks-technical-diagrams/migrations/workflow-v2.mjs +1 -0
  121. package/ai/skills/stacks-technical-diagrams/recipes/scenarios.mjs +115 -51
  122. package/ai/skills/stacks-technical-diagrams/references/architecture-layout-repair.md +18 -0
  123. package/ai/skills/stacks-technical-diagrams/references/authoring-contract.md +453 -51
  124. package/ai/skills/stacks-technical-diagrams/references/authoring-defaults.md +57 -0
  125. package/ai/skills/stacks-technical-diagrams/references/brand-marks.md +57 -3
  126. package/ai/skills/stacks-technical-diagrams/references/delivery-contract.md +603 -58
  127. package/ai/skills/stacks-technical-diagrams/references/explainer-authoring.md +274 -0
  128. package/ai/skills/stacks-technical-diagrams/references/repository-authoring.md +126 -0
  129. package/ai/skills/stacks-technical-diagrams/references/update-awareness.md +13 -0
  130. package/ai/skills/stacks-technical-diagrams/references/viewer-runtime.md +18 -11
  131. package/ai/skills/stacks-technical-diagrams/renderers/architecture/grid.mjs +1 -1
  132. package/ai/skills/stacks-technical-diagrams/renderers/architecture/labels.mjs +2 -0
  133. package/ai/skills/stacks-technical-diagrams/renderers/architecture/render-architecture.mjs +550 -424
  134. package/ai/skills/stacks-technical-diagrams/renderers/architecture/routing.mjs +1469 -0
  135. package/ai/skills/stacks-technical-diagrams/renderers/class/README.md +129 -0
  136. package/ai/skills/stacks-technical-diagrams/renderers/class/render-class.mjs +1095 -0
  137. package/ai/skills/stacks-technical-diagrams/renderers/dataflow/README.md +89 -17
  138. package/ai/skills/stacks-technical-diagrams/renderers/dataflow/dataflow-compiler.mjs +1605 -0
  139. package/ai/skills/stacks-technical-diagrams/renderers/dataflow/joint-label-routing.mjs +165 -0
  140. package/ai/skills/stacks-technical-diagrams/renderers/dataflow/label-capacity.mjs +81 -0
  141. package/ai/skills/stacks-technical-diagrams/renderers/dataflow/render-dataflow.mjs +14 -474
  142. package/ai/skills/stacks-technical-diagrams/renderers/erd/README.md +246 -0
  143. package/ai/skills/stacks-technical-diagrams/renderers/erd/grid.mjs +150 -0
  144. package/ai/skills/stacks-technical-diagrams/renderers/erd/render-erd.mjs +1588 -0
  145. package/ai/skills/stacks-technical-diagrams/renderers/explainer/render-explainer.mjs +42 -0
  146. package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/README.md +83 -94
  147. package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/render-lifecycle.mjs +990 -417
  148. package/ai/skills/stacks-technical-diagrams/renderers/sequence/README.md +49 -17
  149. package/ai/skills/stacks-technical-diagrams/renderers/sequence/render-sequence.mjs +735 -94
  150. package/ai/skills/stacks-technical-diagrams/renderers/shared/atomic-output.mjs +1982 -0
  151. package/ai/skills/stacks-technical-diagrams/renderers/shared/automatic-labels.mjs +290 -0
  152. package/ai/skills/stacks-technical-diagrams/renderers/shared/brand-marks.mjs +169 -26
  153. package/ai/skills/stacks-technical-diagrams/renderers/shared/cli.mjs +266 -54
  154. package/ai/skills/stacks-technical-diagrams/renderers/shared/desktop-readability.mjs +106 -0
  155. package/ai/skills/stacks-technical-diagrams/renderers/shared/diagnostics.mjs +0 -0
  156. package/ai/skills/stacks-technical-diagrams/renderers/shared/generated-validators.mjs +268 -2
  157. package/ai/skills/stacks-technical-diagrams/renderers/shared/geometry.mjs +774 -124
  158. package/ai/skills/stacks-technical-diagrams/renderers/shared/i18n.mjs +289 -556
  159. package/ai/skills/stacks-technical-diagrams/renderers/shared/layout-report.mjs +18 -1
  160. package/ai/skills/stacks-technical-diagrams/renderers/shared/legend.mjs +16 -6
  161. package/ai/skills/stacks-technical-diagrams/renderers/shared/node-card-style.mjs +32 -0
  162. package/ai/skills/stacks-technical-diagrams/renderers/shared/output-path.mjs +329 -229
  163. package/ai/skills/stacks-technical-diagrams/renderers/shared/owned-temp-directory.mjs +82 -0
  164. package/ai/skills/stacks-technical-diagrams/renderers/shared/path-semantics.mjs +1017 -0
  165. package/ai/skills/stacks-technical-diagrams/renderers/shared/portable-path.mjs +408 -0
  166. package/ai/skills/stacks-technical-diagrams/renderers/shared/repository-evidence.mjs +235 -79
  167. package/ai/skills/stacks-technical-diagrams/renderers/shared/repository-location.mjs +17 -4
  168. package/ai/skills/stacks-technical-diagrams/renderers/shared/route-quality.mjs +670 -0
  169. package/ai/skills/stacks-technical-diagrams/renderers/shared/sidecar-path.mjs +38 -0
  170. package/ai/skills/stacks-technical-diagrams/renderers/shared/software-notices.mjs +6 -0
  171. package/ai/skills/stacks-technical-diagrams/renderers/shared/spatial-grid.mjs +66 -0
  172. package/ai/skills/stacks-technical-diagrams/renderers/shared/svg-path-analysis.mjs +135 -0
  173. package/ai/skills/stacks-technical-diagrams/renderers/shared/text-fit.mjs +59 -3
  174. package/ai/skills/stacks-technical-diagrams/renderers/shared/utils.mjs +63 -35
  175. package/ai/skills/stacks-technical-diagrams/renderers/shared/validator.mjs +2 -5
  176. package/ai/skills/stacks-technical-diagrams/renderers/timeline/README.md +76 -0
  177. package/ai/skills/stacks-technical-diagrams/renderers/timeline/render-timeline.mjs +576 -0
  178. package/ai/skills/stacks-technical-diagrams/renderers/tree/README.md +96 -0
  179. package/ai/skills/stacks-technical-diagrams/renderers/tree/render-tree.mjs +573 -0
  180. package/ai/skills/stacks-technical-diagrams/renderers/waterfall/README.md +73 -0
  181. package/ai/skills/stacks-technical-diagrams/renderers/waterfall/render-waterfall.mjs +413 -0
  182. package/ai/skills/stacks-technical-diagrams/renderers/workflow/README.md +137 -23
  183. package/ai/skills/stacks-technical-diagrams/renderers/workflow/render-workflow.mjs +18 -6
  184. package/ai/skills/stacks-technical-diagrams/renderers/workflow/workflow-compiler.mjs +2230 -710
  185. package/ai/skills/stacks-technical-diagrams/renderers/workflow/workflow-migration-geometry.mjs +17 -0
  186. package/ai/skills/stacks-technical-diagrams/renderers/workflow/workflow-placement-repair.mjs +94 -0
  187. package/ai/skills/stacks-technical-diagrams/schemas/README.md +87 -40
  188. package/ai/skills/stacks-technical-diagrams/schemas/architecture.schema.json +7 -33
  189. package/ai/skills/stacks-technical-diagrams/schemas/class.schema.json +345 -0
  190. package/ai/skills/stacks-technical-diagrams/schemas/common.schema.json +68 -2
  191. package/ai/skills/stacks-technical-diagrams/schemas/dataflow.schema.json +14 -3
  192. package/ai/skills/stacks-technical-diagrams/schemas/erd.schema.json +381 -0
  193. package/ai/skills/stacks-technical-diagrams/schemas/explainer.schema.json +927 -0
  194. package/ai/skills/stacks-technical-diagrams/schemas/lifecycle.schema.json +23 -110
  195. package/ai/skills/stacks-technical-diagrams/schemas/sequence.schema.json +15 -4
  196. package/ai/skills/stacks-technical-diagrams/schemas/timeline.schema.json +160 -0
  197. package/ai/skills/stacks-technical-diagrams/schemas/tree.schema.json +141 -0
  198. package/ai/skills/stacks-technical-diagrams/schemas/waterfall.schema.json +147 -0
  199. package/ai/skills/stacks-technical-diagrams/schemas/workflow.schema.json +14 -3
  200. package/ai/skills/stacks-technical-diagrams/scripts/check-render-output.mjs +876 -243
  201. package/ai/skills/stacks-technical-diagrams/scripts/check-update.mjs +1717 -0
  202. package/ai/skills/stacks-technical-diagrams/scripts/delivery-update-child.mjs +26 -0
  203. package/ai/skills/stacks-technical-diagrams/scripts/generate-brand-marks.mjs +141 -0
  204. package/ai/skills/stacks-technical-diagrams/scripts/generate-validators.mjs +105 -0
  205. package/ai/skills/stacks-technical-diagrams/scripts/render-examples.mjs +11 -1
  206. package/ai/skills/stacks-technical-diagrams/scripts/update-contract.mjs +187 -0
  207. package/ai/skills/stacks-technical-diagrams/skill-release.json +10 -0
  208. package/ai/skills/stacks-testing/SKILL.md +8 -1
  209. package/ide/vscode/package.json +1 -1
  210. package/package.json +2 -2
@@ -0,0 +1,463 @@
1
+ {
2
+ "page.title": "{title} — диаграмма",
3
+ "diagram.description.architecture": "Диаграмма архитектуры, созданная в Archify.",
4
+ "diagram.description.workflow": "Диаграмма рабочего процесса, созданная в Archify.",
5
+ "diagram.description.sequence": "Диаграмма последовательности, созданная в Archify.",
6
+ "diagram.description.dataflow": "Диаграмма потока данных, созданная в Archify.",
7
+ "diagram.description.lifecycle": "Диаграмма жизненного цикла, созданная в Archify.",
8
+ "node.focus": "Фокус: {label}",
9
+ "node.focus.detail": "Фокус: {label}, {detail}",
10
+ "node.context.architecture": "Компонент архитектуры",
11
+ "node.context.workflow": "Узел рабочего процесса",
12
+ "node.context.sequence": "Участник последовательности",
13
+ "node.context.dataflow": "Узел потока данных",
14
+ "node.context.lifecycle": "Состояние жизненного цикла",
15
+ "legend.title": "Легенда",
16
+ "legend.architecture.frontend": "Фронтенд",
17
+ "legend.architecture.backend": "Бэкенд",
18
+ "legend.architecture.database": "База данных",
19
+ "legend.architecture.cloud": "Облако",
20
+ "legend.architecture.security": "Безопасность",
21
+ "legend.architecture.messagebus": "Шина сообщений",
22
+ "legend.architecture.external": "Внешний",
23
+ "legend.workflow.frontend": "Интерфейс пользователя",
24
+ "legend.workflow.backend": "Логика агента",
25
+ "legend.workflow.security": "Политика",
26
+ "legend.workflow.messagebus": "Действие инструмента",
27
+ "legend.workflow.database": "Контекст / трассировка",
28
+ "legend.workflow.cloud": "Облачный сервис",
29
+ "legend.workflow.external": "Внешняя система",
30
+ "legend.sequence.emphasis": "основной запрос",
31
+ "legend.sequence.return": "возврат",
32
+ "legend.sequence.security": "безопасность",
33
+ "legend.sequence.dashed": "асинхронная трассировка",
34
+ "legend.sequence.default": "сообщение",
35
+ "legend.dataflow.emphasis": "основные данные",
36
+ "legend.dataflow.security": "политика / ПДн",
37
+ "legend.dataflow.dashed": "асинхронный пакет",
38
+ "legend.dataflow.database": "хранилище данных",
39
+ "legend.dataflow.default": "поток данных",
40
+ "legend.lifecycle.start": "начальное состояние",
41
+ "legend.lifecycle.active": "активно",
42
+ "legend.lifecycle.waiting": "ожидание",
43
+ "legend.lifecycle.decision": "решение",
44
+ "legend.lifecycle.success": "успех",
45
+ "legend.lifecycle.failure": "ошибка / выход",
46
+ "legend.lifecycle.neutral": "нейтральное",
47
+ "legend.lifecycle.external": "внешнее",
48
+ "legend.lifecycle.final": "конечное состояние",
49
+ "viewer.kind.frontend": "Фронтенд",
50
+ "viewer.kind.backend": "Бэкенд",
51
+ "viewer.kind.database": "База данных",
52
+ "viewer.kind.cloud": "Облако",
53
+ "viewer.kind.security": "Безопасность",
54
+ "viewer.kind.messagebus": "Шина сообщений",
55
+ "viewer.kind.external": "Внешний",
56
+ "viewer.kind.neutral": "Нейтральный",
57
+ "viewer.kind.node": "Узел",
58
+ "viewer.kind.start": "Начало",
59
+ "viewer.kind.active": "Активно",
60
+ "viewer.kind.waiting": "Ожидание",
61
+ "viewer.kind.decision": "Решение",
62
+ "viewer.kind.success": "Успех",
63
+ "viewer.kind.failure": "Ошибка",
64
+ "viewer.toolbar.actions": "Действия с диаграммой",
65
+ "viewer.theme.toggle.title": "Переключить тему (T)",
66
+ "viewer.theme.toggle": "Переключить цветовую тему",
67
+ "viewer.theme.dark": "Тёмная",
68
+ "viewer.theme.light": "Светлая",
69
+ "viewer.preset.choose.title": "Выбрать визуальный стиль (S — переключение)",
70
+ "viewer.preset.choose": "Выбрать визуальный стиль",
71
+ "viewer.preset.style": "Стиль",
72
+ "viewer.preset.menu": "Визуальный стиль",
73
+ "viewer.preset.identity": "Визуальная идентичность",
74
+ "viewer.preset.cycles": "S — переключение",
75
+ "viewer.preset.classic": "Классический",
76
+ "viewer.preset.classic.short": "Классика",
77
+ "viewer.preset.classic.hint": "Стабильный технический стиль по умолчанию",
78
+ "viewer.preset.flow": "Поток сигналов",
79
+ "viewer.preset.flow.short": "Поток",
80
+ "viewer.preset.flow.hint": "Презентация с акцентом на анимацию",
81
+ "viewer.preset.blueprint": "Чертёж",
82
+ "viewer.preset.blueprint.hint": "Для инженерного обзора",
83
+ "viewer.preset.editorial": "Редакционный",
84
+ "viewer.preset.editorial.hint": "Для публикаций и анонсов",
85
+ "viewer.preset.badge.signalFlow": "ПОТОК СИГНАЛОВ",
86
+ "viewer.preset.badge.blueprint": "ЧЕРТЁЖ / РЕД. 01",
87
+ "viewer.preset.badge.editorial": "РЕДАКЦИЯ / ЗАМЕТКА",
88
+ "viewer.preset.badge.editorialPlate": "ARCHIFY / ПЛАСТИНА 04",
89
+ "viewer.preset.current": "Визуальный стиль: {style}. Выбрать визуальный стиль",
90
+ "viewer.motion.live": "Динамика",
91
+ "viewer.motion.still": "Статика",
92
+ "viewer.motion.pause": "Приостановить анимацию",
93
+ "viewer.motion.resume": "Возобновить анимацию",
94
+ "viewer.motion.reduced": "Анимация приостановлена из-за настройки сниженного движения",
95
+ "viewer.motion.hidden": "Анимация приостановлена, пока страница скрыта",
96
+ "viewer.motion.yielding": "Приостановить анимацию; сейчас уступает место: {owner}",
97
+ "viewer.motion.yielding.title": "Динамический просмотр включён · уступает место: {owner}",
98
+ "viewer.owner.route": "Зонд маршрута",
99
+ "viewer.owner.lens": "Семантическая линза",
100
+ "viewer.owner.relationship": "Предпросмотр связи",
101
+ "viewer.owner.intent": "Трассировка намерения",
102
+ "viewer.owner.focus": "семантический фокус",
103
+ "viewer.owner.legend": "предпросмотр легенды",
104
+ "viewer.owner.reader": "взаимодействие читателя",
105
+ "viewer.present.enter": "Войти в режим презентации",
106
+ "viewer.present.enter.title": "Режим презентации (F)",
107
+ "viewer.present.exit": "Выйти из режима презентации",
108
+ "viewer.present.exit.title": "Выйти из режима презентации (F или Escape)",
109
+ "viewer.present.present": "Презентация",
110
+ "viewer.present.exit.label": "Выход",
111
+ "viewer.export.button": "Экспорт",
112
+ "viewer.export.button.title": "Экспортировать диаграмму (E)",
113
+ "viewer.export.diagram": "Экспортировать диаграмму",
114
+ "viewer.export.menu": "Экспорт",
115
+ "viewer.export.subtitle": "Портативные, аккуратные файлы",
116
+ "viewer.export.share": "Поделиться",
117
+ "viewer.export.shareCard": "Карточка для публикации",
118
+ "viewer.export.routeShareCard": "Карточка маршрута",
119
+ "viewer.export.reachShareCard": "Карточка достижимости",
120
+ "viewer.export.copyDiagram": "Копировать диаграмму",
121
+ "viewer.export.clipboardPng": "PNG в буфер обмена",
122
+ "viewer.export.raster": "Растровые изображения",
123
+ "viewer.export.image": "Изображение",
124
+ "viewer.export.lossless": "Изображение без потерь",
125
+ "viewer.export.compact": "Компактное изображение",
126
+ "viewer.export.modern": "Современный формат изображения",
127
+ "viewer.export.vectorMotion": "Вектор и анимация",
128
+ "viewer.export.vectorMotion.heading": "Вектор и анимация",
129
+ "viewer.export.editable": "Редактируемый вектор",
130
+ "viewer.export.motion6s": "Анимация 6 с",
131
+ "viewer.export.unsupported": "Не поддерживается этим браузером",
132
+ "viewer.export.clipboardUnsupported": "Этот браузер не поддерживает запись изображений в буфер обмена",
133
+ "viewer.export.clipboardUnsupported.short": "Запись изображений в буфер обмена не поддерживается в этом браузере.",
134
+ "viewer.export.motionUnavailable": "Запись анимации недоступна в этом браузере",
135
+ "viewer.export.webmUnavailable": "WebM недоступен в этом браузере",
136
+ "viewer.export.failed": "Ошибка экспорта: {message}",
137
+ "viewer.export.unknownVariant": "Неизвестный тип карточки: {variant}",
138
+ "viewer.export.routeRequired": "Постройте маршрут перед экспортом карточки маршрута",
139
+ "viewer.export.reachRequired": "Постройте заданную достижимость перед экспортом карточки достижимости",
140
+ "viewer.export.unknown": "неизвестно",
141
+ "viewer.export.routeFailed": "Не удалось экспортировать карточку маршрута: {message}",
142
+ "viewer.export.reachFailed": "Не удалось экспортировать карточку достижимости: {message}",
143
+ "viewer.export.copyFailed": "Не удалось скопировать: {message}",
144
+ "viewer.export.copiedPng": "PNG скопирован в буфер обмена",
145
+ "viewer.export.downloadedRoute": "Карточка маршрута загружена",
146
+ "viewer.export.downloadedReach": "Карточка достижимости загружена",
147
+ "viewer.export.downloadedWebm": "WebM загружен",
148
+ "viewer.export.recording": "Запись анимации, 6 секунд…",
149
+ "viewer.export.card.routeSummary.one": "Маршрут: {source} → {target} · {count} направленный переход",
150
+ "viewer.export.card.routeSummary.other": "Маршрут: {source} → {target} · {count} направленных переходов",
151
+ "viewer.export.card.reachSummary": "Заданная достижимость ({direction}) от {origin} · {nodes} · {links} · макс. {hops}",
152
+ "viewer.export.card.node.one": "{count} узел",
153
+ "viewer.export.card.node.other": "{count} узлов",
154
+ "viewer.export.card.link.one": "{count} связь",
155
+ "viewer.export.card.link.other": "{count} связей",
156
+ "viewer.export.card.hop.one": "{count} переход",
157
+ "viewer.export.card.hop.other": "{count} переходов",
158
+ "viewer.export.card.routeBadge": "ARCHIFY · МАРШРУТ · {hops}",
159
+ "viewer.export.card.reachBadge": "ARCHIFY · ДОСТИЖИМОСТЬ ({direction})",
160
+ "viewer.export.direction.upstream": "Восходящий",
161
+ "viewer.export.direction.downstream": "Нисходящий",
162
+ "viewer.export.error.canvasUnavailable": "Canvas недоступен для {label}",
163
+ "viewer.export.error.contextUnavailable": "2D-контекст canvas недоступен для {label}",
164
+ "viewer.export.error.toBlobUnavailable": "canvas.toBlob недоступен для {label}",
165
+ "viewer.export.error.toBlobNull": "canvas.toBlob не вернул данные для {label}",
166
+ "viewer.export.error.variantsCombined": "Типы карточек нельзя комбинировать",
167
+ "viewer.export.error.viewerState": "Не удалось удалить временное состояние просмотра при экспорте карточки",
168
+ "viewer.export.error.routeState": "Не удалось безопасно сохранить построенный маршрут при экспорте карточки",
169
+ "viewer.export.error.reachState": "Не удалось безопасно сохранить заданную достижимость при экспорте карточки",
170
+ "viewer.export.error.webmRequirements": "Экспорт анимации в WebM требует анимации трассировки и поддержки MediaRecorder в браузере",
171
+ "viewer.export.error.mediaRecorder": "Ошибка MediaRecorder",
172
+ "viewer.export.error.emptyWebm": "MediaRecorder создал пустой файл WebM",
173
+ "viewer.export.error.webmBackground": "Не удалось загрузить фон SVG для экспорта WebM",
174
+ "viewer.guide.eyebrow": "Гид по диаграмме",
175
+ "viewer.guide.close": "Закрыть гид по диаграмме",
176
+ "viewer.guide.inspecting": "Анализ скомпилированной семантики",
177
+ "viewer.guide.actions": "Действия для изучения диаграммы",
178
+ "viewer.guide.find": "Найти любой узел",
179
+ "viewer.guide.find.hint": "Поиск по меткам, ролям, типам и постоянным ID.",
180
+ "viewer.guide.route": "Построить маршрут",
181
+ "viewer.guide.route.aria": "Построить направленный маршрут",
182
+ "viewer.guide.route.hint": "Узнайте, как два семантических узла связаны в заданном направлении.",
183
+ "viewer.guide.map": "Просмотреть всю систему",
184
+ "viewer.guide.map.hint": "Откройте семантический радар с живым видом и постоянными узлами.",
185
+ "viewer.guide.lens": "Сравнить семантические типы",
186
+ "viewer.guide.lens.hint": "Подсчитайте роли, покажите их связи и сравните прямые заданные связи.",
187
+ "viewer.guide.present": "Войти в режим презентации",
188
+ "viewer.guide.present.hint": "Отдать весь экран живой диаграмме без изменения экспорта.",
189
+ "viewer.guide.shortcuts": "Дополнительные горячие клавиши",
190
+ "viewer.guide.shortcut.export": "Экспорт",
191
+ "viewer.guide.shortcut.theme": "Тема",
192
+ "viewer.guide.shortcut.style": "Стиль",
193
+ "viewer.guide.shortcut.reset": "Сброс",
194
+ "viewer.guide.shortcut.zoomIn": "Увеличить",
195
+ "viewer.guide.shortcut.zoomOut": "Уменьшить",
196
+ "viewer.guide.shortcut.close": "Закрыть",
197
+ "viewer.guide.facts": "{nodes} · {relationships}",
198
+ "viewer.guide.fact.node.one": "{count} семантический узел",
199
+ "viewer.guide.fact.node.other": "{count} семантических узлов",
200
+ "viewer.guide.fact.relationship.one": "{count} связь",
201
+ "viewer.guide.fact.relationship.other": "{count} связей",
202
+ "viewer.guide.open": "Открыть гид по диаграмме",
203
+ "viewer.finder.title": "Найти узел",
204
+ "viewer.finder.close": "Закрыть поиск узлов",
205
+ "viewer.finder.placeholder": "Поиск по меткам или ID",
206
+ "viewer.finder.search": "Поиск узлов диаграммы",
207
+ "viewer.finder.results": "Узлы диаграммы",
208
+ "viewer.finder.empty": "Совпадений не найдено",
209
+ "viewer.finder.result.focus": "Фокус: {label}",
210
+ "viewer.finder.result.routeStart": "Выбрать {label} как начало маршрута",
211
+ "viewer.finder.result.routeTarget": "Выбрать {label} как конец маршрута, {links}",
212
+ "viewer.finder.status.empty": "Совпадений не найдено",
213
+ "viewer.finder.status.count.one": "{count} совпадающий узел",
214
+ "viewer.finder.status.count.other": "{count} совпадающих узлов",
215
+ "viewer.finder.noun.nodes": "узлов",
216
+ "viewer.finder.link.one": "{count} связь",
217
+ "viewer.finder.link.other": "{count} связей",
218
+ "viewer.finder.result.focus.one": "Фокус: {label}, {count} связанное соединение",
219
+ "viewer.finder.result.focus.other": "Фокус: {label}, {count} связанных соединений",
220
+ "viewer.finder.status.filtered": "{visible} из {available} {noun}",
221
+ "viewer.finder.status.all": "{available} {noun}",
222
+ "viewer.passport.eyebrow": "Семантический паспорт",
223
+ "viewer.passport.metadata": "Метаданные узла",
224
+ "viewer.passport.evidence": "Проверенные источники",
225
+ "viewer.passport.verified": "Проверенный источник",
226
+ "viewer.passport.verificationScope": "Проверено по локальному Git на фиксированной ревизии. Удалённый доступ не проверялся.",
227
+ "viewer.passport.reach": "Заданная достижимость",
228
+ "viewer.passport.reach.trace": "Отследить заданную достижимость",
229
+ "viewer.passport.upstream": "Восходящий",
230
+ "viewer.passport.downstream": "Нисходящий",
231
+ "viewer.passport.upstream.trace": "Отследить восходящую заданную достижимость",
232
+ "viewer.passport.downstream.trace": "Отследить нисходящую заданную достижимость",
233
+ "viewer.passport.close": "Закрыть семантический паспорт",
234
+ "viewer.passport.copy": "Скопировать ссылку",
235
+ "viewer.passport.copy.focus": "Скопировать ссылку на выделенный узел",
236
+ "viewer.passport.relations": "Связи",
237
+ "viewer.passport.relations.show": "Показать связанные отношения",
238
+ "viewer.passport.relations.hide": "Скрыть связанные отношения",
239
+ "viewer.passport.relations.list": "Связанные отношения",
240
+ "viewer.passport.copyRelation": "Копировать связь",
241
+ "viewer.passport.copyNode": "Копировать узел",
242
+ "viewer.passport.copyPinned": "Скопировать ссылку на закреплённую связь",
243
+ "viewer.passport.copySource": "Скопировать ссылку на исходный узел",
244
+ "viewer.passport.copy.focused.success": "Ссылка на выделенный узел скопирована",
245
+ "viewer.passport.copy.pinned.success": "Ссылка на закреплённую связь скопирована",
246
+ "viewer.passport.copy.focused.failed": "Не удалось скопировать ссылку на выделенный узел",
247
+ "viewer.passport.copy.pinned.failed": "Не удалось скопировать ссылку на закреплённую связь",
248
+ "viewer.passport.relationship.none": "Нет связанных отношений",
249
+ "viewer.passport.relationship.count.one": "{count} связь",
250
+ "viewer.passport.relationship.count.other": "{count} связей",
251
+ "viewer.passport.relationship.show.one": "Показать {count} связанное отношение",
252
+ "viewer.passport.relationship.show.other": "Показать {count} связанных отношений",
253
+ "viewer.passport.relationship.summary": "{out} исходящих · {in} входящих{loops}",
254
+ "viewer.passport.relationship.loops": " · {count} петля",
255
+ "viewer.passport.relationship.explorer": "Обзор прямых связей",
256
+ "viewer.passport.relationship.help": "Используйте стрелки для просмотра связей. Enter или пробел — закрепить детали; Escape — очистить.",
257
+ "viewer.passport.relationship.loopsBack": "замыкается",
258
+ "viewer.passport.relationship.connectsTo": "соединяется с",
259
+ "viewer.passport.relationship.connectsFrom": "соединяется от",
260
+ "viewer.passport.relationship.pinned": "Закреплённая связь · {from} → {to} · {label}",
261
+ "viewer.passport.relationship.inspect": "Просмотр связи {index} из {total}: {from} → {to}, {label}. Enter — подробности.",
262
+ "viewer.passport.relationship.group.out": "Исходящие",
263
+ "viewer.passport.relationship.group.in": "Входящие",
264
+ "viewer.passport.relationship.group.loop": "Петли",
265
+ "viewer.passport.relationship.row": "{group}: {relationship}, {neighbor}",
266
+ "viewer.passport.relationship.direction.out": "ИСХ →",
267
+ "viewer.passport.relationship.direction.in": "← ВХ",
268
+ "viewer.passport.relationship.direction.loop": "ПЕТЛЯ",
269
+ "viewer.passport.sourceCount.one": "{count} проверенная ссылка на источник",
270
+ "viewer.passport.sourceCount.other": "{count} проверенных ссылок на источники",
271
+ "viewer.passport.repository.open": "Открыть проверенную ревизию репозитория {revision}",
272
+ "viewer.passport.source.open": "Открыть проверенный источник {path} на ревизии {revision}",
273
+ "viewer.passport.source.openLink": "Открыть ↗",
274
+ "viewer.passport.reach.upstream.one": "Отследить {count} восходящий заданный узел",
275
+ "viewer.passport.reach.upstream.other": "Отследить {count} восходящих заданных узлов",
276
+ "viewer.passport.reach.downstream.one": "Отследить {count} нисходящий заданный узел",
277
+ "viewer.passport.reach.downstream.other": "Отследить {count} нисходящих заданных узлов",
278
+ "viewer.passport.reach.noUpstream": "Нет восходящих заданных узлов",
279
+ "viewer.passport.reach.noDownstream": "Нет нисходящих заданных узлов",
280
+ "viewer.passport.reach.status": "{direction} · узлов: {nodes} · связей: {links} · макс. переходов: {hops}",
281
+ "viewer.route.eyebrow": "Зонд маршрута",
282
+ "viewer.route.start": "Выбрать начальный узел",
283
+ "viewer.route.start.find": "Найти начало",
284
+ "viewer.route.start.find.aria": "Найти начало маршрута",
285
+ "viewer.route.copy": "Скопировать ссылку",
286
+ "viewer.route.copy.aria": "Скопировать ссылку на построенный маршрут",
287
+ "viewer.route.clear": "Очистить",
288
+ "viewer.route.clear.aria": "Очистить зонд маршрута",
289
+ "viewer.route.traced": "Построенный маршрут",
290
+ "viewer.route.pickTwo": "Выберите два семантических узла на диаграмме",
291
+ "viewer.route.pickOne": "Выберите семантический узел на диаграмме",
292
+ "viewer.route.controls": "Управление воспроизведением маршрута",
293
+ "viewer.route.previous": "Предыдущая позиция маршрута",
294
+ "viewer.route.play": "Воспроизвести маршрут",
295
+ "viewer.route.pause": "Приостановить маршрут",
296
+ "viewer.route.replay": "Повторить маршрут",
297
+ "viewer.route.next": "Следующая позиция маршрута",
298
+ "viewer.route.journey": "Путь",
299
+ "viewer.route.pause.label": "Пауза",
300
+ "viewer.route.replay.label": "Повтор",
301
+ "viewer.route.overview": "Обзор",
302
+ "viewer.route.overview.aria": "Показать полный обзор маршрута",
303
+ "viewer.route.instructions": "Сначала выберите источник, затем цель. Направление важно.",
304
+ "viewer.route.destination": "Выбрать цель от {label}",
305
+ "viewer.route.destination.find": "Найти цель",
306
+ "viewer.route.destination.find.aria": "Найти достижимую цель маршрута",
307
+ "viewer.route.differentDestination": "Выбрать другую цель",
308
+ "viewer.route.distinct": "Для маршрута нужны два разных семантических узла.",
309
+ "viewer.route.unreachable": "Нет направленного маршрута к {label}",
310
+ "viewer.route.unreachable.detail": "{target} недостижим из {source}. Выберите подсвеченную цель.",
311
+ "viewer.route.start.instructions": "Выберите источник. На следующем шаге будут показаны только направленно достижимые цели.",
312
+ "viewer.route.copy.success": "Ссылка на построенный маршрут скопирована",
313
+ "viewer.route.copy.failed": "Не удалось скопировать ссылку на маршрут",
314
+ "viewer.route.position": "Позиция маршрута {index} из {total}: {label}",
315
+ "viewer.route.step": "Шаг {index} из {total} · {phase} · {label}",
316
+ "viewer.route.motionRequired": "Автоматическое воспроизведение требует режима «Динамика»",
317
+ "viewer.route.trigger.clear": "Очистить построенный маршрут",
318
+ "viewer.route.overview.status": "{nodes} · {hops} · кратчайший заданный маршрут",
319
+ "viewer.route.overview.node.one": "{count} узел",
320
+ "viewer.route.overview.node.other": "{count} узлов",
321
+ "viewer.route.overview.hop.one": "{count} направленный переход",
322
+ "viewer.route.overview.hop.other": "{count} направленных переходов",
323
+ "viewer.route.phase.playing": "Воспроизведение",
324
+ "viewer.route.phase.complete": "Завершено",
325
+ "viewer.route.phase.inspecting": "Просмотр",
326
+ "viewer.route.destination.count.one": "Доступна {count} направленная цель. Выберите подсвеченный узел.",
327
+ "viewer.route.destination.count.other": "Доступно {count} направленных целей. Выберите подсвеченный узел.",
328
+ "viewer.route.noOutgoing": "Отсюда не начинается ни один исходящий маршрут. Очистите и выберите другой источник.",
329
+ "viewer.route.result.title": "{source} → {target}",
330
+ "viewer.route.finder.source.title": "Выбрать начало маршрута",
331
+ "viewer.route.finder.source.placeholder": "Поиск источников маршрута",
332
+ "viewer.route.finder.source.empty": "Совпадающих источников маршрута не найдено",
333
+ "viewer.route.finder.source.results": "Узлы, с которых можно начать маршрут",
334
+ "viewer.route.finder.source.noun": "источников маршрута",
335
+ "viewer.route.finder.source.badge": "начало",
336
+ "viewer.route.finder.target.title": "Цель от {label}",
337
+ "viewer.route.finder.target.placeholder": "Поиск достижимых целей",
338
+ "viewer.route.finder.target.empty": "Совпадающих достижимых целей не найдено",
339
+ "viewer.route.finder.target.results": "Достижимые цели маршрута",
340
+ "viewer.route.finder.target.noun": "достижимых целей",
341
+ "viewer.route.hop.one": "{count} переход",
342
+ "viewer.route.hop.other": "{count} переходов",
343
+ "viewer.lens.eyebrow": "Семантическая линза",
344
+ "viewer.lens.title": "Сравнить роли системы",
345
+ "viewer.lens.close": "Закрыть семантическую линзу",
346
+ "viewer.lens.instruction": "Выберите до двух семантических типов. Один тип показывает реальные связи; два — сравнивают только прямые заданные связи.",
347
+ "viewer.lens.kinds": "Семантические типы",
348
+ "viewer.lens.choose": "Выберите тип, чтобы просмотреть его узлы и смежные связи.",
349
+ "viewer.lens.copy": "Скопировать ссылку на семантическую линзу",
350
+ "viewer.lens.clear": "Очистить семантическую линзу",
351
+ "viewer.lens.open": "Открыть семантическую линзу",
352
+ "viewer.lens.openActive": "Открыть активную семантическую линзу",
353
+ "viewer.lens.legend": "Семантическая легенда",
354
+ "viewer.lens.legend.inspect.one": "Просмотр {label}, {count} узел",
355
+ "viewer.lens.legend.inspect.other": "Просмотр {label}, {count} узлов",
356
+ "viewer.lens.kind.count.one": "{label}, {count} узел",
357
+ "viewer.lens.kind.count.other": "{label}, {count} узлов",
358
+ "viewer.lens.compare.one": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} прямая связь",
359
+ "viewer.lens.compare.other": "{first} → {second}: {forward} · {second} → {first}: {reverse} · {count} прямых связей",
360
+ "viewer.lens.single": "{nodes} · {relationships} · связанные узлы остаются видимыми",
361
+ "viewer.lens.node.one": "{count} узел типа {label}",
362
+ "viewer.lens.node.other": "{count} узлов типа {label}",
363
+ "viewer.lens.relationship.one": "{count} смежная связь",
364
+ "viewer.lens.relationship.other": "{count} смежных связей",
365
+ "viewer.radar.title": "Семантический радар",
366
+ "viewer.radar.building": "Построение обзора",
367
+ "viewer.radar.openFull": "Открыть полный семантический радар",
368
+ "viewer.radar.open": "Открыть радар",
369
+ "viewer.radar.close": "Закрыть семантический радар",
370
+ "viewer.radar.surface": "Обзор диаграммы. Щёлкните узел, чтобы выделить его, или используйте стрелки для панорамирования.",
371
+ "viewer.radar.click": "Щёлкнуть узел",
372
+ "viewer.radar.drag": "Перетащите для панорамирования",
373
+ "viewer.radar.space": "Семантическому радару нужно больше места на карте.",
374
+ "viewer.radar.nodes": "Узлы семантического радара диаграммы",
375
+ "viewer.radar.focus": "Фокус: {label} (из семантического радара)",
376
+ "viewer.radar.status": "Узлов: {count} · {viewport}",
377
+ "viewer.radar.fullMap": "Узлов: {count} · полная карта",
378
+ "viewer.radar.compacted": "Радар уменьшен, чтобы не перекрывать семантический паспорт или элементы управления картой.",
379
+ "viewer.radar.cancelWaiting": "Отменить ожидание семантическим радаром дополнительного места",
380
+ "viewer.radar.needsSpace": "Семантическому радару нужно больше видимого места на карте",
381
+ "viewer.radar.viewport.full": "полная карта",
382
+ "viewer.radar.viewport.width": "ширина {percent}%",
383
+ "viewer.radar.viewport.scale": "масштаб {percent}%",
384
+ "viewer.nav.controls": "Управление видом диаграммы",
385
+ "viewer.nav.route": "Построить направленный маршрут",
386
+ "viewer.nav.route.title": "Построить маршрут (R)",
387
+ "viewer.nav.route.short": "ПУТЬ",
388
+ "viewer.nav.radar": "Открыть семантический радар",
389
+ "viewer.nav.radar.title": "Семантический радар (M)",
390
+ "viewer.nav.radar.short": "КАРТА",
391
+ "viewer.nav.lens": "Открыть семантическую линзу",
392
+ "viewer.nav.lens.title": "Семантическая линза (L)",
393
+ "viewer.nav.lens.short": "ЛИНЗА",
394
+ "viewer.nav.find": "Найти узел",
395
+ "viewer.nav.find.title": "Найти узел (/)",
396
+ "viewer.nav.guide": "Открыть гид по диаграмме",
397
+ "viewer.nav.guide.title": "Гид по диаграмме (?)",
398
+ "viewer.nav.zoomOut": "Уменьшить",
399
+ "viewer.nav.zoomOut.title": "Уменьшить (-)",
400
+ "viewer.nav.reset": "Сбросить вид диаграммы",
401
+ "viewer.nav.reset.title": "Сбросить вид (0)",
402
+ "viewer.nav.read": "ЧТЕНИЕ",
403
+ "viewer.nav.zoomIn": "Увеличить",
404
+ "viewer.nav.zoomIn.title": "Увеличить (+)",
405
+ "viewer.nav.camera": "{hint}. Сбросить вид диаграммы",
406
+ "viewer.nav.camera.title": "{semantic}{hint} · сбросить вид (0)",
407
+ "viewer.nav.camera.semantic": "Семантическая камера активна · ",
408
+ "viewer.nav.level.map": "КАРТА",
409
+ "viewer.nav.level.read": "ЧТЕНИЕ",
410
+ "viewer.nav.level.full": "ПОЛНЫЙ",
411
+ "viewer.nav.level.auto": "АВТО",
412
+ "viewer.nav.detail.map": "Увеличьте, чтобы увидеть подписи связей и контекст узлов",
413
+ "viewer.nav.detail.read": "Увеличьте ещё, чтобы увидеть теги и аннотации",
414
+ "viewer.nav.detail.full": "Полная детализация диаграммы",
415
+ "viewer.intent.summary": "{label}. {out} исходящих, {in} входящих{loops}. Всего связей: {total}. Enter — подробности.",
416
+ "viewer.intent.loops": ", {count} петля",
417
+ "viewer.common.copied": "Скопировано",
418
+ "viewer.common.copyFailed": "Не удалось скопировать",
419
+ "viewer.common.copyLink": "Скопировать ссылку",
420
+ "viewer.common.clear": "Очистить",
421
+ "viewer.common.close": "Закрыть",
422
+ "diagram.description.tree": "Иерархическая диаграмма, созданная Archify.",
423
+ "node.context.tree.root": "Корень",
424
+ "node.context.tree.branch": "Ветвь",
425
+ "node.context.tree.leaf": "Лист",
426
+ "tree.toggle.collapse": "Свернуть {label} (потомков: {count})",
427
+ "tree.toggle.expand": "Развернуть {label} (скрыто: {count})",
428
+ "tree.expandAll": "Развернуть всё",
429
+ "diagram.description.class": "Диаграмма классов и интерфейсов, созданная Archify.",
430
+ "node.context.class.class": "Класс",
431
+ "node.context.class.abstract": "Абстрактный класс",
432
+ "node.context.class.interface": "Интерфейс",
433
+ "node.context.class.enum": "Перечисление",
434
+ "node.context.class.record": "Запись",
435
+ "legend.class.dependency": "Зависит от",
436
+ "legend.class.association": "Ассоциация",
437
+ "legend.class.inheritance": "Наследует",
438
+ "legend.class.realization": "Реализует",
439
+ "legend.class.composition": "Композиция",
440
+ "legend.class.aggregation": "Агрегация",
441
+ "diagram.description.timeline": "Временная шкала событий, созданная Archify.",
442
+ "timeline.axis": "Время",
443
+ "timeline.break": "Разрыв оси: пропущен период без событий длительностью {duration}",
444
+ "timeline.compressed": "Сжато периодов без событий: {count} (≈)",
445
+ "timeline.evidence.observed": "Наблюдаемые события",
446
+ "timeline.evidence.illustrative": "Иллюстративные данные",
447
+ "legend.timeline.default": "Событие",
448
+ "legend.timeline.change": "Изменение",
449
+ "legend.timeline.alert": "Предупреждение",
450
+ "legend.timeline.action": "Реагирование",
451
+ "legend.timeline.recovery": "Восстановление",
452
+ "diagram.description.waterfall": "Каскадная диаграмма выполнения, созданная Archify.",
453
+ "waterfall.evidence.measured": "Измеренное время",
454
+ "waterfall.evidence.illustrative": "Иллюстративное время",
455
+ "waterfall.wall": "Полное время {duration}",
456
+ "waterfall.share": "{percent} от полного времени {total}",
457
+ "waterfall.incomplete": "не завершено, ≥ {duration}",
458
+ "waterfall.operation": "Операция",
459
+ "legend.waterfall.ok": "Завершено",
460
+ "legend.waterfall.error": "Ошибка",
461
+ "legend.waterfall.cancelled": "Отменено",
462
+ "legend.waterfall.incomplete": "Не завершено (конец не записан)"
463
+ }