Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/carstenartur_taxonomy.json
T

1 line
4.0 MiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "carstenartur/taxonomy", "files": {"taxonomy-app/src/main/resources/i18n/messages.properties": {"deddbc3527772934cd5a91ae42d4b435ebd9d8b8": {"t": 1785745399.5587907, "n": 74644, "h": "ce44a43e943fe007", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DECISION_PIPELINE=Decision Pipeline\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.section.diagram=\\uD83D\\uDCCA Diagram Configuration\npreferences.diagram.policy=Diagram Selection Policy\npreferences.diagram.policy.impact=Impact (Default)\npreferences.diagram.policy.leafonly=Leaf Only (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (Full Hierarchy)\npreferences.diagram.policy.help=Controls which nodes and edges appear in architecture diagrams.\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 12 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.limited=\\uD83D\\uDFE1 AI: LIMITED ({0})\nbrowse.ai.badge.limited.title=AI is limited \\u2014 local embedding only ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Conformity\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n\n# ── Mermaid diagram labels (i18n) ─────────────────────────\nmermaid.layer.capabilities=Capabilities\nmermaid.layer.business.processes=Business Processes\nmermaid.layer.business.roles=Business Roles\nmermaid.layer.services=Services\nmermaid.layer.coi.services=COI Services\nmermaid.layer.core.services=Core Services\nmermaid.layer.applications=Applications\nmermaid.layer.user.applications=User Applications\nmermaid.layer.information.products=Information Products\nmermaid.layer.communications.services=Communications Services\nmermaid.relation.realizes=realizes\nmermaid.relation.supports=supports\nmermaid.relation.uses=uses\nmermaid.relation.fulfills=fulfills\nmermaid.relation.depends.on=depends on\nmermaid.relation.produces=produces\nmermaid.relation.consumes=consumes\nmermaid.relation.assigned.to=assigned to\nmermaid.relation.related.to=related to\nmermaid.relation.communicates.with=communicates with\nmermaid.marker.anchor=★\nmermaid.marker.hotspot=⚠\nmermaid.showcase.layer.capabilities=🔵 Capabilities\nmermaid.showcase.layer.business.processes=🟢 Processes\nmermaid.showcase.layer.business.roles=🟢 Roles\nmermaid.showcase.layer.services=🟠 Services\nmermaid.showcase.layer.coi.services=🟠 COI Services\nmermaid.showcase.layer.core.services=🟠 Core Services\nmermaid.showcase.layer.applications=🟣 Applications\nmermaid.showcase.layer.user.applications=🟣 Applications\nmermaid.showcase.layer.information.products=🔷 Info Products\nmermaid.showcase.layer.communications.services=🔴 Communications\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Impact Relationships\narchview.impact.relations.count={0}\narchview.trace.relations.title=Trace Relationships\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed Context Relationships\narchview.impact.col.source=Source\narchview.impact.col.target=Target\narchview.impact.col.type=Type\narchview.impact.col.relevance=Relevance\narchview.impact.col.derived=Derived From\narchview.trace.col.source=Source\narchview.trace.col.target=Target\narchview.trace.col.type=Type\narchview.trace.col.relevance=Relevance\narchview.trace.col.hops=Hops\narchview.trace.col.reason=Reason\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direct LLM Match\nnode.origin.trace.intermediate=Scoring Trace (Intermediate)\nnode.origin.propagated=Propagated via Relation\nnode.origin.seed.context=Seed Relation Context\nnode.origin.enriched.leaf=Enriched Leaf Node\nnode.origin.impact.promoted=Impact Promoted\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomy Seed\nrelation.origin.propagated.trace=Propagated Trace\nrelation.origin.impact.derived=Impact Derived\nrelation.origin.suggested.candidate=Suggested Candidate\nrelation.origin.llm.supported=LLM Supported\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Origin\narchview.col.depth=Depth\narchview.col.specificity=Specificity\narchview.col.scoring.path=Scoring Path\narchview.col.llm.score=LLM Score\narchview.col.impact=Impact\narchview.col.confidence=Confidence\narchview.col.derivation=Derivation\n\n# ── View metadata (generated from diagram policy) ──\narchview.view.legend=Active rules: {0}\narchview.view.containment.hint=Containment: single-child intermediates collapsed, multi-child as clusters\n\n# ── Policy titles and descriptions (i18n keys emitted by DiagramViewMetadata) ──\narchview.policy.title.defaultImpact=Architecture Impact View\narchview.policy.title.leafOnly=Leaf-Only Showcase View\narchview.policy.title.clustering=Clustered Impact View\narchview.policy.title.trace=Scoring Trace\narchview.policy.desc.defaultImpact=Relevant nodes with score-based filtering; roots and scaffolding suppressed, intermediates clustered.\narchview.policy.desc.leafOnly=Shows only the deepest leaf nodes; intermediate parents are suppressed and edges re-routed.\narchview.policy.desc.clustering=Intermediate nodes become visual containers grouping their children; single-child intermediates are collapsed.\narchview.policy.desc.trace=Full hierarchy preserved for traceability \\u2014 nothing is suppressed.\n\n# ── Active rule labels ──\narchview.rule.suppress.roots=Root nodes suppressed\narchview.rule.suppress.scaffolding=Scaffolding nodes suppressed\narchview.rule.collapse.single.child=Single-child intermediates collapsed\narchview.rule.cluster.multi.child=Multi-child intermediates as clusters\narchview.rule.leaf.only=Leaf-only mode\narchview.rule.min.relevance=Min relevance filter active\n\n# ── Summary bar KPIs ──\narchview.kpi.direct.matches=direct matches\narchview.kpi.affected.elements=affected elements\narchview.kpi.relations=relations\narchview.kpi.layers=layers\n\n# ── Section headings ──\narchview.section.impact=Architecture Impact\narchview.section.trace=Scoring Trace\narchview.section.elements=Elements\narchview.section.relations=Relations\narchview.impact.elements.title=Impact Elements\narchview.trace.elements.title=Trace Elements\n"}, "d762563ae43ef9b68be65f3524145410d813ce8e": {"t": 1785752692.627004, "n": 74644, "h": "ce44a43e943fe007", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DECISION_PIPELINE=Decision Pipeline\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.section.diagram=\\uD83D\\uDCCA Diagram Configuration\npreferences.diagram.policy=Diagram Selection Policy\npreferences.diagram.policy.impact=Impact (Default)\npreferences.diagram.policy.leafonly=Leaf Only (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (Full Hierarchy)\npreferences.diagram.policy.help=Controls which nodes and edges appear in architecture diagrams.\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 12 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.limited=\\uD83D\\uDFE1 AI: LIMITED ({0})\nbrowse.ai.badge.limited.title=AI is limited \\u2014 local embedding only ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Conformity\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n\n# ── Mermaid diagram labels (i18n) ─────────────────────────\nmermaid.layer.capabilities=Capabilities\nmermaid.layer.business.processes=Business Processes\nmermaid.layer.business.roles=Business Roles\nmermaid.layer.services=Services\nmermaid.layer.coi.services=COI Services\nmermaid.layer.core.services=Core Services\nmermaid.layer.applications=Applications\nmermaid.layer.user.applications=User Applications\nmermaid.layer.information.products=Information Products\nmermaid.layer.communications.services=Communications Services\nmermaid.relation.realizes=realizes\nmermaid.relation.supports=supports\nmermaid.relation.uses=uses\nmermaid.relation.fulfills=fulfills\nmermaid.relation.depends.on=depends on\nmermaid.relation.produces=produces\nmermaid.relation.consumes=consumes\nmermaid.relation.assigned.to=assigned to\nmermaid.relation.related.to=related to\nmermaid.relation.communicates.with=communicates with\nmermaid.marker.anchor=★\nmermaid.marker.hotspot=⚠\nmermaid.showcase.layer.capabilities=🔵 Capabilities\nmermaid.showcase.layer.business.processes=🟢 Processes\nmermaid.showcase.layer.business.roles=🟢 Roles\nmermaid.showcase.layer.services=🟠 Services\nmermaid.showcase.layer.coi.services=🟠 COI Services\nmermaid.showcase.layer.core.services=🟠 Core Services\nmermaid.showcase.layer.applications=🟣 Applications\nmermaid.showcase.layer.user.applications=🟣 Applications\nmermaid.showcase.layer.information.products=🔷 Info Products\nmermaid.showcase.layer.communications.services=🔴 Communications\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Impact Relationships\narchview.impact.relations.count={0}\narchview.trace.relations.title=Trace Relationships\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed Context Relationships\narchview.impact.col.source=Source\narchview.impact.col.target=Target\narchview.impact.col.type=Type\narchview.impact.col.relevance=Relevance\narchview.impact.col.derived=Derived From\narchview.trace.col.source=Source\narchview.trace.col.target=Target\narchview.trace.col.type=Type\narchview.trace.col.relevance=Relevance\narchview.trace.col.hops=Hops\narchview.trace.col.reason=Reason\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direct LLM Match\nnode.origin.trace.intermediate=Scoring Trace (Intermediate)\nnode.origin.propagated=Propagated via Relation\nnode.origin.seed.context=Seed Relation Context\nnode.origin.enriched.leaf=Enriched Leaf Node\nnode.origin.impact.promoted=Impact Promoted\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomy Seed\nrelation.origin.propagated.trace=Propagated Trace\nrelation.origin.impact.derived=Impact Derived\nrelation.origin.suggested.candidate=Suggested Candidate\nrelation.origin.llm.supported=LLM Supported\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Origin\narchview.col.depth=Depth\narchview.col.specificity=Specificity\narchview.col.scoring.path=Scoring Path\narchview.col.llm.score=LLM Score\narchview.col.impact=Impact\narchview.col.confidence=Confidence\narchview.col.derivation=Derivation\n\n# ── View metadata (generated from diagram policy) ──\narchview.view.legend=Active rules: {0}\narchview.view.containment.hint=Containment: single-child intermediates collapsed, multi-child as clusters\n\n# ── Policy titles and descriptions (i18n keys emitted by DiagramViewMetadata) ──\narchview.policy.title.defaultImpact=Architecture Impact View\narchview.policy.title.leafOnly=Leaf-Only Showcase View\narchview.policy.title.clustering=Clustered Impact View\narchview.policy.title.trace=Scoring Trace\narchview.policy.desc.defaultImpact=Relevant nodes with score-based filtering; roots and scaffolding suppressed, intermediates clustered.\narchview.policy.desc.leafOnly=Shows only the deepest leaf nodes; intermediate parents are suppressed and edges re-routed.\narchview.policy.desc.clustering=Intermediate nodes become visual containers grouping their children; single-child intermediates are collapsed.\narchview.policy.desc.trace=Full hierarchy preserved for traceability \\u2014 nothing is suppressed.\n\n# ── Active rule labels ──\narchview.rule.suppress.roots=Root nodes suppressed\narchview.rule.suppress.scaffolding=Scaffolding nodes suppressed\narchview.rule.collapse.single.child=Single-child intermediates collapsed\narchview.rule.cluster.multi.child=Multi-child intermediates as clusters\narchview.rule.leaf.only=Leaf-only mode\narchview.rule.min.relevance=Min relevance filter active\n\n# ── Summary bar KPIs ──\narchview.kpi.direct.matches=direct matches\narchview.kpi.affected.elements=affected elements\narchview.kpi.relations=relations\narchview.kpi.layers=layers\n\n# ── Section headings ──\narchview.section.impact=Architecture Impact\narchview.section.trace=Scoring Trace\narchview.section.elements=Elements\narchview.section.relations=Relations\narchview.impact.elements.title=Impact Elements\narchview.trace.elements.title=Trace Elements\n"}, "c762d317f69736f685e93dc3f3c49694bf88d21e": {"t": 1785752694.4421568, "n": 74643, "h": "105daa16dfcf0abe", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DECISION_PIPELINE=Decision Pipeline\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.section.diagram=\\uD83D\\uDCCA Diagram Configuration\npreferences.diagram.policy=Diagram Selection Policy\npreferences.diagram.policy.impact=Impact (Default)\npreferences.diagram.policy.leafonly=Leaf Only (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (Full Hierarchy)\npreferences.diagram.policy.help=Controls which nodes and edges appear in architecture diagrams.\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.limited=\\uD83D\\uDFE1 AI: LIMITED ({0})\nbrowse.ai.badge.limited.title=AI is limited \\u2014 local embedding only ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Conformity\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n\n# ── Mermaid diagram labels (i18n) ─────────────────────────\nmermaid.layer.capabilities=Capabilities\nmermaid.layer.business.processes=Business Processes\nmermaid.layer.business.roles=Business Roles\nmermaid.layer.services=Services\nmermaid.layer.coi.services=COI Services\nmermaid.layer.core.services=Core Services\nmermaid.layer.applications=Applications\nmermaid.layer.user.applications=User Applications\nmermaid.layer.information.products=Information Products\nmermaid.layer.communications.services=Communications Services\nmermaid.relation.realizes=realizes\nmermaid.relation.supports=supports\nmermaid.relation.uses=uses\nmermaid.relation.fulfills=fulfills\nmermaid.relation.depends.on=depends on\nmermaid.relation.produces=produces\nmermaid.relation.consumes=consumes\nmermaid.relation.assigned.to=assigned to\nmermaid.relation.related.to=related to\nmermaid.relation.communicates.with=communicates with\nmermaid.marker.anchor=★\nmermaid.marker.hotspot=⚠\nmermaid.showcase.layer.capabilities=🔵 Capabilities\nmermaid.showcase.layer.business.processes=🟢 Processes\nmermaid.showcase.layer.business.roles=🟢 Roles\nmermaid.showcase.layer.services=🟠 Services\nmermaid.showcase.layer.coi.services=🟠 COI Services\nmermaid.showcase.layer.core.services=🟠 Core Services\nmermaid.showcase.layer.applications=🟣 Applications\nmermaid.showcase.layer.user.applications=🟣 Applications\nmermaid.showcase.layer.information.products=🔷 Info Products\nmermaid.showcase.layer.communications.services=🔴 Communications\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Impact Relationships\narchview.impact.relations.count={0}\narchview.trace.relations.title=Trace Relationships\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed Context Relationships\narchview.impact.col.source=Source\narchview.impact.col.target=Target\narchview.impact.col.type=Type\narchview.impact.col.relevance=Relevance\narchview.impact.col.derived=Derived From\narchview.trace.col.source=Source\narchview.trace.col.target=Target\narchview.trace.col.type=Type\narchview.trace.col.relevance=Relevance\narchview.trace.col.hops=Hops\narchview.trace.col.reason=Reason\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direct LLM Match\nnode.origin.trace.intermediate=Scoring Trace (Intermediate)\nnode.origin.propagated=Propagated via Relation\nnode.origin.seed.context=Seed Relation Context\nnode.origin.enriched.leaf=Enriched Leaf Node\nnode.origin.impact.promoted=Impact Promoted\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomy Seed\nrelation.origin.propagated.trace=Propagated Trace\nrelation.origin.impact.derived=Impact Derived\nrelation.origin.suggested.candidate=Suggested Candidate\nrelation.origin.llm.supported=LLM Supported\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Origin\narchview.col.depth=Depth\narchview.col.specificity=Specificity\narchview.col.scoring.path=Scoring Path\narchview.col.llm.score=LLM Score\narchview.col.impact=Impact\narchview.col.confidence=Confidence\narchview.col.derivation=Derivation\n\n# ── View metadata (generated from diagram policy) ──\narchview.view.legend=Active rules: {0}\narchview.view.containment.hint=Containment: single-child intermediates collapsed, multi-child as clusters\n\n# ── Policy titles and descriptions (i18n keys emitted by DiagramViewMetadata) ──\narchview.policy.title.defaultImpact=Architecture Impact View\narchview.policy.title.leafOnly=Leaf-Only Showcase View\narchview.policy.title.clustering=Clustered Impact View\narchview.policy.title.trace=Scoring Trace\narchview.policy.desc.defaultImpact=Relevant nodes with score-based filtering; roots and scaffolding suppressed, intermediates clustered.\narchview.policy.desc.leafOnly=Shows only the deepest leaf nodes; intermediate parents are suppressed and edges re-routed.\narchview.policy.desc.clustering=Intermediate nodes become visual containers grouping their children; single-child intermediates are collapsed.\narchview.policy.desc.trace=Full hierarchy preserved for traceability \\u2014 nothing is suppressed.\n\n# ── Active rule labels ──\narchview.rule.suppress.roots=Root nodes suppressed\narchview.rule.suppress.scaffolding=Scaffolding nodes suppressed\narchview.rule.collapse.single.child=Single-child intermediates collapsed\narchview.rule.cluster.multi.child=Multi-child intermediates as clusters\narchview.rule.leaf.only=Leaf-only mode\narchview.rule.min.relevance=Min relevance filter active\n\n# ── Summary bar KPIs ──\narchview.kpi.direct.matches=direct matches\narchview.kpi.affected.elements=affected elements\narchview.kpi.relations=relations\narchview.kpi.layers=layers\n\n# ── Section headings ──\narchview.section.impact=Architecture Impact\narchview.section.trace=Scoring Trace\narchview.section.elements=Elements\narchview.section.relations=Relations\narchview.impact.elements.title=Impact Elements\narchview.trace.elements.title=Trace Elements\n"}, "421ee23a1bf845b5a620247a94cacf16c3b88a53": {"t": 1785752696.6723588, "n": 74643, "h": "234bb1dd91107599", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DECISION_PIPELINE=Decision Pipeline\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.section.diagram=\\uD83D\\uDCCA Diagram Configuration\npreferences.diagram.policy=Diagram Selection Policy\npreferences.diagram.policy.impact=Impact (Default)\npreferences.diagram.policy.leafonly=Leaf Only (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (Full Hierarchy)\npreferences.diagram.policy.help=Controls which nodes and edges appear in architecture diagrams.\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.limited=\\uD83D\\uDFE1 AI: LIMITED ({0})\nbrowse.ai.badge.limited.title=AI is limited \\u2014 local embedding only ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Conformity\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n\n# ── Mermaid diagram labels (i18n) ─────────────────────────\nmermaid.layer.capabilities=Capabilities\nmermaid.layer.business.processes=Business Processes\nmermaid.layer.business.roles=Business Roles\nmermaid.layer.services=Services\nmermaid.layer.coi.services=COI Services\nmermaid.layer.core.services=Core Services\nmermaid.layer.applications=Applications\nmermaid.layer.user.applications=User Applications\nmermaid.layer.information.products=Information Products\nmermaid.layer.communications.services=Communications Services\nmermaid.relation.realizes=realizes\nmermaid.relation.supports=supports\nmermaid.relation.uses=uses\nmermaid.relation.fulfills=fulfills\nmermaid.relation.depends.on=depends on\nmermaid.relation.produces=produces\nmermaid.relation.consumes=consumes\nmermaid.relation.assigned.to=assigned to\nmermaid.relation.related.to=related to\nmermaid.relation.communicates.with=communicates with\nmermaid.marker.anchor=★\nmermaid.marker.hotspot=⚠\nmermaid.showcase.layer.capabilities=🔵 Capabilities\nmermaid.showcase.layer.business.processes=🟢 Processes\nmermaid.showcase.layer.business.roles=🟢 Roles\nmermaid.showcase.layer.services=🟠 Services\nmermaid.showcase.layer.coi.services=🟠 COI Services\nmermaid.showcase.layer.core.services=🟠 Core Services\nmermaid.showcase.layer.applications=🟣 Applications\nmermaid.showcase.layer.user.applications=🟣 Applications\nmermaid.showcase.layer.information.products=🔷 Info Products\nmermaid.showcase.layer.communications.services=🔴 Communications\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Impact Relationships\narchview.impact.relations.count={0}\narchview.trace.relations.title=Trace Relationships\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed Context Relationships\narchview.impact.col.source=Source\narchview.impact.col.target=Target\narchview.impact.col.type=Type\narchview.impact.col.relevance=Relevance\narchview.impact.col.derived=Derived From\narchview.trace.col.source=Source\narchview.trace.col.target=Target\narchview.trace.col.type=Type\narchview.trace.col.relevance=Relevance\narchview.trace.col.hops=Hops\narchview.trace.col.reason=Reason\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direct LLM Match\nnode.origin.trace.intermediate=Scoring Trace (Intermediate)\nnode.origin.propagated=Propagated via Relation\nnode.origin.seed.context=Seed Relation Context\nnode.origin.enriched.leaf=Enriched Leaf Node\nnode.origin.impact.selected=Impact Selected\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomy Seed\nrelation.origin.propagated.trace=Propagated Trace\nrelation.origin.impact.derived=Impact Derived\nrelation.origin.suggested.candidate=Suggested Candidate\nrelation.origin.llm.supported=LLM Supported\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Origin\narchview.col.depth=Depth\narchview.col.specificity=Specificity\narchview.col.scoring.path=Scoring Path\narchview.col.llm.score=LLM Score\narchview.col.impact=Impact\narchview.col.confidence=Confidence\narchview.col.derivation=Derivation\n\n# ── View metadata (generated from diagram policy) ──\narchview.view.legend=Active rules: {0}\narchview.view.containment.hint=Containment: single-child intermediates collapsed, multi-child as clusters\n\n# ── Policy titles and descriptions (i18n keys emitted by DiagramViewMetadata) ──\narchview.policy.title.defaultImpact=Architecture Impact View\narchview.policy.title.leafOnly=Leaf-Only Showcase View\narchview.policy.title.clustering=Clustered Impact View\narchview.policy.title.trace=Scoring Trace\narchview.policy.desc.defaultImpact=Relevant nodes with score-based filtering; roots and scaffolding suppressed, intermediates clustered.\narchview.policy.desc.leafOnly=Shows only the deepest leaf nodes; intermediate parents are suppressed and edges re-routed.\narchview.policy.desc.clustering=Intermediate nodes become visual containers grouping their children; single-child intermediates are collapsed.\narchview.policy.desc.trace=Full hierarchy preserved for traceability \\u2014 nothing is suppressed.\n\n# ── Active rule labels ──\narchview.rule.suppress.roots=Root nodes suppressed\narchview.rule.suppress.scaffolding=Scaffolding nodes suppressed\narchview.rule.collapse.single.child=Single-child intermediates collapsed\narchview.rule.cluster.multi.child=Multi-child intermediates as clusters\narchview.rule.leaf.only=Leaf-only mode\narchview.rule.min.relevance=Min relevance filter active\n\n# ── Summary bar KPIs ──\narchview.kpi.direct.matches=direct matches\narchview.kpi.affected.elements=affected elements\narchview.kpi.relations=relations\narchview.kpi.layers=layers\n\n# ── Section headings ──\narchview.section.impact=Architecture Impact\narchview.section.trace=Scoring Trace\narchview.section.elements=Elements\narchview.section.relations=Relations\narchview.impact.elements.title=Impact Elements\narchview.trace.elements.title=Trace Elements\n"}, "a9a6cd3f38e1db37e4ffef0b417123ab31e68cef": {"t": 1785752698.5614877, "n": 72769, "h": "736f2d91c52a6c1c", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.section.diagram=\\uD83D\\uDCCA Diagram Configuration\npreferences.diagram.policy=Diagram Selection Policy\npreferences.diagram.policy.impact=Impact (Default)\npreferences.diagram.policy.leafonly=Leaf Only (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (Full Hierarchy)\npreferences.diagram.policy.help=Controls which nodes and edges appear in architecture diagrams.\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.limited=\\uD83D\\uDFE1 AI: LIMITED ({0})\nbrowse.ai.badge.limited.title=AI is limited \\u2014 local embedding only ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Conformity\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n\n# ── Mermaid diagram labels (i18n) ─────────────────────────\nmermaid.layer.capabilities=Capabilities\nmermaid.layer.business.processes=Business Processes\nmermaid.layer.business.roles=Business Roles\nmermaid.layer.services=Services\nmermaid.layer.coi.services=COI Services\nmermaid.layer.core.services=Core Services\nmermaid.layer.applications=Applications\nmermaid.layer.user.applications=User Applications\nmermaid.layer.information.products=Information Products\nmermaid.layer.communications.services=Communications Services\nmermaid.relation.realizes=realizes\nmermaid.relation.supports=supports\nmermaid.relation.uses=uses\nmermaid.relation.fulfills=fulfills\nmermaid.relation.depends.on=depends on\nmermaid.relation.produces=produces\nmermaid.relation.consumes=consumes\nmermaid.relation.assigned.to=assigned to\nmermaid.relation.related.to=related to\nmermaid.relation.communicates.with=communicates with\nmermaid.marker.anchor=★\nmermaid.marker.hotspot=⚠\nmermaid.showcase.layer.capabilities=🔵 Capabilities\nmermaid.showcase.layer.business.processes=🟢 Processes\nmermaid.showcase.layer.business.roles=🟢 Roles\nmermaid.showcase.layer.services=🟠 Services\nmermaid.showcase.layer.coi.services=🟠 COI Services\nmermaid.showcase.layer.core.services=🟠 Core Services\nmermaid.showcase.layer.applications=🟣 Applications\nmermaid.showcase.layer.user.applications=🟣 Applications\nmermaid.showcase.layer.information.products=🔷 Info Products\nmermaid.showcase.layer.communications.services=🔴 Communications\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Impact Relationships\narchview.impact.relations.count={0}\narchview.trace.relations.title=Trace Relationships\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed Context Relationships\narchview.impact.col.source=Source\narchview.impact.col.target=Target\narchview.impact.col.type=Type\narchview.impact.col.relevance=Relevance\narchview.impact.col.derived=Derived From\narchview.trace.col.source=Source\narchview.trace.col.target=Target\narchview.trace.col.type=Type\narchview.trace.col.relevance=Relevance\narchview.trace.col.hops=Hops\narchview.trace.col.reason=Reason\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direct LLM Match\nnode.origin.trace.intermediate=Scoring Trace (Intermediate)\nnode.origin.propagated=Propagated via Relation\nnode.origin.seed.context=Seed Relation Context\nnode.origin.enriched.leaf=Enriched Leaf Node\nnode.origin.impact.selected=Impact Selected\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomy Seed\nrelation.origin.propagated.trace=Propagated Trace\nrelation.origin.impact.derived=Impact Derived\nrelation.origin.suggested.candidate=Suggested Candidate\nrelation.origin.llm.supported=LLM Supported\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Origin\narchview.col.depth=Depth\narchview.col.specificity=Specificity\narchview.col.scoring.path=Scoring Path\narchview.col.llm.score=LLM Score\narchview.col.impact=Impact\narchview.col.confidence=Confidence\narchview.col.derivation=Derivation\n"}, "66ad2533da73f5b1540b53400a85f2311de3bbab": {"t": 1785752700.1917846, "n": 72636, "h": "94f83263de76887e", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.section.diagram=\\uD83D\\uDCCA Diagram Configuration\npreferences.diagram.policy=Diagram Selection Policy\npreferences.diagram.policy.impact=Impact (Default)\npreferences.diagram.policy.leafonly=Leaf Only (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (Full Hierarchy)\npreferences.diagram.policy.help=Controls which nodes and edges appear in architecture diagrams.\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Conformity\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n\n# ── Mermaid diagram labels (i18n) ─────────────────────────\nmermaid.layer.capabilities=Capabilities\nmermaid.layer.business.processes=Business Processes\nmermaid.layer.business.roles=Business Roles\nmermaid.layer.services=Services\nmermaid.layer.coi.services=COI Services\nmermaid.layer.core.services=Core Services\nmermaid.layer.applications=Applications\nmermaid.layer.user.applications=User Applications\nmermaid.layer.information.products=Information Products\nmermaid.layer.communications.services=Communications Services\nmermaid.relation.realizes=realizes\nmermaid.relation.supports=supports\nmermaid.relation.uses=uses\nmermaid.relation.fulfills=fulfills\nmermaid.relation.depends.on=depends on\nmermaid.relation.produces=produces\nmermaid.relation.consumes=consumes\nmermaid.relation.assigned.to=assigned to\nmermaid.relation.related.to=related to\nmermaid.relation.communicates.with=communicates with\nmermaid.marker.anchor=★\nmermaid.marker.hotspot=⚠\nmermaid.showcase.layer.capabilities=🔵 Capabilities\nmermaid.showcase.layer.business.processes=🟢 Processes\nmermaid.showcase.layer.business.roles=🟢 Roles\nmermaid.showcase.layer.services=🟠 Services\nmermaid.showcase.layer.coi.services=🟠 COI Services\nmermaid.showcase.layer.core.services=🟠 Core Services\nmermaid.showcase.layer.applications=🟣 Applications\nmermaid.showcase.layer.user.applications=🟣 Applications\nmermaid.showcase.layer.information.products=🔷 Info Products\nmermaid.showcase.layer.communications.services=🔴 Communications\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Impact Relationships\narchview.impact.relations.count={0}\narchview.trace.relations.title=Trace Relationships\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed Context Relationships\narchview.impact.col.source=Source\narchview.impact.col.target=Target\narchview.impact.col.type=Type\narchview.impact.col.relevance=Relevance\narchview.impact.col.derived=Derived From\narchview.trace.col.source=Source\narchview.trace.col.target=Target\narchview.trace.col.type=Type\narchview.trace.col.relevance=Relevance\narchview.trace.col.hops=Hops\narchview.trace.col.reason=Reason\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direct LLM Match\nnode.origin.trace.intermediate=Scoring Trace (Intermediate)\nnode.origin.propagated=Propagated via Relation\nnode.origin.seed.context=Seed Relation Context\nnode.origin.enriched.leaf=Enriched Leaf Node\nnode.origin.impact.selected=Impact Selected\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomy Seed\nrelation.origin.propagated.trace=Propagated Trace\nrelation.origin.impact.derived=Impact Derived\nrelation.origin.suggested.candidate=Suggested Candidate\nrelation.origin.llm.supported=LLM Supported\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Origin\narchview.col.depth=Depth\narchview.col.specificity=Specificity\narchview.col.scoring.path=Scoring Path\narchview.col.llm.score=LLM Score\narchview.col.impact=Impact\narchview.col.confidence=Confidence\narchview.col.derivation=Derivation\n"}, "08b2399b1444f55e7253b4b48d57146c52dd3c8f": {"t": 1785752702.3864903, "n": 72212, "h": "ba3a2ab93f6f99dd", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Conformity\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n\n# ── Mermaid diagram labels (i18n) ─────────────────────────\nmermaid.layer.capabilities=Capabilities\nmermaid.layer.business.processes=Business Processes\nmermaid.layer.business.roles=Business Roles\nmermaid.layer.services=Services\nmermaid.layer.coi.services=COI Services\nmermaid.layer.core.services=Core Services\nmermaid.layer.applications=Applications\nmermaid.layer.user.applications=User Applications\nmermaid.layer.information.products=Information Products\nmermaid.layer.communications.services=Communications Services\nmermaid.relation.realizes=realizes\nmermaid.relation.supports=supports\nmermaid.relation.uses=uses\nmermaid.relation.fulfills=fulfills\nmermaid.relation.depends.on=depends on\nmermaid.relation.produces=produces\nmermaid.relation.consumes=consumes\nmermaid.relation.assigned.to=assigned to\nmermaid.relation.related.to=related to\nmermaid.relation.communicates.with=communicates with\nmermaid.marker.anchor=★\nmermaid.marker.hotspot=⚠\nmermaid.showcase.layer.capabilities=🔵 Capabilities\nmermaid.showcase.layer.business.processes=🟢 Processes\nmermaid.showcase.layer.business.roles=🟢 Roles\nmermaid.showcase.layer.services=🟠 Services\nmermaid.showcase.layer.coi.services=🟠 COI Services\nmermaid.showcase.layer.core.services=🟠 Core Services\nmermaid.showcase.layer.applications=🟣 Applications\nmermaid.showcase.layer.user.applications=🟣 Applications\nmermaid.showcase.layer.information.products=🔷 Info Products\nmermaid.showcase.layer.communications.services=🔴 Communications\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Impact Relationships\narchview.impact.relations.count={0}\narchview.trace.relations.title=Trace Relationships\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed Context Relationships\narchview.impact.col.source=Source\narchview.impact.col.target=Target\narchview.impact.col.type=Type\narchview.impact.col.relevance=Relevance\narchview.impact.col.derived=Derived From\narchview.trace.col.source=Source\narchview.trace.col.target=Target\narchview.trace.col.type=Type\narchview.trace.col.relevance=Relevance\narchview.trace.col.hops=Hops\narchview.trace.col.reason=Reason\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direct LLM Match\nnode.origin.trace.intermediate=Scoring Trace (Intermediate)\nnode.origin.propagated=Propagated via Relation\nnode.origin.seed.context=Seed Relation Context\nnode.origin.enriched.leaf=Enriched Leaf Node\nnode.origin.impact.selected=Impact Selected\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomy Seed\nrelation.origin.propagated.trace=Propagated Trace\nrelation.origin.impact.derived=Impact Derived\nrelation.origin.suggested.candidate=Suggested Candidate\nrelation.origin.llm.supported=LLM Supported\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Origin\narchview.col.depth=Depth\narchview.col.specificity=Specificity\narchview.col.scoring.path=Scoring Path\narchview.col.llm.score=LLM Score\narchview.col.impact=Impact\narchview.col.confidence=Confidence\narchview.col.derivation=Derivation\n"}, "b8469c0d791a224e269a4edb2314852a12fede54": {"t": 1785752706.7216125, "n": 72155, "h": "cb2c95d7b8944dea", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Conformity\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n\n# ── Mermaid diagram labels (i18n) ─────────────────────────\nmermaid.layer.capabilities=Capabilities\nmermaid.layer.business.processes=Business Processes\nmermaid.layer.business.roles=Business Roles\nmermaid.layer.services=Services\nmermaid.layer.coi.services=COI Services\nmermaid.layer.core.services=Core Services\nmermaid.layer.applications=Applications\nmermaid.layer.user.applications=User Applications\nmermaid.layer.information.products=Information Products\nmermaid.layer.communications.services=Communications Services\nmermaid.relation.realizes=realizes\nmermaid.relation.supports=supports\nmermaid.relation.uses=uses\nmermaid.relation.fulfills=fulfills\nmermaid.relation.depends.on=depends on\nmermaid.relation.produces=produces\nmermaid.relation.consumes=consumes\nmermaid.relation.assigned.to=assigned to\nmermaid.relation.related.to=related to\nmermaid.relation.communicates.with=communicates with\nmermaid.marker.anchor=★\nmermaid.marker.hotspot=⚠\nmermaid.showcase.layer.capabilities=🔵 Capabilities\nmermaid.showcase.layer.business.processes=🟢 Processes\nmermaid.showcase.layer.business.roles=🟢 Roles\nmermaid.showcase.layer.services=🟠 Services\nmermaid.showcase.layer.coi.services=🟠 COI Services\nmermaid.showcase.layer.core.services=🟠 Core Services\nmermaid.showcase.layer.applications=🟣 Applications\nmermaid.showcase.layer.user.applications=🟣 Applications\nmermaid.showcase.layer.information.products=🔷 Info Products\nmermaid.showcase.layer.communications.services=🔴 Communications\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Impact Relationships\narchview.impact.relations.count={0}\narchview.trace.relations.title=Trace Relationships\narchview.trace.relations.count={0}\narchview.impact.col.source=Source\narchview.impact.col.target=Target\narchview.impact.col.type=Type\narchview.impact.col.relevance=Relevance\narchview.impact.col.derived=Derived From\narchview.trace.col.source=Source\narchview.trace.col.target=Target\narchview.trace.col.type=Type\narchview.trace.col.relevance=Relevance\narchview.trace.col.hops=Hops\narchview.trace.col.reason=Reason\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direct LLM Match\nnode.origin.trace.intermediate=Scoring Trace (Intermediate)\nnode.origin.propagated=Propagated via Relation\nnode.origin.seed.context=Seed Relation Context\nnode.origin.enriched.leaf=Enriched Leaf Node\nnode.origin.impact.selected=Impact Selected\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomy Seed\nrelation.origin.propagated.trace=Propagated Trace\nrelation.origin.impact.derived=Impact Derived\nrelation.origin.suggested.candidate=Suggested Candidate\nrelation.origin.llm.supported=LLM Supported\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Origin\narchview.col.depth=Depth\narchview.col.specificity=Specificity\narchview.col.scoring.path=Scoring Path\narchview.col.llm.score=LLM Score\narchview.col.impact=Impact\narchview.col.confidence=Confidence\narchview.col.derivation=Derivation\n"}, "4ef70b50bb822c0a88a184ed86bdc393c8be5dc0": {"t": 1785752709.7845216, "n": 71176, "h": "929cebd8585851b6", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Conformity\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n\n# ── Mermaid diagram labels (i18n) ─────────────────────────\nmermaid.layer.capabilities=Capabilities\nmermaid.layer.business.processes=Business Processes\nmermaid.layer.business.roles=Business Roles\nmermaid.layer.services=Services\nmermaid.layer.coi.services=COI Services\nmermaid.layer.core.services=Core Services\nmermaid.layer.applications=Applications\nmermaid.layer.user.applications=User Applications\nmermaid.layer.information.products=Information Products\nmermaid.layer.communications.services=Communications Services\nmermaid.relation.realizes=realizes\nmermaid.relation.supports=supports\nmermaid.relation.uses=uses\nmermaid.relation.fulfills=fulfills\nmermaid.relation.depends.on=depends on\nmermaid.relation.produces=produces\nmermaid.relation.consumes=consumes\nmermaid.relation.assigned.to=assigned to\nmermaid.relation.related.to=related to\nmermaid.relation.communicates.with=communicates with\nmermaid.marker.anchor=★\nmermaid.marker.hotspot=⚠\nmermaid.showcase.layer.capabilities=🔵 Capabilities\nmermaid.showcase.layer.business.processes=🟢 Processes\nmermaid.showcase.layer.business.roles=🟢 Roles\nmermaid.showcase.layer.services=🟠 Services\nmermaid.showcase.layer.coi.services=🟠 COI Services\nmermaid.showcase.layer.core.services=🟠 Core Services\nmermaid.showcase.layer.applications=🟣 Applications\nmermaid.showcase.layer.user.applications=🟣 Applications\nmermaid.showcase.layer.information.products=🔷 Info Products\nmermaid.showcase.layer.communications.services=🔴 Communications\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Impact Relationships\narchview.impact.relations.count={0}\narchview.trace.relations.title=Trace Relationships\narchview.trace.relations.count={0}\narchview.impact.col.source=Source\narchview.impact.col.target=Target\narchview.impact.col.type=Type\narchview.impact.col.relevance=Relevance\narchview.impact.col.derived=Derived From\narchview.trace.col.source=Source\narchview.trace.col.target=Target\narchview.trace.col.type=Type\narchview.trace.col.relevance=Relevance\narchview.trace.col.hops=Hops\narchview.trace.col.reason=Reason\n"}, "1f956ea5b1e7314c4862e6123550d9117b3ad7f5": {"t": 1785752711.461321, "n": 71109, "h": "c0d024d4a5794f35", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n\n# ── Mermaid diagram labels (i18n) ─────────────────────────\nmermaid.layer.capabilities=Capabilities\nmermaid.layer.business.processes=Business Processes\nmermaid.layer.business.roles=Business Roles\nmermaid.layer.services=Services\nmermaid.layer.coi.services=COI Services\nmermaid.layer.core.services=Core Services\nmermaid.layer.applications=Applications\nmermaid.layer.user.applications=User Applications\nmermaid.layer.information.products=Information Products\nmermaid.layer.communications.services=Communications Services\nmermaid.relation.realizes=realizes\nmermaid.relation.supports=supports\nmermaid.relation.uses=uses\nmermaid.relation.fulfills=fulfills\nmermaid.relation.depends.on=depends on\nmermaid.relation.produces=produces\nmermaid.relation.consumes=consumes\nmermaid.relation.assigned.to=assigned to\nmermaid.relation.related.to=related to\nmermaid.relation.communicates.with=communicates with\nmermaid.marker.anchor=★\nmermaid.marker.hotspot=⚠\nmermaid.showcase.layer.capabilities=🔵 Capabilities\nmermaid.showcase.layer.business.processes=🟢 Processes\nmermaid.showcase.layer.business.roles=🟢 Roles\nmermaid.showcase.layer.services=🟠 Services\nmermaid.showcase.layer.coi.services=🟠 COI Services\nmermaid.showcase.layer.core.services=🟠 Core Services\nmermaid.showcase.layer.applications=🟣 Applications\nmermaid.showcase.layer.user.applications=🟣 Applications\nmermaid.showcase.layer.information.products=🔷 Info Products\nmermaid.showcase.layer.communications.services=🔴 Communications\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Impact Relationships\narchview.impact.relations.count={0}\narchview.trace.relations.title=Trace Relationships\narchview.trace.relations.count={0}\narchview.impact.col.source=Source\narchview.impact.col.target=Target\narchview.impact.col.type=Type\narchview.impact.col.relevance=Relevance\narchview.impact.col.derived=Derived From\narchview.trace.col.source=Source\narchview.trace.col.target=Target\narchview.trace.col.type=Type\narchview.trace.col.relevance=Relevance\narchview.trace.col.hops=Hops\narchview.trace.col.reason=Reason\n"}, "30afc1cc10e1ce2aa96709549ba5b96cd9aebdfe": {"t": 1785752713.193523, "n": 70494, "h": "f22c7e843b45600b", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n\n# ── Mermaid diagram labels (i18n) ─────────────────────────\nmermaid.layer.capabilities=Capabilities\nmermaid.layer.business.processes=Business Processes\nmermaid.layer.business.roles=Business Roles\nmermaid.layer.services=Services\nmermaid.layer.coi.services=COI Services\nmermaid.layer.core.services=Core Services\nmermaid.layer.applications=Applications\nmermaid.layer.user.applications=User Applications\nmermaid.layer.information.products=Information Products\nmermaid.layer.communications.services=Communications Services\nmermaid.relation.realizes=realizes\nmermaid.relation.supports=supports\nmermaid.relation.uses=uses\nmermaid.relation.fulfills=fulfills\nmermaid.relation.depends.on=depends on\nmermaid.relation.produces=produces\nmermaid.relation.consumes=consumes\nmermaid.relation.assigned.to=assigned to\nmermaid.relation.related.to=related to\nmermaid.relation.communicates.with=communicates with\nmermaid.marker.anchor=★\nmermaid.marker.hotspot=⚠\nmermaid.showcase.layer.capabilities=🔵 Capabilities\nmermaid.showcase.layer.business.processes=🟢 Processes\nmermaid.showcase.layer.business.roles=🟢 Roles\nmermaid.showcase.layer.services=🟠 Services\nmermaid.showcase.layer.coi.services=🟠 COI Services\nmermaid.showcase.layer.core.services=🟠 Core Services\nmermaid.showcase.layer.applications=🟣 Applications\nmermaid.showcase.layer.user.applications=🟣 Applications\nmermaid.showcase.layer.information.products=🔷 Info Products\nmermaid.showcase.layer.communications.services=🔴 Communications\n"}, "234e630d228f5103d8a4eb781ccf395bfabe350e": {"t": 1785752715.0061529, "n": 69022, "h": "b4cd363ddb4626e8", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.CONTAINER_IMAGE=Container Image\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n"}, "554dd2c4ca827ee54ff128ad14bf643d38f0c098": {"t": 1785752717.7522469, "n": 68981, "h": "80119fb652f1dea5", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n"}, "8a24fef79416f9993ea3cafe69ca8867dcce84e3": {"t": 1785752719.4777389, "n": 69000, "h": "0e01368a7d4d34cf", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak Migration Guide\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n"}, "f4b3a6ce661731fab150798e44ad7e4e41818ee9": {"t": 1785752721.9036481, "n": 68947, "h": "1a505150b9418e55", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n\n# ── Panel titles (i18n for collapsible sections) ────────────\nbrowse.search.title=\\uD83D\\uDD0D Search Taxonomy\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analysis Log\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM Communication Log\nanalyze.gap.panel.title=\\uD83D\\uDD0D Gap Analysis\nanalyze.gap.panel.description=Run gap analysis to identify missing relations and incomplete patterns.\nanalyze.gap.btn=\\uD83D\\uDD0D Analyze Gaps\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Pattern Detection\nanalyze.patterns.panel.description=Detect architecture patterns (Full Stack, App Chain, Role Chain) across scored nodes.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Detect Patterns\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architecture Recommendation\nanalyze.recommendation.panel.description=Generate architecture recommendations combining matches, gap analysis, and semantic search.\nbrowse.relations.title=\\uD83D\\uDD17 Relations Browser\nlog.viewer.title=\\uD83D\\uDCDC Log Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt Templates\ndsl.history.col.time=Time\n\n# ── Filter / badge labels ───────────────────────────────────\nrelations.filter.all.types=All types\nlog.level.filter.all=All Levels\nprompt.badge.overridden=Overridden\nprompt.badge.default=Default\nprompt.btn.save=\\uD83D\\uDCBE Save\nprompt.btn.reset=\\u21A9\\uFE0F Reset to Default\nprompt.placeholders=Placeholders: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Operation Result\ntransfer.source.commit=Source Commit\n\n# ── Modal titles / buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Propose Relations\npropose.modal.description=Generate relation proposals for node\npropose.modal.type.label=Relation Type\npropose.btn.generate=Generate Proposals\nleaf.justification.title=\\uD83D\\uDCCB Leaf Justification\ngraph.detail.title=\\uD83D\\uDD2C Graph Query Results\nmerge.conflict.description=The merge cannot be completed automatically. Review the content from both sides and edit the resolved version below.\nsync.diverged.modal.title=\\uD83D\\uDD04 Resolve Diverged State\nsync.diverged.description=Your workspace and the shared repository have diverged \\u2014 both sides have changes that the other doesn\\u2019t. Choose a resolution strategy:\nsync.diverged.merge.label=\\uD83D\\uDD00 Merge\nsync.diverged.merge.description=Attempt to merge shared changes into your branch. May fail if conflicts exist.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Keep Mine\nsync.diverged.keep.mine.description=Publish your version to the shared repository, overwriting shared changes.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Take Shared\nsync.diverged.take.shared.description=Replace your local branch with the shared version, discarding your changes.\nlog.btn.refresh=\\uD83D\\uDD04 Refresh\nlog.btn.autoscroll=\\u2193 Auto-scroll\nlog.filter.component.placeholder=Filter by component\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Third-Party Notices\n\n# ── Remaining template i18n (P4) ───────────────────────────\nskip.link=Skip to main content\nbrowse.tree.loading=Loading taxonomy\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Search\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Clear Log\narch.overview.label=\\uD83C\\uDFDF\\uFE0F Overview\nbrowse.relations.btn.new=\\u2795 New Relation\nbrowse.relations.placeholder=Open to load relations.\ngraph.apqc.filter.label=Show APQC hierarchy only (filter nodes with x-source-framework: apqc)\ncontext.history.title=\\uD83D\\uDD51 Navigation History\ncontext.history.loading=Loading navigation history\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Refresh\nworkspace.manager.placeholder=Open to load workspaces.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Health Dashboard\nhealth.overall.label=Overall\nhealth.ai.label=AI/LLM\nhealth.embedding.label=Embedding\nhealth.memory.label=Memory\nadmin.health.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.quality.title=\\uD83D\\uDCCA Quality Dashboard\nadmin.quality.placeholder=Open to load metrics.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.title=\\uD83D\\uDCCB Requirement Coverage\nadmin.coverage.placeholder=Open to load coverage data.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Record Current Analysis\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM Diagnostics\nadmin.diagnostics.loading=Loading diagnostics\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Refresh\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Test Connection\nprompt.taxonomy.label=Taxonomy:\nabout.third.party.notice=This product contains third-party open-source software. Full text:\nexport.hint.text=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG export resolution multiplier\nproposals.loading.text=Loading proposals\\u2026\nlog.viewer.placeholder=Open to load logs.\n\n# ── DSL editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=New branch name:\ndsl.branch.creating=Creating branch \\u201C{0}\\u201D from \\u201C{1}\\u201D\\u2026\ndsl.branch.error=Branch error: {0}\ndsl.commit.not.found=Commit not found\ndsl.load.error=Load error: {0}\ndsl.diff.computing=Computing diff\\u2026\ndsl.diff.error=Diff error: {0}\ndsl.diff.text.computing=Computing text diff\\u2026\ndsl.diff.text.error=Text diff error: {0}\ndsl.diff.elements.removed=element(s) removed\ndsl.diff.elements.changed=element(s) changed\ndsl.diff.relations.removed=relation(s) removed\ndsl.diff.relations.changed=relation(s) changed\ndsl.cherrypick.prompt=Cherry-pick commit {0} onto which branch?\ndsl.cherrypick.progress=Cherry-picking {0} onto \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick Successful\ndsl.cherrypick.success.message=Applied onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-pick error: {0}\ndsl.merge.prompt=Merge branch \\u201C{0}\\u201D into which branch?\ndsl.merge.progress=Merging \\u201C{0}\\u201D into \\u201C{1}\\u201D\\u2026\ndsl.merge.success.title=Merge Successful\ndsl.merge.success.message=Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\ndsl.merge.error=Merge error: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analysis returned 0 matches. This may indicate the LLM API key is not configured or the LLM returned empty results. Check the server logs for details.\nanalyze.complete=\\u2705 Analysis complete. {0} node(s) matched.\nanalyze.partial=\\u26A0\\uFE0F Partial results \\u2014 {0} {1} node(s) matched so far.\nanalyze.incomplete=Analysis incomplete.\nanalyze.interactive.info=\\uD83D\\uDD0D Interactive Mode: expand nodes to evaluate them with AI.\nanalyze.connection.lost=Connection to server lost.\nanalyze.no.text=No business text stored. Please run an analysis first.\nanalyze.hotspots=\\u26A0\\uFE0F {0} change hotspots\nanalyze.hotspot.risk=change risk\nanalyze.proposal.exists=\\u2139\\uFE0F Proposal already exists for {0} \\u2192 {1}\n\n# ── Document import JS i18n ────────────────────────────────\ndocimport.upload.failed=Upload failed\ndocimport.ai.failed=AI extraction failed\ndocimport.regulation.failed=Regulation mapping failed\n"}, "5c64862804361d0120b93c308d83f89c398c743a": {"t": 1785752724.794411, "n": 61926, "h": "003a2f7af64ac04a", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\ncompare.filter.all=All\ncompare.filter.elements=Elements\ncompare.filter.relations=Relations\ncompare.filter.requirements=Requirements\ncompare.relations.column.added=Relations Added ({0})\ncompare.relations.column.changed=Relations Changed ({0})\ncompare.relations.column.removed=Relations Removed ({0})\ncompare.relations.column.empty.added=No added relations\ncompare.relations.column.empty.changed=No changed relations\ncompare.relations.column.empty.removed=No removed relations\ncompare.requirements.column.added=Requirements Added ({0})\ncompare.requirements.column.changed=Requirements Changed ({0})\ncompare.requirements.column.removed=Requirements Removed ({0})\ncompare.requirements.column.empty.added=No added requirements\ncompare.requirements.column.empty.changed=No changed requirements\ncompare.requirements.column.empty.removed=No removed requirements\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.manager.title=Workspace Manager\nworkspace.manager.create=New Workspace\nworkspace.manager.refresh=Refresh\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.structurizr.no.text=Please enter a business requirement text before exporting to Structurizr DSL.\nexport.structurizr.failed=Structurizr DSL export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.btn.structurizr.title=Export Architecture View as Structurizr DSL for C4 tools\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n"}, "639be534609bf4bf38d5f9046316b2c8c7b9897d": {"t": 1785752728.2933977, "n": 60705, "h": "f3dee695a7c9c772", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=\\u2699\\uFE0F Preferences\npreferences.btn.save=\\uD83D\\uDCBE Save\npreferences.btn.reset=\\u21A9\\uFE0F Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\npreferences.llm.rpm=LLM Requests per Minute (RPM)\npreferences.llm.timeout=LLM Request Timeout (seconds)\npreferences.llm.ratelimit=Server Rate Limit (requests/IP/minute)\npreferences.llm.minscore=Minimum Relevance Score (0\\u2013100)\npreferences.dsl.branch=Default Branch\npreferences.dsl.project=Project Name\npreferences.dsl.autosave=Auto-Save Interval (seconds, 0 = disabled)\npreferences.dsl.pushoncommit=Push to Remote after each Commit\npreferences.dsl.remoteurl=Remote Git URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote Git Token (stored securely, last 4 chars shown)\npreferences.dsl.remotetoken.placeholder=Leave blank to keep existing token\npreferences.limits.businesstext=Max Business Text Length\npreferences.limits.archnodes=Max Architecture Nodes\npreferences.limits.exportnodes=Max Export Nodes\npreferences.history.title=\\uD83D\\uDCCB Preferences Change History\npreferences.history.commit=Commit\npreferences.history.author=Author\npreferences.history.time=Time\npreferences.history.message=Message\npreferences.history.empty=Open to load history.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=All settings are system-wide \\u2601\\uFE0F \\u2014 they apply to all users and workspaces.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n"}, "f07b935d377f7a0ba3d4ca1a922761b27e11e503": {"t": 1785752731.9684024, "n": 59411, "h": "db598ea59c141ba3", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=Preferences\npreferences.btn.save=Save Preferences\npreferences.btn.reset=Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak & SSO Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n"}, "7840c2fa93f98c7a28b86ab62eb643198fe645b4": {"t": 1785752734.3571975, "n": 59557, "h": "729ce66d9bbdf765", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=Preferences\npreferences.btn.save=Save Preferences\npreferences.btn.reset=Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak Setup\nhelp.toc.SSO_INTEGRATION=SSO Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL Setup\nhelp.toc.MSSQL-SETUP=MSSQL Setup\nhelp.toc.ORACLE-SETUP=Oracle Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\nhelp.toc.RELATION_SEEDS=Relation Seed Model\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n"}, "3ec84e7e9827cc5628a3e39690a66ea8c8d7d130": {"t": 1785752736.3360488, "n": 59513, "h": "7c8e86eb9dc3a4c2", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Impact Map\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=Preferences\npreferences.btn.save=Save Preferences\npreferences.btn.reset=Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak Setup\nhelp.toc.SSO_INTEGRATION=SSO Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL Setup\nhelp.toc.MSSQL-SETUP=MSSQL Setup\nhelp.toc.ORACLE-SETUP=Oracle Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n"}, "c11922e77c84ca1839cf6371dd79986b2877df84": {"t": 1785752738.0199158, "n": 59520, "h": "bde3e68e407df6f4", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Architecture View\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=Preferences\npreferences.btn.save=Save Preferences\npreferences.btn.reset=Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak Setup\nhelp.toc.SSO_INTEGRATION=SSO Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL Setup\nhelp.toc.MSSQL-SETUP=MSSQL Setup\nhelp.toc.ORACLE-SETUP=Oracle Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n\n# ── Document Import & Provenance ──────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Document Import\ndocimport.panel.description=Upload a PDF or DOCX document (e.g. an administrative regulation) to extract requirement candidates.\ndocimport.file.label=Document file\ndocimport.title.label=Title (optional)\ndocimport.title.placeholder=e.g. BayVwVfG \\u00A723\ndocimport.type.label=Source type\ndocimport.type.regulation=Regulation\ndocimport.type.business=Business Request\ndocimport.type.document=Document\ndocimport.type.meeting=Meeting Note\ndocimport.btn.upload=\\uD83D\\uDCC4 Upload & Extract\ndocimport.uploading=Uploading and parsing\\u2026\ndocimport.success=Extracted {0} candidates from {1} pages.\ndocimport.select.file=Please select a file.\ndocimport.no.candidates=No requirement candidates were found in this document.\ndocimport.none.selected=Please select at least one candidate.\ndocimport.transferred={0} candidate(s) transferred to analysis.\ndocimport.review.title=\\uD83D\\uDCC4 Extracted Requirement Candidates\ndocimport.btn.selectall=Select All\ndocimport.btn.deselectall=Deselect All\ndocimport.btn.analyze=\\uD83D\\uDD0D Analyze Selected\ndocimport.mode.extract=\\uD83D\\uDCDD Extract Candidates\ndocimport.mode.ai=\\uD83E\\uDD16 AI-Assisted Extraction\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architecture Mapping\ndocimport.ai.extracting=AI is analyzing the document\\u2026\ndocimport.ai.success=AI extracted {0} requirements from {1} pages.\ndocimport.ai.results.title=\\uD83E\\uDD16 AI-Extracted Requirements\ndocimport.ai.comparison=AI extracted {0} candidates vs \\uD83D\\uDCDD Rule-based: {1} paragraphs\ndocimport.ai.no.results=AI did not extract any requirement candidates.\ndocimport.regmap.mapping=Mapping regulation to architecture\\u2026\ndocimport.regmap.success=Found {0} architecture matches from {1} pages.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architecture Mapping\ndocimport.regmap.no.matches=No architecture matches found.\ndocimport.regmap.col.node=Taxonomy Node\ndocimport.regmap.col.linktype=Link Type\ndocimport.regmap.col.confidence=Confidence\ndocimport.regmap.col.ref=\\u00A7 Reference\ndocimport.regmap.col.reason=Reason\nprovenance.panel.title=\\uD83D\\uDD17 Source Provenance\nprovenance.panel.hint=Requirement provenance information will be displayed here after analysis.\nprovenance.source=Source\nprovenance.type=Type\nprovenance.artifact=Artifact ID\nprovenance.candidates=Candidates\nprovenance.pages=Pages\nhelp.toc.DOCUMENT_IMPORT=Document Import & Provenance\n"}, "613043cef04560970a1524dc702e6f881be4b641": {"t": 1785752763.3939013, "n": 57014, "h": "7f2057b01bec3d86", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.card.title=Business Requirement Analysis\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.descriptions=Descriptions\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\narchitecture.no.suggestions=No suggested relationships yet.\narchitecture.suggested.title=\\uD83D\\uDD17 Suggested Relationships\narchitecture.placeholder.title=No Architecture View Yet\narchitecture.placeholder.description=Run an analysis with the <strong>Architecture View</strong> option enabled to see the architecture breakdown here.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Go to Analyze\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Requirement Architecture View\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Export Architecture\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=Preferences\npreferences.btn.save=Save Preferences\npreferences.btn.reset=Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\npreferences.section.llm=\\uD83E\\uDD16 LLM Configuration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL Configuration\npreferences.section.limits=\\uD83D\\uDCC8 Size Limits\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Based on:\ncontext.provisional.warning=\\u26A0\\uFE0F Includes provisional relations\ncontext.projection.stale=Projection: STALE\ncontext.projection.fresh=Projection: fresh\ncontext.index.stale=Index: STALE\ncontext.index.fresh=Index: fresh\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Relation Proposals\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Generate Recommendation\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 AI Architecture Copilot\nanalyze.copilot.badge=One-Click\nanalyze.copilot.panel.hint=Click the \\uD83D\\uDE80 Copilot button to start a full architecture analysis.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak Setup\nhelp.toc.SSO_INTEGRATION=SSO Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL Setup\nhelp.toc.MSSQL-SETUP=MSSQL Setup\nhelp.toc.ORACLE-SETUP=Oracle Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.branch.draft.new=draft (new)\ndsl.diff.no.changes=No changes\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\nabout.third.party.error=Could not load third-party notices.\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\nviews.no.scored.nodes=No scored nodes yet. Run an analysis to see the Decision Map.\nviews.no.filter.match=No nodes match the filter criteria.\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Title\ngraph.header.sheet=Sheet\ngraph.header.relevance=Relevance\ngraph.header.hop=Hop\ngraph.header.reason=Reason\ngraph.loading=Querying graph\\u2026\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\ngraph.section.relationships=Traversed Relationships\ngraph.header.source=Source\ngraph.header.target=Target\ngraph.header.type=Type\ngraph.badge.origin=origin\ngraph.badge.hop=hop {0}\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\nscoring.badge.already.exists=Already exists\nscoring.badge.accepted=Accepted\nscoring.badge.dismissed=Dismissed\nscoring.badge.session.only=\\uD83D\\uDCCC Session only\nscoring.no.archview=No architecture view available. Enable \\u201C\\uD83C\\uDFD7\\uFE0F Architecture View\\u201D checkbox and run an analysis first.\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n"}, "05cb9d5946380bd7f9a1302541fdf6ad04baf03e": {"t": 1785752767.298558, "n": 54621, "h": "16a6d4513acb442d", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=Preferences\npreferences.btn.save=Save Preferences\npreferences.btn.reset=Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak Setup\nhelp.toc.SSO_INTEGRATION=SSO Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL Setup\nhelp.toc.MSSQL-SETUP=MSSQL Setup\nhelp.toc.ORACLE-SETUP=Oracle Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\nhelp.toc.REPOSITORY_TOPOLOGY=Repository Topology\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\n\n# ── Workspace Provisioning (JS) ──────────────────────────────\nworkspace.provisioning.title=Prepare Workspace\nworkspace.provisioning.message=Your personal workspace has not been set up yet. Click the button below to create your personal working copy from the Shared Space.\nworkspace.provisioning.button=Prepare Workspace\nworkspace.provisioning.preparing=Creating your personal working copy from the Shared Space\\u2026\nworkspace.provisioning.ready.title=Workspace Ready\nworkspace.provisioning.ready.message=Your workspace is ready! You can start working now.\nworkspace.provisioning.failed=Workspace preparation failed\nworkspace.provisioning.retry=Retry\nworkspace.provisioning.status.not_provisioned=Not prepared\nworkspace.provisioning.status.provisioning=Preparing\\u2026\nworkspace.provisioning.status.ready=Ready\nworkspace.provisioning.status.failed=Failed\nworkspace.topology.title=Repository Topology\nworkspace.topology.mode.internal=Internal Shared\nworkspace.topology.mode.external=External Canonical\nworkspace.topology.shared.branch=Shared Branch\n"}, "d54d92003a3c8b7172dfc50b85567ecf03b7d780": {"t": 1785752769.3491373, "n": 53521, "h": "c066e9b634bc6eeb", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.FEATURE_MATRIX=Feature Matrix\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=Preferences\npreferences.btn.save=Save Preferences\npreferences.btn.reset=Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak Setup\nhelp.toc.SSO_INTEGRATION=SSO Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL Setup\nhelp.toc.MSSQL-SETUP=MSSQL Setup\nhelp.toc.ORACLE-SETUP=Oracle Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n\n# ── Navbar tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Shows the current AI/LLM provider status: green = available, yellow = unknown (status check failed), red = no API key configured\nnavbar.embedding.status.title=Embedding model status for semantic search\nnavbar.workspace.title=Current workspace / user\nnavbar.admin.open.title=Open admin mode to access diagnostic panels and prompt templates\n\n# ── View switcher ────────────────────────────────────────────\nview.list.title=Indented list view\nview.tabs.title=Tabbed list view\nview.sunburst.title=Zoomable sunburst chart\nview.tree.title=Bottom-up tree diagram\nview.decision.title=Decision overview map\nview.summary.title=Architecture summary after analysis\nview.tree.root.select=Select taxonomy to display\n\n# ── Analysis ─────────────────────────────────────────────────\nanalyze.input.description=Describe the business requirement or capability need:\nanalyze.placeholder=e.g. We need a system to manage and display real-time air tracks, integrate radar data, and provide a common operational picture to commanders at brigade and above level...\nanalyze.provider.title=Choose AI provider for this analysis\nanalyze.provider.default=\\uD83D\\uDD27 Server Default\nanalyze.btn.analyze.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nanalyze.btn.analyze.text=Analyze with AI\nanalyze.btn.copilot.title=One-click AI Architecture Copilot: Analyze \\u2192 Gap Analysis \\u2192 Pattern Detection \\u2192 Recommendation\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Loading\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interactive Mode\nanalyze.interactive.hint=(saves API quota)\nanalyze.interactive.title=In Interactive Mode, the taxonomy is expanded level-by-level. Click the \\uD83D\\uDD0D icon on any node to drill deeper. This saves API quota by only analyzing branches you explore.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architecture View\nanalyze.archview.hint=(relation-aware expansion)\nanalyze.archview.title=When enabled, the analysis also produces an Architecture View showing how matched taxonomy nodes relate to each other through cross-taxonomy relations (REALIZES, SUPPORTS, etc.)\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>AI is not available.</strong> No LLM API key is configured. Set one of the supported API keys, such as <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code>, or <code>MISTRAL_API_KEY</code>, or use <code>LLM_PROVIDER=LOCAL_ONNX</code> for offline analysis.\n\n# ── Match legend ─────────────────────────────────────────────\nlegend.title=Score colour coding: green intensity indicates the match percentage. 0% = no match (transparent), 100% = perfect match (solid green). Text turns white above 60%.\nlegend.label=Match legend:\nlegend.0=0% \\u2014 No match detected\nlegend.25=25% \\u2014 Weak match\nlegend.50=50% \\u2014 Moderate match\nlegend.75=75% \\u2014 Strong match\nlegend.100=100% \\u2014 Perfect match\n\n# ── Search ───────────────────────────────────────────────────\nsearch.placeholder=Search taxonomy nodes\\u2026\nsearch.mode.fulltext=Full-text\nsearch.mode.semantic=Semantic\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph Explorer\ngraph.explorer.navigate=Navigate\ngraph.explorer.navigate.title=Explore upstream dependencies, downstream impacts, and failure analysis\ngraph.explorer.description=Explore architecture dependencies and change impact by selecting a node below or clicking the \\uD83D\\uDD2C button on any taxonomy node.\ngraph.node.label=Node code:\ngraph.node.placeholder=e.g. BP-1040\ngraph.maxhops.label=Max hops:\ngraph.maxhops.aria=Maximum traversal hops\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=What supports this element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=What depends on this element?\ngraph.btn.failure=\\u26A0\\uFE0F Failure Impact\ngraph.btn.failure.title=What is affected if this element fails?\ngraph.btn.enriched=\\uD83D\\uDCC8 Enriched Impact\ngraph.btn.enriched.title=Failure impact enriched with requirement coverage and risk score\ngraph.btn.reqimpact=\\uD83C\\uDFAF Req. Impact\ngraph.btn.reqimpact.title=Analyze which elements are transitively impacted by the current requirement scores\ngraph.enter.code=Please enter a node code.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Export the current analysis results as a diagram or data file. Run an analysis on the Analyze tab first to enable diagram exports.\nexport.hint=\\uD83D\\uDCCB Run an analysis to enable diagram exports (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export buttons appear after a successful analysis with scores > 0\nexport.diagram.heading=Diagram Formats\nexport.btn.svg.title=Download current view as SVG\nexport.btn.png.title=Download current view as PNG\nexport.png.res.title=PNG export resolution multiplier\nexport.btn.pdf.title=Export as vector PDF (or Print)\nexport.btn.visio.title=Export Architecture View as Visio (.vsdx) diagram\nexport.btn.archimate.title=Export Architecture View as ArchiMate XML (.xml) for Archi or similar tools\nexport.btn.mermaid.title=Export Architecture View as Mermaid flowchart for Markdown documents\nexport.tree.heading=Tree Formats\nexport.btn.dot.title=Export taxonomy hierarchy as Graphviz DOT for yEd, Gephi, or Graphviz\nexport.btn.mermaid.tree.title=Export taxonomy hierarchy as Mermaid tree for Markdown documents\nexport.data.heading=Data Formats\nexport.btn.csv.title=Download scores as CSV spreadsheet\nexport.btn.json.title=Download scores as JSON file\nexport.report.heading=\\uD83D\\uDCC4 Full Report\nexport.btn.report.md.title=Export a comprehensive architecture report as Markdown\nexport.btn.report.html.title=Export a comprehensive architecture report as HTML\nexport.btn.report.docx.title=Export a comprehensive architecture report as Word document\nexport.import.heading=Import & Load\nexport.btn.load.title=Load saved analysis from JSON file\nexport.btn.archimate.import.title=Import an ArchiMate XML model to map elements and relations to taxonomy\n\n# ── Framework import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework Import\nframework.import.description=Import architecture models from external frameworks (UAF, APQC, C4/Structurizr). Elements and relations will be mapped to the taxonomy and materialized into the database.\nframework.import.profile=Profile\nframework.import.profile.select=-- Select Profile --\nframework.import.file=File\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Preview\nframework.import.btn.preview.title=Preview import without writing to database\nframework.import.btn.execute=\\uD83D\\uDCE8 Import\nframework.import.btn.execute.title=Execute full import into database\n\n# ── DSL editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architecture DSL Editor\ndsl.btn.load.title=Load current architecture as DSL\ndsl.btn.load.text=\\uD83D\\uDD04 Load Current\ndsl.btn.parse.title=Parse DSL and show structure\ndsl.btn.parse.text=\\uD83D\\uDD0D Parse\ndsl.btn.validate.title=Validate DSL for errors\ndsl.btn.validate.text=\\u2705 Validate\ndsl.btn.format.title=Format DSL (canonical style) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Format\ndsl.diff.title=\\uD83D\\uDD0D Diff Viewer\ndsl.diff.select=Select two commits from the history to compare.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialize\ndsl.btn.newbranch.title=Create new branch\ndsl.btn.merge.title=Merge current branch into another\ndsl.btn.incr.title=Incremental materialization (delta only)\ndsl.btn.incr.text=\\u0394 Incremental\ndsl.history.title=\\uD83D\\uDD53 Commit History\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Message\ndsl.history.col.author=Author\ndsl.history.col.date=Date\ndsl.history.col.actions=Actions\ndsl.author.placeholder=user@example.com\n\n# ── Help tab ─────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Filter docs\\u2026\nhelp.loading=Loading\\u2026\nhelp.select.doc=Select a document from the sidebar to read it here.\nhelp.back.to.top=Back to top\n\n# ── About modal ──────────────────────────────────────────────\nabout.product=Product\nabout.version=Version\nabout.build.time=Build time\nabout.commit=Commit\nabout.branch=Branch\nabout.license=License\nabout.copyright=Copyright\nabout.source=Source\nabout.api.docs=API Docs\nabout.third.party.info=This product contains third-party open-source software. Full text:\nabout.info.tab=\\u2139\\uFE0F About\nabout.notices.tab=\\uD83D\\uDCDC Open Source Notices\nabout.btn.close=Close\n\n# ── Admin modal ──────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin Mode\nadmin.password.label=Enter admin password to unlock diagnostic panels:\nadmin.password.placeholder=Password\nadmin.password.error=Incorrect password. Please try again.\nadmin.locked.info=Admin mode is currently <strong>unlocked</strong>. Click Lock to hide diagnostic panels.\nadmin.btn.cancel=Cancel\nadmin.btn.unlock=\\uD83D\\uDD13 Unlock\nadmin.btn.lock=\\uD83D\\uDD12 Lock\n\n# ── Create relation modal ────────────────────────────────────\nrelation.create.title=\\u2795 Create Relation\nrelation.source.label=Source Node Code\nrelation.source.placeholder=e.g. BP-1040\nrelation.target.label=Target Node Code\nrelation.target.placeholder=e.g. CP-2010\nrelation.type.label=Relation Type\nrelation.description.label=Description (optional)\nrelation.btn.cancel=Cancel\nrelation.btn.create=Create\n\n# ── Context transfer ────────────────────────────────────────\ntransfer.target.commit=Target Commit\ntransfer.element.ids=Element IDs (comma-separated)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relation Keys (comma-separated)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Preview\ntransfer.btn.apply=Apply Transfer\n\n# ── Merge preview modal ─────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge Preview\nmerge.preview.loading=Loading preview\\u2026\nmerge.preview.btn.cancel=Cancel\nmerge.preview.btn.proceed=Proceed with Merge\n\n# ── Cherry-pick preview modal ────────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick Preview\ncherrypick.preview.loading=Loading preview\\u2026\ncherrypick.preview.btn.cancel=Cancel\ncherrypick.preview.btn.proceed=Proceed with Cherry-Pick\n\n# ── Conflict resolution modal ────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Conflict Resolution\nconflict.resolution.description=The operation encountered a conflict. Review the two sides and edit the resolved version below.\nconflict.ours.label=Ours (target)\nconflict.theirs.label=Theirs (source)\nconflict.resolved.label=Resolved Content\nconflict.resolved.placeholder=Edit the resolved content here\\u2026\nconflict.btn.cancel=Cancel\nconflict.btn.use.ours=Use Ours\nconflict.btn.use.theirs=Use Theirs\nconflict.btn.resolve=\\u2714 Resolve & Commit\n\n# ── Sync diverged modal ─────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync Diverged\n\n# ── Git status panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leave blank to keep existing token\n\n# ── Action guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Blocked: Context is read-only \\u2014 return to origin or switch context first\nguard.blocked.operation=Blocked: {0} in progress \\u2014 complete it first\nguard.warning.projection.badge=Projection stale\nguard.warning.projection=Warning: DB projection is stale \\u2014 data may not reflect latest Git changes\nguard.warning.index.badge=Index stale\nguard.warning.index=Warning: Search index outdated \\u2014 results may be incomplete\nguard.warning.rematerialize.badge=Re-materialization needed\nguard.merge.preview.failed=Could not load merge preview.\nguard.merge.cannot.proceed=Merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D cannot proceed.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge conflict expected! The merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D would fail due to conflicts.\nguard.merge.already.merged=Already merged: \\u201C{0}\\u201D is already an ancestor of \\u201C{1}\\u201D.\nguard.merge.fastforward=\\u2705 Fast-forward merge possible. No conflicts detected.\nguard.merge.preview.ok=Merge preview: commits to merge from \\u201C{0}\\u201D into \\u201C{1}\\u201D. No conflicts detected.\nguard.merge.preview.unavailable=Merge preview unavailable.\nguard.proceed=Proceed?\nguard.cherrypick.preview.failed=Could not load cherry-pick preview.\nguard.cherrypick.cannot.proceed=Cherry-pick of {0} cannot proceed.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-pick would cause conflicts! Commit {0} cannot be cleanly applied to \\u201C{1}\\u201D.\nguard.cherrypick.clean=\\u2705 Cherry-pick looks clean. Apply commit {0} onto \\u201C{1}\\u201D?\nguard.cherrypick.preview.unavailable=Cherry-pick preview unavailable.\n\n# ── History search (JS) ─────────────────────────────────────\nhistory.search.failed=Search failed.\nhistory.search.no.results=No results found.\nhistory.search.newest=newest\nhistory.search.current.branch=current branch\nhistory.search.older=older\nhistory.search.btn.view=\\uD83D\\uDC41 View\nhistory.search.btn.switch=Switch\nhistory.search.btn.variant=Variant\nhistory.search.btn.compare=Compare\nhistory.search.matched=Matched:\n\n# ── Views (JS) ───────────────────────────────────────────────\nviews.d3.required=D3.js is required for this view. Please check your internet connection.\nviews.back=\\u21A9 back\nviews.valid=\\u2705 Valid\n\n# ── DSL editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch creation failed: {0}\ndsl.branch.create.success=\\u2705 Created branch \\u201C{0}\\u201D\ndsl.commit.loading=Loading commit {0}\\u2026\ndsl.commit.loaded=Loaded commit {0}\ndsl.commit.no.content=Commit {0} has no DSL content\ndsl.diff.changes=Diff: {0} changes\ndsl.diff.failed=Diff failed: {0}\ndsl.textdiff.loaded=Text diff loaded\ndsl.textdiff.failed=Text diff failed: {0}\ndsl.incr.elements.added=\\u2705 + {0} element(s) added\ndsl.incr.relations.added=\\u2705 + {0} relation(s) added\ndsl.incr.section.elements=+ Added Elements ({0})\ndsl.incr.section.relations=+ Added Relations ({0})\ndsl.cherrypick.failed=Cherry-pick failed: {0}\ndsl.cherrypick.failed.title=Cherry-Pick Failed\ndsl.cherrypick.success=\\u2705 Cherry-picked onto \\u201C{0}\\u201D \\u2192 {1}\ndsl.merge.failed=Merge failed: {0}\ndsl.merge.failed.title=Merge Failed\ndsl.merge.success=\\u2705 Merged \\u201C{0}\\u201D into \\u201C{1}\\u201D \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.summary.direction=Direction\ngraph.summary.origin=Origin\ngraph.summary.neighbors=Neighbors\ngraph.summary.relations=Relations\ngraph.summary.maxhops=Max Hops\ngraph.summary.failed.node=Failed Node\ngraph.summary.direct.impact=Direct Impact\ngraph.summary.indirect.impact=Indirect Impact\ngraph.summary.total.affected=Total Affected\ngraph.summary.upstream.elements=Upstream Elements\ngraph.summary.downstream.elements=Downstream Elements\ngraph.query.failed={0} query failed: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Failure impact\n\n# ── Scoring (JS) ────────────────────────────────────────────\nscoring.enter.requirement=Please enter a business requirement text before analyzing.\nscoring.analysis.failed=\\u274C Analysis failed: {0}\nscoring.analysis.error=Analysis failed: {0}\nscoring.error=Error: {0}\nscoring.justify.failed=Failed to get justification for {0}: {1}\nscoring.relation.accepted=\\u2705 Relationship accepted: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Failed to accept: {0}\n"}, "5cace13d5697fb4162dc58ee3e5745b2c138702e": {"t": 1785752771.9842875, "n": 37614, "h": "f89745c5adde3783", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\nversions.sub.history=History\nversions.sub.variants=Variants\nversions.sub.save=Save Version\nversions.sub.sync=Sync\nversions.history.title=Version History\nversions.history.refresh=Refresh\nversions.history.loading=Loading version history\\u2026\nversions.history.load.failed=Failed to load history: {0}\nversions.history.none=No versions found on this branch.\nversions.undo=Undo last change\nversions.undo.title=Undo last change on this branch\nversions.undo.confirm.title=Undo Last Change\nversions.undo.confirm.body=Undo the last change on <strong>{0}</strong>?\nversions.undo.confirm.detail=The last entry will be removed from the version history.\nversions.undo.confirm.btn=Undo\nversions.undo.failed=Undo failed\nversions.undo.last=Last: \\u201E{0}\\u201C\nversions.entry.view=View\nversions.entry.view.title=View DSL at this version\nversions.entry.compare=Compare\nversions.entry.compare.title=Compare with current\nversions.entry.restore=Restore\nversions.entry.restore.title=Restore to this version\nversions.entry.revert=Revert\nversions.entry.revert.title=Revert this change\nversions.entry.variant=Variant\nversions.entry.variant.title=Create variant from this version\nversions.entry.unknown.author=unknown\nversions.entry.no.message=No message\nversions.entry.marker.restore=Restore\nversions.entry.marker.revert=Revert\nversions.compare.title=Compare: {0} \\u2194 Current\nversions.compare.same=This is the current version \\u2014 nothing to compare.\nversions.compare.added=Added\nversions.compare.removed=Removed\nversions.compare.changed=Changed\nversions.compare.no.diff=No differences found.\nversions.compare.summary.title=Compare: {0} \\u2194 Current\nversions.restore.confirm.title=Restore to Version\nversions.restore.confirm.body=Restore to version <code>{0}</code>?\nversions.restore.confirm.detail=A new version will be created containing the content of the selected version. The existing version history is preserved.\nversions.restore.confirm.btn=Restore\nversions.restore.preview=Preview of changes:\nversions.restore.preview.added=+{0} added\nversions.restore.preview.removed=\\u2212{0} removed\nversions.restore.preview.changed=~{0} changed\nversions.restore.preview.none=No differences from current state.\nversions.restore.success=Version restored\nversions.restore.success.detail=Version {0} has been restored.\nversions.restore.failed=Restore failed\nversions.revert.confirm.title=Revert Change\nversions.revert.confirm.body=Revert changes from version <code>{0}</code>?\nversions.revert.confirm.detail=A new version will be created that undoes the changes from this commit. Only the changes from this single commit will be reverted.\nversions.revert.confirm.btn=Revert\nversions.revert.success=Change reverted\nversions.revert.success.detail=Version {0} has been reverted.\nversions.revert.failed=Revert failed\nversions.save.title=Save Version\nversions.save.description=Create a named version (snapshot) of the current architecture state.\nversions.save.label.title=Title\nversions.save.label.desc=Description (optional)\nversions.save.placeholder.title=e.g. Baseline after review round 2\nversions.save.placeholder.desc=Brief summary of what changed\nversions.save.btn=Save Version\nversions.save.error.title=Please enter a title.\nversions.save.error.no.content=No DSL content on this branch\nversions.save.failed=Save failed: {0}\nversions.save.success=Version saved! ({0})\nversions.timestamp.today=Today, {0}\nversions.error=Error\n\n# ── Compare ──\ncompare.modal.title=Compare Versions\ncompare.left.branch=Left Version\ncompare.left.commit=Left Commit (optional)\ncompare.right.branch=Right Version\ncompare.right.commit=Right Commit (optional)\ncompare.btn=Compare\ncompare.loading=Comparing\\u2026\ncompare.failed=Compare failed.\ncompare.no.diff=No differences found.\ncompare.summary=Summary of differences:\ncompare.elements.added=+{0} element(s) added\ncompare.elements.removed=\\u2212{0} element(s) removed\ncompare.elements.changed=~{0} element(s) changed\ncompare.relations.added=+{0} relation(s)\ncompare.relations.removed=\\u2212{0} relation(s)\ncompare.relations.changed=~{0} relation(s)\ncompare.no.differences=No differences found\ncompare.column.added=Added ({0})\ncompare.column.changed=Changed ({0})\ncompare.column.removed=Removed ({0})\ncompare.column.empty.added=No added elements\ncompare.column.empty.changed=No changed elements\ncompare.column.empty.removed=No removed elements\ncompare.dsl.diff=Show DSL Diff\ncompare.dsl.diff.expert=(Expert mode)\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=Preferences\npreferences.btn.save=Save Preferences\npreferences.btn.reset=Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\nworkspace.sync.status.synced=synced\nworkspace.sync.status.behind=Updates available\nworkspace.sync.status.ahead={0} unpublished\nworkspace.sync.status.diverged=diverged\nworkspace.sync.panel.uptodate=Up to date\nworkspace.sync.panel.behind=Updates from team available\nworkspace.sync.panel.ahead={0} unpublished change(s)\nworkspace.sync.panel.diverged=Diverged \\u2014 both sides have changes\nworkspace.sync.panel.resolve=Resolve\\u2026\nworkspace.sync.panel.resolve.title=Open resolution dialog\nworkspace.sync.panel.last.synced=Last synced\nworkspace.sync.panel.last.published=Last published\nworkspace.sync.panel.synced.commit=Synced commit\nworkspace.sync.panel.unpublished=Unpublished\nworkspace.sync.panel.changes={0} change(s)\nworkspace.sync.tab.title=Sync with Team Repository\nworkspace.sync.tab.refresh=Refresh\nworkspace.sync.tab.refresh.title=Refresh sync state\nworkspace.sync.tab.loading=Loading sync state\\u2026\nworkspace.sync.from.shared=Sync from Team\nworkspace.sync.from.shared.title=Pull changes from team repository into your workspace\nworkspace.sync.publish=Publish for Team\nworkspace.sync.publish.title=Publish your changes for the team\nworkspace.sync.from.success=Sync complete\nworkspace.sync.from.success.detail=Updated from team repository.\nworkspace.sync.publish.success=Publish complete\nworkspace.sync.publish.success.detail=Changes shared with team repository.\nworkspace.sync.publish.failed=Publish failed\nworkspace.local.changes=Local Changes\nworkspace.local.refresh=Refresh\nworkspace.local.none=No unpublished changes. Your workspace is in sync with the team repository.\nworkspace.local.count={0} unpublished change(s) on <strong>{1}</strong>.\nworkspace.local.publish=Publish for Team\nworkspace.local.sync=Sync from Team\nworkspace.dirty.title=Workspace has unsaved changes\nworkspace.clean.title=Current workspace / user\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\ncontext.mode.editable=Working version\ncontext.mode.readonly.label=View only\ncontext.mode.temporary=Draft\ncontext.back=Back\ncontext.back.title=Back to previous context\ncontext.origin=To Origin\ncontext.origin.title=Return to origin\ncontext.copyback=Copy Back\ncontext.copyback.title=Copy elements back to working version\ncontext.new.variant=New Variant\ncontext.new.variant.title=Create new variant\ncontext.compare=Compare\ncontext.compare.title=Compare versions\ncontext.search=Search: {0}\ncontext.unsaved=Unsaved changes\ncontext.from=from {0}\ncontext.saved.just.now=Just saved\ncontext.saved.minutes=Saved {0} min ago\ncontext.saved.hours=Saved {0} h ago\ncontext.saved.days=Saved {0} day(s) ago\ncontext.sync.unpublished={0} change(s) to share\ncontext.sync.unpublished.title=Publish now\ncontext.sync.behind=Updates available\ncontext.sync.behind.title=Update now\ncontext.sync.diverged=Versions diverged\ncontext.compare.loading=Compare feature loading\\u2026\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\nvariants.loading=Loading variants\\u2026\nvariants.load.failed=Failed to load variants: {0}\nvariants.none.available=No variant information available.\nvariants.empty.title=No variants available\nvariants.empty.description=Variants allow working on different architecture drafts in parallel without affecting the main version.\nvariants.empty.create=Create first variant\nvariants.main=main\nvariants.main.description=Main version \\u2014 reference for all variants\nvariants.derived.description=Variant \\u2014 derived from main version\nvariants.active=Active\nvariants.open=Open\nvariants.open.title=Switch to this variant\nvariants.compare.title=Compare with current version\nvariants.integrate=Integrate\nvariants.integrate.title=Integrate changes from this variant into current version\nvariants.delete.title=Delete this variant\nvariants.delete.btn=Delete\nvariants.delete.confirm.title=Delete Variant\nvariants.delete.confirm.body=Really delete variant <strong>{0}</strong>?\nvariants.delete.confirm.warning=This cannot be undone.\nvariants.delete.success=Variant deleted\nvariants.delete.success.detail=Variant \\u201E{0}\\u201C has been deleted.\nvariants.delete.failed=Delete failed\nvariants.delete.notfound=Variant \\u201E{0}\\u201C not found.\nvariants.integrate.confirm.title=Integrate\nvariants.integrate.confirm.body=Apply changes from <strong>{0}</strong> into <strong>{1}</strong>?\nvariants.integrate.confirm.btn=Integrate\nvariants.integrate.preview=Preview: {0} change(s) will be applied\nvariants.integrate.preview.detail=+{0} elements, \\u2212{1} removed, ~{2} changed\nvariants.integrate.success=Successfully integrated\nvariants.integrate.success.detail=Changes from \\u201E{0}\\u201C applied to \\u201E{1}\\u201C.\nvariants.integrate.failed=Integration failed\nvariants.new.variant=New Variant\nvariants.new.variant.title=Create new variant\nvariants.refresh=Refresh\nvariants.variant.name.required=Please enter a variant name.\nvariants.variant.error=Error: {0}\nvariants.create.modal.title=Create New Variant\nvariants.create.modal.description=Create a new variant from your current architecture state. The variant will contain a copy of the current state and can be independently modified.\nvariants.create.modal.label=Variant Name\nvariants.create.modal.placeholder=e.g. my-experiment, review-round-2\nvariants.create.modal.hint=Use lowercase letters, numbers, and hyphens. No spaces.\nvariants.create.modal.btn=Create Variant\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak Setup\nhelp.toc.SSO_INTEGRATION=SSO Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL Setup\nhelp.toc.MSSQL-SETUP=MSSQL Setup\nhelp.toc.ORACLE-SETUP=Oracle Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\nhelp.toc.WORKSPACE_VERSIONING=Workspace & Versioning\n\n# ── Scoring ──────────────────────────────────────────────────\nscoring.analyzing=Analyzing\\u2026\nscoring.analyze.btn=Analyze with AI\nscoring.view.architecture=View Architecture \\u2192\nscoring.generating=\\u23F3 Generating\\u2026\nscoring.no.justification=(no justification returned)\nscoring.justification.title=\\uD83D\\uDCCB Justification for {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Select Profile --\nimport.previewing=Previewing\\u2026\nimport.preview.failed=Preview failed: {0}\nimport.importing=Importing\\u2026\nimport.import.failed=Import failed: {0}\nimport.select.profile.alert=Please select an import profile.\nimport.select.file.alert=Please select a file to import.\nimport.preview.ok=Preview OK\nimport.import.success=Import Successful\nimport.import.fail=Failed\nimport.elements.label=Elements (total/mapped)\nimport.relations.label=Relations (total/mapped)\nimport.relations.created=Relations created\nimport.hypotheses.created=Hypotheses created\nimport.unmapped.types=Unmapped types ({0})\nimport.warnings=Warnings ({0})\nimport.warnings.more=\\u2026and {0} more\nimport.elements.strong=Elements:\nimport.relations.strong=Relations:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=No SVG found in current view. Switch to Sunburst, Tree, or Decision view.\nexport.png.failed=Failed to export PNG. Try SVG export instead.\nexport.visio.no.text=Please enter a business requirement text before exporting to Visio.\nexport.visio.failed=Visio export failed: {0}\nexport.archimate.no.text=Please enter a business requirement text before exporting to ArchiMate.\nexport.archimate.failed=ArchiMate export failed: {0}\nexport.json.no.scores=No scores to export. Please run an analysis first.\nexport.json.failed=JSON export failed: {0}\nexport.mermaid.no.text=Please enter a business requirement text before exporting to Mermaid.\nexport.mermaid.failed=Mermaid export failed: {0}\nexport.dot.no.data=DOT export requires taxonomy data. Please load the taxonomy first.\nexport.mermaid.tree.no.data=Mermaid tree export requires taxonomy data. Please load the taxonomy first.\nexport.failed.http=Export failed (HTTP {0})\n\n# ── Quality Dashboard ────────────────────────────────────────\nquality.loading=Loading metrics\\u2026\nquality.load.failed=\\u26A0\\uFE0F Failed to load quality metrics.\nquality.total=Total\nquality.accepted=Accepted\nquality.rejected=Rejected\nquality.pending=Pending\nquality.rate=Rate\nquality.by.type=By relation type:\nquality.table.type=Type\nquality.table.proposed=Proposed\nquality.table.accepted=Accepted\nquality.table.rejected=Rejected\nquality.table.rate=Rate\nquality.top.rejected=Top rejected (highest confidence):\nquality.table.source=Source\nquality.table.target=Target\nquality.table.confidence=Conf.\n\n# ── Coverage Dashboard ───────────────────────────────────────\ncoverage.loading=Loading coverage\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Failed to load coverage statistics.\ncoverage.total.nodes=Total nodes\ncoverage.covered=Covered\ncoverage.uncovered=Uncovered\ncoverage.coverage=Coverage\ncoverage.requirements=Requirements\ncoverage.avg.per.node=Avg req/node\ncoverage.top.covered=Top covered nodes:\ncoverage.table.node=Node code\ncoverage.table.requirements=Requirements\ncoverage.gap.candidates=Gap candidates (no coverage):\ncoverage.no.data.hint=No coverage data available. Use \\u201CRecord Current Analysis\\u201D to start.\ncoverage.loading.node=Loading node coverage\\u2026\ncoverage.back=\\u2190 Back\ncoverage.node.requirements={0} requirement(s)\ncoverage.table.req.id=Requirement ID\ncoverage.table.score=Score\ncoverage.table.analyzed=Analysed at\ncoverage.node.no.requirements=No requirements cover this node.\ncoverage.load.node.failed=\\u26A0\\uFE0F Failed to load node coverage.\ncoverage.no.scores=No analysis scores available. Please run an analysis first.\ncoverage.prompt.req.id=Enter a requirement identifier (e.g. REQ-101):\ncoverage.record.failed=Failed to record coverage (HTTP {0}).\ncoverage.record.error=Failed to record coverage. Check the console for details.\n\n# ── Relations ────────────────────────────────────────────────\nrelations.loading=Loading\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Failed to load relations.\nrelations.none=No relations found.\nrelations.count={0} relation(s)\nrelations.table.source=Source\nrelations.table.target=Target\nrelations.table.type=Type\nrelations.table.provenance=Provenance\nrelations.delete.title=Delete relation\nrelations.delete.confirm=Delete this relation?\nrelations.delete.failed=\\u26A0\\uFE0F Failed to delete relation.\nrelations.create.error=Error creating relation: {0}\nrelations.create.required=Source and Target codes are required.\nrelations.impact.no.scores=\\u26A0\\uFE0F Run an analysis first to generate scores for impact analysis.\nrelations.impact.analyzing=Analyzing impact\\u2026\nrelations.impact.elements={0} impacted element(s)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Impact\nrelations.impact.relationships={0} traversed relationship(s)\nrelations.impact.table.from=From\nrelations.impact.table.to=To\nrelations.impact.no.data=No impact data returned.\n\n# ── Search ───────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} nodes\nsearch.embeddings.available.title=Semantic embeddings available \\u2014 model: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: unavailable\nsearch.embeddings.unavailable.title=Embeddings not loaded \\u2014 semantic/hybrid/graph search disabled\nsearch.searching=Searching\\u2026\nsearch.results.count={0} result(s)\nsearch.no.graph.results=No graph results found.\nsearch.top.relation.types=Top relation types:\nsearch.finding.similar=Finding similar nodes\\u2026\nsearch.matched.nodes={0} matched node(s)\n\n# ── DSL Editor ───────────────────────────────────────────────\ndsl.loading=Loading current architecture\\u2026\ndsl.loaded=Loaded current architecture DSL ({0} chars)\ndsl.load.failed=Failed to load: {0}\ndsl.parsing=Parsing\\u2026\ndsl.parsed=Parsed: {0} elements, {1} relations\ndsl.parse.error=Parse error: {0}\ndsl.validating=Validating\\u2026\ndsl.valid=\\u2705 Valid DSL\ndsl.invalid=\\u274C Validation errors\ndsl.validate.error=Validate error: {0}\ndsl.formatting=Formatting\\u2026\ndsl.formatted=\\u2728 Formatted\ndsl.format.error=Format error: {0}\ndsl.committing=Committing to branch \\u201C{0}\\u201D\\u2026\ndsl.commit.default.message=Manual commit\ndsl.commit.rejected=Commit rejected: validation errors\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit error: {0}\ndsl.materializing=Materializing\\u2026\ndsl.materialize.validation.failed=Materialization failed: validation errors\ndsl.materialized=\\u2705 Materialized: {0} relations, {1} elements\ndsl.materialize.error=Materialize error: {0}\ndsl.incremental.loading=Loading history for incremental materialization\\u2026\ndsl.incremental.need.commits=Need at least 2 commits on branch \\u201C{0}\\u201D for incremental materialization\ndsl.incremental.done=\\u2705 Incremental: {0} relations, {1} elements\ndsl.incremental.error=Incremental error: {0}\ndsl.history.failed=Failed to load history\ndsl.history.empty=No commits yet\n\n# ── Merge & Conflict Resolution ──────────────────────────────\nmerge.no.conflict.title=No Conflict\nmerge.no.conflict.merge=No conflict detected between \\u201C{0}\\u201D and \\u201C{1}\\u201D.\nmerge.conflict.title=\\u26A0\\uFE0F Merge Conflict \\u2014 Manual Resolution Required\nmerge.error.title=Error\nmerge.error.load=Could not load conflict details: {0}\nmerge.no.conflict.cherrypick=No conflict detected for cherry-pick onto \\u201C{0}\\u201D.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick Conflict \\u2014 Manual Resolution Required\nmerge.ours.label=Ours ({0})\nmerge.theirs.label=Theirs ({0})\nmerge.empty.content=Empty Content\nmerge.empty.warning=Resolved content cannot be empty.\nmerge.resolution.failed=Resolution Failed\nmerge.resolved.title={0} Conflict Resolved\nmerge.resolved.detail=Content committed successfully: {0}\nmerge.resolution.error=Resolution failed: {0}\nmerge.diverged.resolved=Diverged State Resolved\n\n# ── Onboarding ───────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Welcome to the NATO NC3T Taxonomy Browser\nonboarding.intro=Map your business requirements to the NATO C3 Taxonomy in three simple steps:\nonboarding.step1=Describe your requirement in the text area on the right\nonboarding.step2=Click <strong>Analyze with AI</strong> to find matching taxonomy nodes\nonboarding.step3=Explore the results in different views, export diagrams, and browse dependencies\nonboarding.dismiss=Got it \\u2014 let's start!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC Process Hierarchy\ngraph.apqc.processes={0} processes\ngraph.apqc.no.data=No APQC hierarchy data found. Import an APQC file first via the Import tab.\ngraph.apqc.load.failed=Failed to load APQC hierarchy: {0}\n\n# ── Help ─────────────────────────────────────────────────────\nhelp.load.failed=Failed to load help index.\n\n# ── Git Status ───────────────────────────────────────────────\ngit.projection=Projection\ngit.index=Index\ngit.fresh=fresh\ngit.stale=STALE\ngit.variants.count={0} variant(s)\ngit.versions.count={0} version(s)\ngit.operation.in.progress={0} in progress\n\n# ── Context Transfer ─────────────────────────────────────────\ntransfer.preview.failed=Preview failed.\ntransfer.apply.confirm=Apply the selective transfer? This will create a new commit.\ntransfer.apply.success=Transfer completed. Commit: {0}\ntransfer.apply.failed=Transfer failed: {0}\ntransfer.required.ids=Source and target commit IDs are required.\ntransfer.selected=Selected: {0} elements, {1} relations.\ntransfer.conflicts={0} conflict(s) detected.\ntransfer.no.conflicts=No conflicts.\ntransfer.table.id=ID\ntransfer.table.current=Current\ntransfer.table.incoming=Incoming\ntransfer.table.views=Affected Views\n\n# ── Views ────────────────────────────────────────────────────\nviews.tooltip.match=Match: {0}%\n"}, "f38b89974a9cc32d2bc411f0a5d264f4742bfd1a": {"t": 1785752773.4594736, "n": 17994, "h": "050f2b414e979ac9", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=Preferences\npreferences.btn.save=Save Preferences\npreferences.btn.reset=Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment Checklist\nhelp.toc.OPERATIONS_GUIDE=Operations Guide\nhelp.toc.KEYCLOAK_SETUP=Keycloak Setup\nhelp.toc.SSO_INTEGRATION=SSO Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL Setup\nhelp.toc.MSSQL-SETUP=MSSQL Setup\nhelp.toc.ORACLE-SETUP=Oracle Setup\nhelp.toc.AI_TRANSPARENCY=AI Transparency\nhelp.toc.AI_LITERACY_CONCEPT=AI Literacy Concept\nhelp.toc.DATA_PROTECTION=Data Protection\nhelp.toc.ACCESSIBILITY=Accessibility\nhelp.toc.BSI_KI_CHECKLIST=BSI KI Checklist\nhelp.toc.DIGITAL_SOVEREIGNTY=Digital Sovereignty\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Knowledge Conservation\nhelp.toc.VERWALTUNGSINTEGRATION=Administration Integration\nhelp.toc.UI_GAP_ANALYSIS=UI Gap Analysis\n"}, "cbf01f258cd33718ddea4c05798da87757ec01a4": {"t": 1785752777.0367599, "n": 17287, "h": "5030921478aeb2b7", "c": "# ── Application ──\napp.title=Taxonomy Architecture Analyzer\napp.version=v1.1.1\n\n# ── Navigation tabs ──\nnav.analyze=Analyze\nnav.architecture=Architecture\nnav.graph=Graph\nnav.relations=Relations\nnav.export=Export\nnav.versions=Versions\nnav.dsl=DSL\nnav.help=Help\nnav.admin=Admin\nnav.preferences=Preferences\n\n# ── Navbar ──\nnavbar.about=About this application\nnavbar.darkmode=Toggle dark/light theme\nnavbar.admin.locked=Admin mode \\u2014 locked\nnavbar.admin.unlocked=Admin mode \\u2014 unlocked\nnavbar.admin.label=Admin Mode\n\n# ── Status bar ──\nstatus.loading=Loading\\u2026\nstatus.ready=Ready\nstatus.git.unavailable=Git status unavailable\n\n# ── Analyze tab ──\nanalyze.title=Architecture Analysis\nanalyze.input.label=Describe the system or capability you are evaluating:\nanalyze.input.placeholder=e.g. Integrated hospital communication and coordination platform\nanalyze.btn.analyze=Analyze\nanalyze.btn.clear=Clear\nanalyze.status.running=Analysis running\\u2026\nanalyze.status.complete=Analysis complete\nanalyze.status.error=Analysis error\nanalyze.status.unavailable=AI analysis is not available\n\n# ── Browse panel ──\nbrowse.title=Taxonomy Browser\nbrowse.search.placeholder=Search taxonomy\\u2026\nbrowse.expand.all=Expand All\nbrowse.collapse.all=Collapse All\nbrowse.view.list=List\nbrowse.view.tree=Tree\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sunburst\nbrowse.view.decision=Decision Map\nbrowse.nodes=nodes\nbrowse.no.results=No results found\nbrowse.root.select=Select a root category\n\n# ── Architecture tab ──\narchitecture.title=Architecture View\narchitecture.no.data=No architecture data available\n\n# ── Graph tab ──\ngraph.title=Graph Explorer\ngraph.depth.label=Depth\ngraph.direction.upstream=Upstream\ngraph.direction.downstream=Downstream\ngraph.direction.both=Both\ngraph.no.data=No graph data available\n\n# ── Relations tab ──\nrelations.title=Relations\nrelations.proposals=Relation Proposals\nrelations.add=Add Relation\nrelations.source.label=Source Node Code\nrelations.target.label=Target Node Code\nrelations.type.label=Relation Type\nrelations.no.proposals=No proposals available\nrelations.btn.propose=Propose Relations\nrelations.btn.accept=Accept\nrelations.btn.reject=Reject\n\n# ── Export tab ──\nexport.title=Export\nexport.format.label=Format\nexport.btn.export=Export\nexport.btn.download=Download\n\n# ── Versions tab ──\nversions.title=Versions\nversions.history=History\nversions.save=Save Version\nversions.restore=Restore\nversions.compare=Compare\nversions.no.history=No version history available\nversions.timeline=Timeline\nversions.btn.save=Save\nversions.commit.message=Commit message\nversions.author=Author\n\n# ── DSL Editor ──\ndsl.title=DSL Editor\ndsl.commit.author=Author\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit message\ndsl.commit.message.placeholder=Describe your changes\\u2026\ndsl.btn.commit=Commit\ndsl.btn.materialize=Materialize\ndsl.btn.commit.title=Commit DSL to selected branch (no materialization)\ndsl.btn.materialize.title=Materialize DSL into taxonomy database\n\n# ── Help tab ──\nhelp.title=Help\nhelp.toc.USER_GUIDE=User Guide\nhelp.toc.CONCEPTS=Concepts\nhelp.toc.EXAMPLES=Examples\nhelp.toc.FRAMEWORK_IMPORT=Framework Import\nhelp.toc.GIT_INTEGRATION=Git Integration\nhelp.toc.PREFERENCES=Preferences\nhelp.toc.AI_PROVIDERS=AI Providers\nhelp.toc.CONFIGURATION_REFERENCE=Configuration Reference\nhelp.toc.API_REFERENCE=API Reference\nhelp.toc.CURL_EXAMPLES=cURL Examples\nhelp.toc.ARCHITECTURE=Architecture\nhelp.toc.DEVELOPER_GUIDE=Developer Guide\nhelp.toc.DEPLOYMENT_GUIDE=Deployment Guide\nhelp.toc.SECURITY=Security\nhelp.toc.DATABASE_SETUP=Database Setup\nhelp.audience.everyone=Everyone\nhelp.audience.developers=Developers\nhelp.audience.admins=Admins\nhelp.audience.integrators=Integrators\nhelp.audience.devops=DevOps\n\n# ── Admin tab ──\nadmin.title=Administration\nadmin.diagnostics=LLM Diagnostics\nadmin.prompt.editor=Prompt Template Editor\n\n# ── Preferences tab ──\npreferences.title=Preferences\npreferences.btn.save=Save Preferences\npreferences.btn.reset=Reset to Defaults\npreferences.saved=Preferences saved successfully.\npreferences.reset=Preferences reset to defaults.\npreferences.save.failed=Save failed: {0}\npreferences.reset.failed=Reset failed: {0}\npreferences.history=History\npreferences.no.history=No history yet.\n\n# ── Dialogs / Modals ──\ndialog.confirm=Confirm\ndialog.cancel=Cancel\ndialog.close=Close\ndialog.ok=OK\ndialog.yes=Yes\ndialog.no=No\ndialog.delete.confirm=Are you sure you want to delete this?\ndialog.save.confirm=Are you sure you want to save?\n\n# ── Errors (backend) ──\nerror.internal=An internal error occurred. Please try again or check the server logs.\nerror.bad.request=Bad request: {0}\nerror.not.found=Resource not found.\nerror.loading=Taxonomy data is still loading. Please wait.\nerror.invalid.document=Invalid document name\nerror.forbidden=Access denied.\n\n# ── Search ──\nsearch.title=Search\nsearch.placeholder=Search\\u2026\nsearch.btn.search=Search\nsearch.fulltext=Full-text\nsearch.semantic=Semantic\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=No results found\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git status unavailable\ngit.branch.main=main\ngit.branch.draft=draft\nworkspace.sync.title=Workspace Sync\nworkspace.sync.success=Synchronization complete\nworkspace.sync.failed=Synchronization failed\nworkspace.merge.title=Merge Resolution\nworkspace.merge.success=Merge successful\nworkspace.merge.conflict=Merge conflict detected\n\n# ── Coverage / Quality ──\ncoverage.title=Coverage Dashboard\ncoverage.no.data=No coverage data available\nquality.title=Quality Assessment\nquality.no.data=No quality data available\n\n# ── Onboarding ──\nonboarding.welcome=Welcome to Taxonomy Architecture Analyzer\nonboarding.skip=Skip Tour\n\n# ── About ──\nabout.title=About\nabout.version=Version\nabout.license=License\n\n# ── Operation results ──\noperation.success=Operation completed successfully\noperation.failed=Operation failed: {0}\n\n# ── Language selector ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Language\n\n# ── Change password ──\npassword.change.title=Change Password\npassword.current=Current Password\npassword.new=New Password\npassword.confirm=Confirm New Password\npassword.min.length=Minimum 8 characters.\npassword.btn.change=Change Password\npassword.back=\\u2190 Back to Application\n\n# ── Context bar ──\ncontext.branch=Branch\ncontext.mode.readonly=Read-only\ncontext.mode.readwrite=Read/Write\n\n# ── Scoring ──\nscoring.title=Scoring\nscoring.legend=Match Legend\nscoring.interactive=Interactive Mode\nscoring.stale.warning=Results may be stale\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Import\nimport.file.label=Select file\n\n# ── Variants ──\nvariants.title=Variants\nvariants.create=Create Variant\nvariants.delete=Delete Variant\nvariants.delete.confirm=Are you sure you want to delete this variant?\nvariants.browse=Browse Variants\n\n# ── Browse: LLM log ──\nbrowse.llm.log.empty=No LLM calls yet. Run an analysis to see LLM communication details.\n\n# ── Browse: Import/Export ──\nbrowse.import.failed=\\u274C Import failed: {0}\nbrowse.import.loaded=\\u2705 Loaded analysis: {0} node(s) scored.\nbrowse.report.export.failed=Report export failed: {0}\n\n# ── Browse: Manual scoring ──\nbrowse.manual.scoring=Manual Scoring\nbrowse.manual.enter.text=Please enter a requirement text (used as label for export).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manual Mode: Set scores (0\\u2013100) on any node, then click \"Apply Manual Scores\".\nbrowse.manual.score.title=Set score manually (no AI)\nbrowse.manual.score.prompt=Enter score (0-100) for {0}:\nbrowse.manual.score.input.title=Score for {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Apply Manual Scores\nbrowse.manual.no.scores=No scores entered. Set at least one score > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manual scores applied: {0} node(s) scored. You can now export or generate an Architecture View.\nbrowse.manual.reason=Manually assigned\n\n# ── Browse: AI status ──\nbrowse.ai.using=Using: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 AI: {0}\nbrowse.ai.badge.available.title=AI is available ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 AI: Ready\nbrowse.ai.badge.ready.title=AI is available\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 AI: Unavailable\nbrowse.ai.badge.unavailable.title=AI is not available \\u2014 no LLM API key configured\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F AI analysis is not available \\u2014 no LLM API key is configured. Set one of the following environment variables: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY. You can still use LOCAL_ONNX or Manual Scoring.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F AI: Unknown\nbrowse.ai.badge.unknown.title=AI status could not be determined\n\n# ── Browse: Diagnostics ──\nbrowse.diagnostics.auth.required=Admin authentication required.\nbrowse.diagnostics.configured=Configured\nbrowse.diagnostics.not.configured=Not configured\nbrowse.diagnostics.success=Success\nbrowse.diagnostics.failed.label=Failed\nbrowse.diagnostics.no.calls=No calls yet\nbrowse.diagnostics.last.error=Last error:\nbrowse.diagnostics.provider=Provider\nbrowse.diagnostics.api.key=API Key\nbrowse.diagnostics.last.call=Last call\nbrowse.diagnostics.stats=Stats\nbrowse.diagnostics.server.time=Server time\nbrowse.diagnostics.load.failed=Failed to load diagnostics: {0}\n\n# ── Browse: Test connection ──\nbrowse.test.testing=\\u23F3 Testing\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Test connection error: {0}\nbrowse.test.success=\\u2705 Test connection successful via {0}.\nbrowse.test.failed=\\u274C Test connection failed: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Test Connection\n\n# ── Browse: Loading ──\nbrowse.loading.message=\\u23F3 Taxonomy data is loading\\u2026 This takes about 1\\u20132 minutes on first start. Please wait.\nbrowse.loading.wait=Waiting for taxonomy data to finish loading\\u2026\nbrowse.analyze.btn.title=Analyze the business requirement text against the taxonomy using the configured AI/LLM provider\nbrowse.load.failed=Failed to load taxonomy: {0}\n\n# ── Browse: Stale results ──\nbrowse.stale.warning=\\u26A0\\uFE0F Business text has changed \\u2014 previous results are no longer valid.\nbrowse.stale.reset=\\uD83D\\uDD04 Reset Results\n\n# ── Browse: Admin mode ──\nbrowse.admin.active.title=Admin mode active \\u2014 click to lock\nbrowse.admin.active.aria=Admin mode \\u2014 unlocked. Click to lock.\nbrowse.admin.locked.title=Click to unlock admin mode\nbrowse.admin.locked.aria=Admin mode \\u2014 locked. Click to unlock.\n\n# ── Browse: Node labels ──\nbrowse.node.score=Score: {0} percent\nbrowse.node.reason=Reason: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Request Justification\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Propose Relations\nbrowse.btn.propose.relations.title=Generate relation proposals for {0}\nbrowse.btn.propose.relations.aria=Propose relations for {0}\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Explore upstream/downstream dependencies and failure impact for {0}\nbrowse.btn.graph.aria=Open graph explorer for {0}\nbrowse.btn.similar=\\uD83D\\uDD0D Similar\nbrowse.btn.similar.title=Find semantically similar nodes to {0}\nbrowse.btn.similar.aria=Find similar nodes to {0}\n\n# ── Browse: Interactive evaluation ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM issue for {0}: {1}\nbrowse.eval.failed=Failed to evaluate {0}: {1}\n\n# ── Browse: Proposals ──\nbrowse.proposals.loading=Loading proposals\\u2026\nbrowse.proposals.load.failed=Failed to load proposals: {0}\nbrowse.proposals.none=No proposals found.\nbrowse.proposals.selected={0} selected\nbrowse.proposals.accept.selected=\\u2705 Accept Selected\nbrowse.proposals.reject.selected=\\u274C Reject Selected\nbrowse.proposals.select.all=Select all\nbrowse.proposals.table.source=Source\nbrowse.proposals.table.target=Target\nbrowse.proposals.table.type=Type\nbrowse.proposals.table.confidence=Confidence\nbrowse.proposals.table.rationale=Rationale\nbrowse.proposals.table.actions=Actions\nbrowse.proposals.accepted=\\u2705 {0} proposal(s) accepted.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected.\nbrowse.proposals.bulk.failed=\\u274C Bulk action failed: {0}\nbrowse.proposals.accept.success=\\u2705 Proposal accepted and relation created.\nbrowse.proposals.accept.failed=\\u274C Failed to accept proposal: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Proposal rejected.\nbrowse.proposals.reject.failed=\\u274C Failed to reject proposal: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} proposal(s) accepted\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} proposal(s) rejected\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F Undo\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} proposal(s) reverted to pending.\nbrowse.proposals.undo.failed=\\u274C Undo failed: {0}\nbrowse.proposals.generated=\\u2705 Generated {0} proposal(s) for {1} ({2}).\nbrowse.proposals.generate.failed=\\u274C Failed to generate proposals: {0}\nbrowse.proposals.pending={0} pending\n\n# ── Browse: Prompt editor ──\nbrowse.prompt.load.failed=Failed to load prompt templates.\nbrowse.prompt.saved=\\u2705 Template saved.\nbrowse.prompt.save.failed=\\u274C Save failed: {0}\nbrowse.prompt.reset.success=Reset to default.\nbrowse.prompt.reset.failed=\\u274C Reset failed: {0}\nbrowse.prompt.load.template.failed=Failed to load template for {0}\n\n# ── Analyze: Panel messages ──\nanalyze.panel.analyzing=Analyzing\\u2026\nanalyze.scores.required=Please run an analysis first to get scores.\n\n# ── Analyze: Gap analysis ──\nanalyze.gap.failed=Gap analysis failed: {0}\nanalyze.gap.anchors=Anchors: {0}\nanalyze.gap.gaps=Gaps: {0}\nanalyze.gap.missing.relations=\\u274C Missing Relations\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Coverage Gaps\nanalyze.gap.no.gaps=\\u2705 No gaps detected \\u2014 architecture coverage is complete for the analyzed nodes.\n\n# ── Analyze: Pattern detection ──\nanalyze.patterns.failed=Pattern detection failed: {0}\nanalyze.patterns.complete=Complete Patterns: {0}\nanalyze.patterns.incomplete.count=Incomplete: {0}\nanalyze.patterns.coverage=Coverage: {0}\nanalyze.patterns.complete.heading=\\u2705 Complete Patterns\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Incomplete Patterns\nanalyze.patterns.none=No patterns detected for the current scores.\n\n# ── Analyze: Recommendation ──\nanalyze.recommendation.failed=Recommendation failed: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Confidence: {0}%\nanalyze.recommendation.confirmed=Confirmed: {0}\nanalyze.recommendation.proposed=Proposed: {0}\nanalyze.recommendation.relations.count=Relations: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Reasoning:\nanalyze.recommendation.confirmed.heading=\\u2705 Confirmed Elements\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Proposed Elements\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Suggested Relations\n\n# ── Analyze: Table headers ──\nanalyze.table.source.node=Source Node\nanalyze.table.source.root=Source Root\nanalyze.table.expected.relation=Expected Relation\nanalyze.table.expected.target=Expected Target\nanalyze.table.description=Description\nanalyze.table.node=Node\nanalyze.table.root=Root\nanalyze.table.pattern=Pattern\nanalyze.table.missing=Missing\nanalyze.table.score=Score\nanalyze.table.gap=Gap\nanalyze.table.source=Source\nanalyze.table.target=Target\nanalyze.table.type=Type\nanalyze.table.reasoning=Reasoning\nanalyze.table.code=Code\nanalyze.table.title=Title\nanalyze.table.sheet=Sheet\nanalyze.table.relevance=Relevance\nanalyze.table.hop=Hop\nanalyze.table.requirements=Requirements\nanalyze.table.none=none\n\n# ── Analyze: Graph / Failure impact ──\nanalyze.graph.enter.code=Please enter a node code.\nanalyze.graph.enriched.analyzing=Analyzing enriched failure impact\\u2026\nanalyze.graph.enriched.failed=Enriched failure impact failed: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Failed: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direct: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirect: {0}\nanalyze.graph.total=Total: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risk: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Affected Requirements ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Directly Affected (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirectly Affected (Hop 2+)\n\n# ── Analyze: ArchiMate import ──\nanalyze.import.importing=Importing {0}\\u2026\nanalyze.import.success=\\u2705 Imported: {0} elements, {1} relations\nanalyze.import.failed=\\u274C Import failed: {0}\n\n# ── Analyze: Copilot ──\nanalyze.copilot.enter.requirement=Please enter a business requirement first.\nanalyze.copilot.step1=Step 1/4: Analyzing requirement\\u2026\nanalyze.copilot.cannot.start=Cannot start analysis. Please check AI status.\nanalyze.copilot.timeout=Analysis timed out. Please try analyzing manually first, then use the Copilot.\nanalyze.copilot.step2=Step 2/4: Running gap analysis\\u2026\nanalyze.copilot.step3=Step 3/4: Detecting patterns\\u2026\nanalyze.copilot.step4=Step 4/4: Generating recommendation\\u2026\nanalyze.copilot.failed=Copilot flow failed: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analysis Complete\nanalyze.copilot.gaps={0} Gap(s)\nanalyze.copilot.anchors.analyzed={0} anchors analyzed\nanalyze.copilot.patterns={0}% Patterns\nanalyze.copilot.patterns.complete={0} complete\nanalyze.copilot.confidence={0}% Confidence\nanalyze.copilot.proposals={0} proposals\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scroll down for detailed results in the Gap Analysis, Pattern Detection, and Recommendation panels.\n"}}, "taxonomy-app/src/main/resources/application.properties": {"deddbc3527772934cd5a91ae42d4b435ebd9d8b8": {"t": 1785745403.3291602, "n": 13025, "h": "f2d368d14ba507a0", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n# Persistent deployments reuse an existing taxonomy catalogue by default. Set\n# TAXONOMY_INIT_RELOAD_EXISTING=true only for an intentional destructive catalogue refresh.\ntaxonomy.init.reload-existing=${TAXONOMY_INIT_RELOAD_EXISTING:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# Flyway is enabled only by database profiles with released Core migrations.\n# Legacy adoption is a one-time, fail-closed operator action after backup/preflight.\nspring.flyway.enabled=false\ntaxonomy.jgit-storage.legacy-adoption=${TAXONOMY_JGIT_STORAGE_LEGACY_ADOPTION:false}\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, CUSTOM_OPENAI, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys or a complete\n# CUSTOM_LLM_URL + CUSTOM_LLM_MODEL configuration.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\nllm.mock=${LLM_MOCK:false}\n\n# ── LLM Record/Replay (for deterministic test recordings) ─────────────────────\n# llm.record=true → real API calls are made AND recorded for future replay\n# llm.replay=true → previously recorded responses are replayed (no real API call)\n# llm.replay.fallback=live → when replaying and no recording exists, fall through to\n# the real API and record the result\n# llm.prune=true → mark recordings unused in the current run as stale\n# llm.prune.delete=true → delete stale recordings\nllm.record=${LLM_RECORD:false}\nllm.replay=${LLM_REPLAY:false}\nllm.replay.fallback=${LLM_REPLAY_FALLBACK:error}\nllm.prune=${LLM_PRUNE:false}\nllm.prune.delete=${LLM_PRUNE_DELETE:false}\nllm.recordings.dir=${LLM_RECORDINGS_DIR:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# Operator-configured OpenAI Chat Completions endpoint. URL and model are required\n# when LLM_PROVIDER=CUSTOM_OPENAI; the API key is optional for trusted local servers.\n# Examples: Ollama /v1/chat/completions, vLLM /v1/chat/completions, LocalAI /v1/chat/completions.\ncustom.llm.url=${CUSTOM_LLM_URL:}\ncustom.llm.model=${CUSTOM_LLM_MODEL:}\ncustom.llm.api.key=${CUSTOM_LLM_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = auto-download from HuggingFace\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: HuggingFace model URL (e.g. https://huggingface.co/BAAI/bge-small-en-v1.5)\n# or local path to a directory containing model.onnx + tokenizer.json + serving.properties\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:https://huggingface.co/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization: lazy initialization ───────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n# Synchronous indexing: guarantees index changes are visible to readers immediately\n# after the transaction commits. Safe for local-heap (in-memory) dev/test usage.\n# Production overrides this to write-sync for better throughput.\nspring.jpa.properties.hibernate.search.indexing.plan.synchronization.strategy=sync\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info and prometheus endpoints over HTTP.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=@project.version@\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# Application display version — injected from pom.xml via Maven resource filtering\napp.display-version=@project.version@\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── Keycloak/OIDC Mode Defaults ──────────────────────────────────────────\n# Overridden in application-keycloak.properties when keycloak profile is active.\ntaxonomy.security.local-users-enabled=true\ntaxonomy.security.change-password-enabled=true\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n\n# ── Diagram Policy ──────────────────────────────────────────────────────────\n# Selection policy for architecture diagrams.\n# Values: defaultImpact | leafOnly | clustering | trace\ntaxonomy.diagram.policy=${TAXONOMY_DIAGRAM_POLICY:defaultImpact}\n\n# ── Git Bootstrap ───────────────────────────────────────────────────────────\n# Create an initial commit on the 'draft' branch at startup if it does not\n# already exist. Ensures the Git status bar, version history, and variant\n# features work from the first page load.\ntaxonomy.git.bootstrap=${TAXONOMY_GIT_BOOTSTRAP:true}\n"}, "0671fff58af14c4f887e5f998a19a3bd14607fe1": {"t": 1785752690.664667, "n": 13025, "h": "f2d368d14ba507a0", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n# Persistent deployments reuse an existing taxonomy catalogue by default. Set\n# TAXONOMY_INIT_RELOAD_EXISTING=true only for an intentional destructive catalogue refresh.\ntaxonomy.init.reload-existing=${TAXONOMY_INIT_RELOAD_EXISTING:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# Flyway is enabled only by database profiles with released Core migrations.\n# Legacy adoption is a one-time, fail-closed operator action after backup/preflight.\nspring.flyway.enabled=false\ntaxonomy.jgit-storage.legacy-adoption=${TAXONOMY_JGIT_STORAGE_LEGACY_ADOPTION:false}\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, CUSTOM_OPENAI, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys or a complete\n# CUSTOM_LLM_URL + CUSTOM_LLM_MODEL configuration.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\nllm.mock=${LLM_MOCK:false}\n\n# ── LLM Record/Replay (for deterministic test recordings) ─────────────────────\n# llm.record=true → real API calls are made AND recorded for future replay\n# llm.replay=true → previously recorded responses are replayed (no real API call)\n# llm.replay.fallback=live → when replaying and no recording exists, fall through to\n# the real API and record the result\n# llm.prune=true → mark recordings unused in the current run as stale\n# llm.prune.delete=true → delete stale recordings\nllm.record=${LLM_RECORD:false}\nllm.replay=${LLM_REPLAY:false}\nllm.replay.fallback=${LLM_REPLAY_FALLBACK:error}\nllm.prune=${LLM_PRUNE:false}\nllm.prune.delete=${LLM_PRUNE_DELETE:false}\nllm.recordings.dir=${LLM_RECORDINGS_DIR:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# Operator-configured OpenAI Chat Completions endpoint. URL and model are required\n# when LLM_PROVIDER=CUSTOM_OPENAI; the API key is optional for trusted local servers.\n# Examples: Ollama /v1/chat/completions, vLLM /v1/chat/completions, LocalAI /v1/chat/completions.\ncustom.llm.url=${CUSTOM_LLM_URL:}\ncustom.llm.model=${CUSTOM_LLM_MODEL:}\ncustom.llm.api.key=${CUSTOM_LLM_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = auto-download from HuggingFace\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: HuggingFace model URL (e.g. https://huggingface.co/BAAI/bge-small-en-v1.5)\n# or local path to a directory containing model.onnx + tokenizer.json + serving.properties\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:https://huggingface.co/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization: lazy initialization ───────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n# Synchronous indexing: guarantees index changes are visible to readers immediately\n# after the transaction commits. Safe for local-heap (in-memory) dev/test usage.\n# Production overrides this to write-sync for better throughput.\nspring.jpa.properties.hibernate.search.indexing.plan.synchronization.strategy=sync\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info and prometheus endpoints over HTTP.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=@project.version@\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# Application display version — injected from pom.xml via Maven resource filtering\napp.display-version=@project.version@\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── Keycloak/OIDC Mode Defaults ──────────────────────────────────────────\n# Overridden in application-keycloak.properties when keycloak profile is active.\ntaxonomy.security.local-users-enabled=true\ntaxonomy.security.change-password-enabled=true\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n\n# ── Diagram Policy ──────────────────────────────────────────────────────────\n# Selection policy for architecture diagrams.\n# Values: defaultImpact | leafOnly | clustering | trace\ntaxonomy.diagram.policy=${TAXONOMY_DIAGRAM_POLICY:defaultImpact}\n\n# ── Git Bootstrap ───────────────────────────────────────────────────────────\n# Create an initial commit on the 'draft' branch at startup if it does not\n# already exist. Ensures the Git status bar, version history, and variant\n# features work from the first page load.\ntaxonomy.git.bootstrap=${TAXONOMY_GIT_BOOTSTRAP:true}\n"}, "695cc795d00bad921c907aaa078fbf6bc1ea93d1": {"t": 1785752691.9870827, "n": 12667, "h": "9cd6bf3b14a73d56", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n# Persistent deployments reuse an existing taxonomy catalogue by default. Set\n# TAXONOMY_INIT_RELOAD_EXISTING=true only for an intentional destructive catalogue refresh.\ntaxonomy.init.reload-existing=${TAXONOMY_INIT_RELOAD_EXISTING:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# Flyway is enabled only by database profiles with released Core migrations.\n# Legacy adoption is a one-time, fail-closed operator action after backup/preflight.\nspring.flyway.enabled=false\ntaxonomy.jgit-storage.legacy-adoption=${TAXONOMY_JGIT_STORAGE_LEGACY_ADOPTION:false}\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# ── LLM Record/Replay (for deterministic test recordings) ─────────────────────\n# llm.record=true → real API calls are made AND recorded for future replay\n# llm.replay=true → previously recorded responses are replayed (no real API call)\n# llm.replay.fallback=live → when replaying and no recording exists, fall through to\n# the real API and record the result\n# llm.prune=true → mark recordings unused in the current run as stale\n# llm.prune.delete=true → delete stale recordings\nllm.record=${LLM_RECORD:false}\nllm.replay=${LLM_REPLAY:false}\nllm.replay.fallback=${LLM_REPLAY_FALLBACK:error}\nllm.prune=${LLM_PRUNE:false}\nllm.prune.delete=${LLM_PRUNE_DELETE:false}\nllm.recordings.dir=${LLM_RECORDINGS_DIR:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = auto-download from HuggingFace\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: HuggingFace model URL (e.g. https://huggingface.co/BAAI/bge-small-en-v1.5)\n# or local path to a directory containing model.onnx + tokenizer.json + serving.properties\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:https://huggingface.co/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n# Synchronous indexing: guarantees index changes are visible to readers immediately\n# after the transaction commits. Safe for local-heap (in-memory) dev/test usage.\n# Production overrides this to write-sync for better throughput.\nspring.jpa.properties.hibernate.search.indexing.plan.synchronization.strategy=sync\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=@project.version@\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# Application display version — injected from pom.xml via Maven resource filtering\napp.display-version=@project.version@\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── Keycloak/OIDC Mode Defaults ──────────────────────────────────────────\n# Overridden in application-keycloak.properties when keycloak profile is active.\ntaxonomy.security.local-users-enabled=true\ntaxonomy.security.change-password-enabled=true\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n\n# ── Diagram Policy ──────────────────────────────────────────────────────────\n# Selection policy for architecture diagrams.\n# Values: defaultImpact | leafOnly | clustering | trace\ntaxonomy.diagram.policy=${TAXONOMY_DIAGRAM_POLICY:defaultImpact}\n\n# ── Git Bootstrap ───────────────────────────────────────────────────────────\n# Create an initial commit on the 'draft' branch at startup if it does not\n# already exist. Ensures the Git status bar, version history, and variant\n# features work from the first page load.\ntaxonomy.git.bootstrap=${TAXONOMY_GIT_BOOTSTRAP:true}\n"}, "d762563ae43ef9b68be65f3524145410d813ce8e": {"t": 1785752693.432275, "n": 12390, "h": "59cf17132a595079", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n# Persistent deployments reuse an existing taxonomy catalogue by default. Set\n# TAXONOMY_INIT_RELOAD_EXISTING=true only for an intentional destructive catalogue refresh.\ntaxonomy.init.reload-existing=${TAXONOMY_INIT_RELOAD_EXISTING:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# ── LLM Record/Replay (for deterministic test recordings) ─────────────────────\n# llm.record=true → real API calls are made AND recorded for future replay\n# llm.replay=true → previously recorded responses are replayed (no real API call)\n# llm.replay.fallback=live → when replaying and no recording exists, fall through to\n# the real API and record the result\n# llm.prune=true → mark recordings unused in the current run as stale\n# llm.prune.delete=true → delete stale recordings\nllm.record=${LLM_RECORD:false}\nllm.replay=${LLM_REPLAY:false}\nllm.replay.fallback=${LLM_REPLAY_FALLBACK:error}\nllm.prune=${LLM_PRUNE:false}\nllm.prune.delete=${LLM_PRUNE_DELETE:false}\nllm.recordings.dir=${LLM_RECORDINGS_DIR:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = auto-download from HuggingFace\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: HuggingFace model URL (e.g. https://huggingface.co/BAAI/bge-small-en-v1.5)\n# or local path to a directory containing model.onnx + tokenizer.json + serving.properties\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:https://huggingface.co/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n# Synchronous indexing: guarantees index changes are visible to readers immediately\n# after the transaction commits. Safe for local-heap (in-memory) dev/test usage.\n# Production overrides this to write-sync for better throughput.\nspring.jpa.properties.hibernate.search.indexing.plan.synchronization.strategy=sync\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=@project.version@\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# Application display version — injected from pom.xml via Maven resource filtering\napp.display-version=@project.version@\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── Keycloak/OIDC Mode Defaults ──────────────────────────────────────────\n# Overridden in application-keycloak.properties when keycloak profile is active.\ntaxonomy.security.local-users-enabled=true\ntaxonomy.security.change-password-enabled=true\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n\n# ── Diagram Policy ──────────────────────────────────────────────────────────\n# Selection policy for architecture diagrams.\n# Values: defaultImpact | leafOnly | clustering | trace\ntaxonomy.diagram.policy=${TAXONOMY_DIAGRAM_POLICY:defaultImpact}\n\n# ── Git Bootstrap ───────────────────────────────────────────────────────────\n# Create an initial commit on the 'draft' branch at startup if it does not\n# already exist. Ensures the Git status bar, version history, and variant\n# features work from the first page load.\ntaxonomy.git.bootstrap=${TAXONOMY_GIT_BOOTSTRAP:true}"}, "66ad2533da73f5b1540b53400a85f2311de3bbab": {"t": 1785752695.760989, "n": 12151, "h": "61dc765d7bbd9d9e", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# ── LLM Record/Replay (for deterministic test recordings) ─────────────────────\n# llm.record=true → real API calls are made AND recorded for future replay\n# llm.replay=true → previously recorded responses are replayed (no real API call)\n# llm.replay.fallback=live → when replaying and no recording exists, fall through to\n# the real API and record the result\n# llm.prune=true → mark recordings unused in the current run as stale\n# llm.prune.delete=true → delete stale recordings\nllm.record=${LLM_RECORD:false}\nllm.replay=${LLM_REPLAY:false}\nllm.replay.fallback=${LLM_REPLAY_FALLBACK:error}\nllm.prune=${LLM_PRUNE:false}\nllm.prune.delete=${LLM_PRUNE_DELETE:false}\nllm.recordings.dir=${LLM_RECORDINGS_DIR:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = auto-download from HuggingFace\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: HuggingFace model URL (e.g. https://huggingface.co/BAAI/bge-small-en-v1.5)\n# or local path to a directory containing model.onnx + tokenizer.json + serving.properties\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:https://huggingface.co/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n# Synchronous indexing: guarantees index changes are visible to readers immediately\n# after the transaction commits. Safe for local-heap (in-memory) dev/test usage.\n# Production overrides this to write-sync for better throughput.\nspring.jpa.properties.hibernate.search.indexing.plan.synchronization.strategy=sync\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=@project.version@\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# Application display version — injected from pom.xml via Maven resource filtering\napp.display-version=@project.version@\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── Keycloak/OIDC Mode Defaults ──────────────────────────────────────────\n# Overridden in application-keycloak.properties when keycloak profile is active.\ntaxonomy.security.local-users-enabled=true\ntaxonomy.security.change-password-enabled=true\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n\n# ── Diagram Policy ──────────────────────────────────────────────────────────\n# Selection policy for architecture diagrams.\n# Values: defaultImpact | leafOnly | clustering | trace\ntaxonomy.diagram.policy=${TAXONOMY_DIAGRAM_POLICY:defaultImpact}\n\n# ── Git Bootstrap ───────────────────────────────────────────────────────────\n# Create an initial commit on the 'draft' branch at startup if it does not\n# already exist. Ensures the Git status bar, version history, and variant\n# features work from the first page load.\ntaxonomy.git.bootstrap=${TAXONOMY_GIT_BOOTSTRAP:true}"}, "cf17ff91dcf7f927ec44ac6825408e59ae8d3ecc": {"t": 1785752697.991337, "n": 11904, "h": "121c4130ef3e6362", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# ── LLM Record/Replay (for deterministic test recordings) ─────────────────────\n# llm.record=true → real API calls are made AND recorded for future replay\n# llm.replay=true → previously recorded responses are replayed (no real API call)\n# llm.replay.fallback=live → when replaying and no recording exists, fall through to\n# the real API and record the result\n# llm.prune=true → mark recordings unused in the current run as stale\n# llm.prune.delete=true → delete stale recordings\nllm.record=${LLM_RECORD:false}\nllm.replay=${LLM_REPLAY:false}\nllm.replay.fallback=${LLM_REPLAY_FALLBACK:error}\nllm.prune=${LLM_PRUNE:false}\nllm.prune.delete=${LLM_PRUNE_DELETE:false}\nllm.recordings.dir=${LLM_RECORDINGS_DIR:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = auto-download from HuggingFace\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: HuggingFace model URL (e.g. https://huggingface.co/BAAI/bge-small-en-v1.5)\n# or local path to a directory containing model.onnx + tokenizer.json + serving.properties\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:https://huggingface.co/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n# Synchronous indexing: guarantees index changes are visible to readers immediately\n# after the transaction commits. Safe for local-heap (in-memory) dev/test usage.\n# Production overrides this to write-sync for better throughput.\nspring.jpa.properties.hibernate.search.indexing.plan.synchronization.strategy=sync\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=@project.version@\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# Application display version — injected from pom.xml via Maven resource filtering\napp.display-version=@project.version@\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── Keycloak/OIDC Mode Defaults ──────────────────────────────────────────\n# Overridden in application-keycloak.properties when keycloak profile is active.\ntaxonomy.security.local-users-enabled=true\ntaxonomy.security.change-password-enabled=true\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n\n# ── Git Bootstrap ───────────────────────────────────────────────────────────\n# Create an initial commit on the 'draft' branch at startup if it does not\n# already exist. Ensures the Git status bar, version history, and variant\n# features work from the first page load.\ntaxonomy.git.bootstrap=${TAXONOMY_GIT_BOOTSTRAP:true}"}, "8b07d0694a9d1d480e95ca73917b57e87e1833bb": {"t": 1785752699.3388877, "n": 11164, "h": "02e1ba5a8bf521ba", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = auto-download from HuggingFace\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: HuggingFace model URL (e.g. https://huggingface.co/BAAI/bge-small-en-v1.5)\n# or local path to a directory containing model.onnx + tokenizer.json + serving.properties\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:https://huggingface.co/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n# Synchronous indexing: guarantees index changes are visible to readers immediately\n# after the transaction commits. Safe for local-heap (in-memory) dev/test usage.\n# Production overrides this to write-sync for better throughput.\nspring.jpa.properties.hibernate.search.indexing.plan.synchronization.strategy=sync\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=@project.version@\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# Application display version — injected from pom.xml via Maven resource filtering\napp.display-version=@project.version@\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── Keycloak/OIDC Mode Defaults ──────────────────────────────────────────\n# Overridden in application-keycloak.properties when keycloak profile is active.\ntaxonomy.security.local-users-enabled=true\ntaxonomy.security.change-password-enabled=true\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n\n# ── Git Bootstrap ───────────────────────────────────────────────────────────\n# Create an initial commit on the 'draft' branch at startup if it does not\n# already exist. Ensures the Git status bar, version history, and variant\n# features work from the first page load.\ntaxonomy.git.bootstrap=${TAXONOMY_GIT_BOOTSTRAP:true}"}, "110d0f3b27856ebc731026a26ed67f85c5579170": {"t": 1785752703.4139185, "n": 10851, "h": "67423e65d39d4b38", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = auto-download from HuggingFace\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: HuggingFace model URL (e.g. https://huggingface.co/BAAI/bge-small-en-v1.5)\n# or local path to a directory containing model.onnx + tokenizer.json + serving.properties\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:https://huggingface.co/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=@project.version@\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# Application display version — injected from pom.xml via Maven resource filtering\napp.display-version=@project.version@\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── Keycloak/OIDC Mode Defaults ──────────────────────────────────────────\n# Overridden in application-keycloak.properties when keycloak profile is active.\ntaxonomy.security.local-users-enabled=true\ntaxonomy.security.change-password-enabled=true\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n\n# ── Git Bootstrap ───────────────────────────────────────────────────────────\n# Create an initial commit on the 'draft' branch at startup if it does not\n# already exist. Ensures the Git status bar, version history, and variant\n# features work from the first page load.\ntaxonomy.git.bootstrap=${TAXONOMY_GIT_BOOTSTRAP:true}"}, "554dd2c4ca827ee54ff128ad14bf643d38f0c098": {"t": 1785752704.9329758, "n": 10715, "h": "f8e9eed741996237", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = DJL auto-download\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: DJL model URL or HuggingFace model name\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:djl://ai.djl.huggingface/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=@project.version@\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# Application display version — injected from pom.xml via Maven resource filtering\napp.display-version=@project.version@\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── Keycloak/OIDC Mode Defaults ──────────────────────────────────────────\n# Overridden in application-keycloak.properties when keycloak profile is active.\ntaxonomy.security.local-users-enabled=true\ntaxonomy.security.change-password-enabled=true\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n\n# ── Git Bootstrap ───────────────────────────────────────────────────────────\n# Create an initial commit on the 'draft' branch at startup if it does not\n# already exist. Ensures the Git status bar, version history, and variant\n# features work from the first page load.\ntaxonomy.git.bootstrap=${TAXONOMY_GIT_BOOTSTRAP:true}\n"}, "8a24fef79416f9993ea3cafe69ca8867dcce84e3": {"t": 1785752706.4478195, "n": 10590, "h": "ed0db4d33be134fe", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = DJL auto-download\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: DJL model URL or HuggingFace model name\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:djl://ai.djl.huggingface/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=1.0.0-SNAPSHOT\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── Keycloak/OIDC Mode Defaults ──────────────────────────────────────────\n# Overridden in application-keycloak.properties when keycloak profile is active.\ntaxonomy.security.local-users-enabled=true\ntaxonomy.security.change-password-enabled=true\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n\n# ── Git Bootstrap ───────────────────────────────────────────────────────────\n# Create an initial commit on the 'draft' branch at startup if it does not\n# already exist. Ensures the Git status bar, version history, and variant\n# features work from the first page load.\ntaxonomy.git.bootstrap=${TAXONOMY_GIT_BOOTSTRAP:true}\n"}, "fa80020e9517c4dfbbf76ba6c07f1f3fa5036014": {"t": 1785752707.8395817, "n": 10342, "h": "eeee71a4a8351007", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = DJL auto-download\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: DJL model URL or HuggingFace model name\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:djl://ai.djl.huggingface/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=1.0.0-SNAPSHOT\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n\n# ── Git Bootstrap ───────────────────────────────────────────────────────────\n# Create an initial commit on the 'draft' branch at startup if it does not\n# already exist. Ensures the Git status bar, version history, and variant\n# features work from the first page load.\ntaxonomy.git.bootstrap=${TAXONOMY_GIT_BOOTSTRAP:true}\n"}, "5cace13d5697fb4162dc58ee3e5745b2c138702e": {"t": 1785752709.458532, "n": 10016, "h": "950e732ae663048c", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = DJL auto-download\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: DJL model URL or HuggingFace model name\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:djl://ai.djl.huggingface/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD: set to false to prevent runtime model downloads (CI mode)\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:true}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=1.0.0-SNAPSHOT\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n"}, "9b144a3525b61a5a7e02a50a305406b8b014396d": {"t": 1785752711.358678, "n": 9854, "h": "8866f2dc1003c195", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (bge-small-en-v1.5 via DJL / ONNX Runtime) ───────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = DJL auto-download\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: DJL model URL or HuggingFace model name\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:djl://ai.djl.huggingface/BAAI/bge-small-en-v1.5}\n# TAXONOMY_EMBEDDING_QUERY_PREFIX: prefix prepended to query texts for asymmetric retrieval (BGE models)\nembedding.query.prefix=${TAXONOMY_EMBEDDING_QUERY_PREFIX:Represent this sentence for searching relevant passages: }\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=1.0.0-SNAPSHOT\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n"}, "53e4df4d68cd00d95842d0c1041c81078afb4b1c": {"t": 1785752712.6633275, "n": 9639, "h": "05dc63136e2523e5", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (all-MiniLM-L6-v2 via DJL / ONNX Runtime) ────────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = DJL auto-download\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: DJL model URL or HuggingFace model name\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:djl://ai.djl.huggingface.onnxruntime/all-MiniLM-L6-v2}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=1.0.0-SNAPSHOT\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── Login Brute-Force Protection ──────────────────────────────────────────\n# Rate-limits failed login attempts per IP. Enabled by default.\ntaxonomy.security.login-rate-limit.enabled=${TAXONOMY_LOGIN_RATE_LIMIT:true}\n# Maximum failed login attempts before lockout.\ntaxonomy.security.login-rate-limit.max-attempts=${TAXONOMY_LOGIN_MAX_ATTEMPTS:5}\n# Lockout duration in seconds after exceeding max attempts.\ntaxonomy.security.login-rate-limit.lockout-seconds=${TAXONOMY_LOGIN_LOCKOUT_SECONDS:300}\n\n# ── Password Policy ───────────────────────────────────────────────────────\n# When true, users with the default password are redirected to /change-password.\ntaxonomy.security.require-password-change=${TAXONOMY_REQUIRE_PASSWORD_CHANGE:false}\n\n# ── Swagger Access Control ────────────────────────────────────────────────\n# When true, Swagger UI is publicly accessible. Set to false in production.\ntaxonomy.security.swagger-public=${TAXONOMY_SWAGGER_PUBLIC:true}\n\n# ── Security Audit Logging ────────────────────────────────────────────────\n# When true, logs authentication events (login success/failure).\ntaxonomy.security.audit-logging=${TAXONOMY_AUDIT_LOGGING:false}\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n"}, "67b684bb6a2563dbcea41b94cd9e6c8f5bad8e39": {"t": 1785752714.2348175, "n": 8473, "h": "d2ccb983e1efe71e", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=oracle → Oracle Database\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties,\n# application-postgres.properties, and application-oracle.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (all-MiniLM-L6-v2 via DJL / ONNX Runtime) ────────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = DJL auto-download\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: DJL model URL or HuggingFace model name\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:djl://ai.djl.huggingface.onnxruntime/all-MiniLM-L6-v2}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=1.0.0-SNAPSHOT\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n"}, "05c6106a51a8518efb97ff6b7f55c5f719877d46": {"t": 1785752715.6588554, "n": 8386, "h": "e5de195c724f64fb", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties, and\n# application-postgres.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (all-MiniLM-L6-v2 via DJL / ONNX Runtime) ────────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = DJL auto-download\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: DJL model URL or HuggingFace model name\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:djl://ai.djl.huggingface.onnxruntime/all-MiniLM-L6-v2}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=1.0.0-SNAPSHOT\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n\n# ── LLM Settings ───────────────────────────────────────────────────────────\n# Maximum outgoing requests per minute to the LLM provider.\n# Gemini free tier: 5 RPM; paid tiers allow higher values.\ntaxonomy.llm.rpm=${TAXONOMY_LLM_RPM:5}\n# HTTP timeout for LLM API calls in seconds. A timeout error is returned instead of hanging.\ntaxonomy.llm.timeout-seconds=${TAXONOMY_LLM_TIMEOUT_SECONDS:30}\n# Minimum relevance score (0–100) for a node to appear in architecture views.\ntaxonomy.analysis.min-score=${TAXONOMY_ANALYSIS_MIN_SCORE:70}\n\n# ── DSL / JGit Settings ────────────────────────────────────────────────────\n# Default branch for new DSL commits.\ntaxonomy.dsl.default-branch=${TAXONOMY_DSL_DEFAULT_BRANCH:draft}\n# Project name used in exports and commit metadata.\ntaxonomy.dsl.project-name=${TAXONOMY_DSL_PROJECT_NAME:Taxonomy Architecture}\n# Auto-commit interval in seconds (0 = disabled).\ntaxonomy.dsl.auto-save-interval=${TAXONOMY_DSL_AUTO_SAVE_INTERVAL:0}\n# Remote Git repository URL to replicate/push to (empty = disabled).\ntaxonomy.dsl.remote-url=${TAXONOMY_DSL_REMOTE_URL:}\n# Authentication token for the remote Git repository (stored securely, displayed masked).\ntaxonomy.dsl.remote-token=${TAXONOMY_DSL_REMOTE_TOKEN:}\n# Automatically push to remote after each DSL commit.\ntaxonomy.dsl.remote-push-on-commit=${TAXONOMY_DSL_REMOTE_PUSH_ON_COMMIT:false}\n\n# ── Size Limits ─────────────────────────────────────────────────────────────\n# Maximum length of business requirement text input.\ntaxonomy.limits.max-business-text=${TAXONOMY_LIMITS_MAX_BUSINESS_TEXT:5000}\n# Maximum nodes in generated architecture views.\ntaxonomy.limits.max-architecture-nodes=${TAXONOMY_LIMITS_MAX_ARCHITECTURE_NODES:50}\n# Maximum nodes in export outputs.\ntaxonomy.limits.max-export-nodes=${TAXONOMY_LIMITS_MAX_EXPORT_NODES:200}\n"}, "c0c108ed07ed6cd66e2a30b8c51d3c2b15ed9235": {"t": 1785752717.6703944, "n": 6572, "h": "52d1583e6959097c", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=postgres → PostgreSQL\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties, application-mssql.properties, and\n# application-postgres.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (all-MiniLM-L6-v2 via DJL / ONNX Runtime) ────────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = DJL auto-download\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: DJL model URL or HuggingFace model name\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:djl://ai.djl.huggingface.onnxruntime/all-MiniLM-L6-v2}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=1.0.0-SNAPSHOT\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n"}, "998be6c9bc21c4b4be42a822e09505b2e37ddcd5": {"t": 1785752718.9729545, "n": 6485, "h": "ec21e050a3374be7", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# ── Default profile: hsqldb (in-memory, zero-config local dev) ────────────────\n# Activate a different profile for external databases:\n# SPRING_PROFILES_ACTIVE=mssql → Microsoft SQL Server\n# SPRING_PROFILES_ACTIVE=hsqldb → HSQLDB (explicit, same as default)\n# Database-specific settings (URL, driver, dialect, pool) live in\n# application-hsqldb.properties and application-mssql.properties.\nspring.profiles.default=hsqldb\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (all-MiniLM-L6-v2 via DJL / ONNX Runtime) ────────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = DJL auto-download\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: DJL model URL or HuggingFace model name\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:djl://ai.djl.huggingface.onnxruntime/all-MiniLM-L6-v2}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=1.0.0-SNAPSHOT\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n"}, "86aada36c1dc7d9c4276fc957b382dc0aa6b5bf8": {"t": 1785752722.0984316, "n": 7062, "h": "fe69175079568b24", "c": "spring.application.name=taxonomy-analyzer\nserver.port=${PORT:8080}\nserver.address=0.0.0.0\n\n# Async taxonomy initialization: set TAXONOMY_INIT_ASYNC=true to load taxonomy\n# in the background AFTER the server starts accepting connections (recommended for\n# Render and similar PaaS platforms to avoid \"No open ports detected\" timeouts).\n# Defaults to false for backward compatibility (synchronous, tests pass as-is).\ntaxonomy.init.async=${TAXONOMY_INIT_ASYNC:false}\n\n# HSQLDB — defaults to in-memory for local dev/test; override TAXONOMY_DATASOURCE_URL\n# for paid-tier Render or other disk-backed deployments, e.g.:\n# jdbc:hsqldb:file:/app/data/taxonomydb;hsqldb.default_table_type=cached;shutdown=true\n# Note: Render Free Tier does not support persistent disks; the mem: default is correct.\nspring.datasource.url=${TAXONOMY_DATASOURCE_URL:jdbc:hsqldb:mem:taxonomydb;DB_CLOSE_DELAY=-1}\nspring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver\n# SimpleDriverDataSource bypasses HikariCP entirely — no pool needed for in-process HSQLDB.\n# This eliminates connection-pool exhaustion and reduces memory overhead on constrained hosts.\nspring.datasource.type=org.springframework.jdbc.datasource.SimpleDriverDataSource\nspring.datasource.username=sa\nspring.datasource.password=\n\n# create = rebuild schema on each start (safe for in-memory default); override to\n# update for file-based deployments so data is not wiped on restart.\nspring.jpa.hibernate.ddl-auto=${TAXONOMY_DDL_AUTO:create}\nspring.jpa.show-sql=false\nspring.jpa.open-in-view=false\n# Explicit dialect required because SimpleDriverDataSource does not expose JDBC metadata\n# for automatic dialect detection by Hibernate 7.x\nspring.jpa.database-platform=org.hibernate.dialect.HSQLDialect\n\n# ── Memory optimization: JDBC batching ────────────────────────────────────────\nspring.jpa.properties.hibernate.jdbc.batch_size=50\nspring.jpa.properties.hibernate.order_inserts=true\nspring.jpa.properties.hibernate.order_updates=true\n\n# LLM provider: GEMINI, OPENAI, DEEPSEEK, QWEN, LLAMA, MISTRAL, LOCAL_ONNX\n# If not set, the provider is auto-detected from available API keys.\n# LOCAL_ONNX requires no API key – the model is downloaded on first use via DJL.\nllm.provider=${LLM_PROVIDER:}\n\n# API keys — set via environment variables or here\ngemini.api.key=${GEMINI_API_KEY:}\nopenai.api.key=${OPENAI_API_KEY:}\ndeepseek.api.key=${DEEPSEEK_API_KEY:}\nqwen.api.key=${DASHSCOPE_API_KEY:}\nllama.api.key=${LLAMA_API_KEY:}\nmistral.api.key=${MISTRAL_API_KEY:}\n\n# ── Local Embedding (all-MiniLM-L6-v2 via DJL / ONNX Runtime) ────────────────\n# TAXONOMY_EMBEDDING_ENABLED: set to false to disable embedding and semantic search globally\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:true}\n# TAXONOMY_EMBEDDING_MODEL_DIR: path to a pre-downloaded model directory; empty = DJL auto-download\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# TAXONOMY_EMBEDDING_MODEL_NAME: DJL model URL or HuggingFace model name\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:djl://ai.djl.huggingface.onnxruntime/all-MiniLM-L6-v2}\n\n# Admin auth token — set via environment variable ADMIN_PASSWORD to enable admin-only protection\n# If not set, all panels are visible (backward compatible)\nadmin.token=${ADMIN_PASSWORD:}\n\n# ── Startup optimization ──────────────────────────────────────────────────\n# Lazy bean initialization: only create beans when first accessed.\n# TaxonomyService is annotated @Lazy(false) to remain eagerly initialized,\n# preserving the @PostConstruct and @EventListener(ApplicationReadyEvent) behaviour.\n# All other beans benefit from deferred creation, which reduces startup time.\nspring.main.lazy-initialization=${TAXONOMY_LAZY_INIT:true}\n\n# Disable JMX to save startup time and memory\nspring.jmx.enabled=false\n\n# Disable auto-configurations that are not needed\nspring.autoconfigure.exclude=\\\n org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\\\n org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration\n\n# Thymeleaf — cache templates in production; set TAXONOMY_THYMELEAF_CACHE=false for local dev\nspring.thymeleaf.cache=${TAXONOMY_THYMELEAF_CACHE:true}\n\n# ── Hibernate Statistics ───────────────────────────────────────────────────\n# Enables Hibernate ORM statistics (sessions, queries, entities, cache).\n# Micrometer auto-publishes these as hibernate.* metrics in /actuator/prometheus.\nspring.jpa.properties.hibernate.generate_statistics=true\n\n# ── Hibernate Search (Lucene backend) ────────────────────────────────────────\n# Defaults to in-memory heap (fast, no I/O) for local dev/test.\n# Override TAXONOMY_SEARCH_DIRECTORY_TYPE=local-filesystem (and optionally\n# TAXONOMY_SEARCH_DIRECTORY_ROOT) for production disk-backed deployments.\nspring.jpa.properties.hibernate.search.enabled=true\nspring.jpa.properties.hibernate.search.backend.type=lucene\nspring.jpa.properties.hibernate.search.backend.lucene_version=9.12.3\nspring.jpa.properties.hibernate.search.backend.directory.type=${TAXONOMY_SEARCH_DIRECTORY_TYPE:local-heap}\nspring.jpa.properties.hibernate.search.backend.directory.root=${TAXONOMY_SEARCH_DIRECTORY_ROOT:/app/data/lucene-index}\nspring.jpa.properties.hibernate.search.backend.analysis.configurer=bean:hibernateSearchAnalysisConfigurer\n\n# Suppress HSEARCH000568 warning about directory.root being unused when directory.type=local-heap\nspring.jpa.properties.hibernate.search.configuration_property_checking.strategy=ignore\n\n# ── Spring Boot Actuator ───────────────────────────────────────────────────\n# Expose health, metrics, info, and prometheus endpoints over HTTP.\n# JMX is not available on Render Free Tier; these HTTP endpoints are the\n# modern replacement for JConsole / VisualVM monitoring.\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.show-details=when-authorized\nmanagement.endpoint.health.show-components=when-authorized\nmanagement.endpoint.prometheus.enabled=true\n\n# Health endpoint probes for Kubernetes-style readiness/liveness (also works with Render)\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\n\n# Include useful info in /actuator/info\nmanagement.info.env.enabled=true\nmanagement.info.java.enabled=true\nmanagement.info.os.enabled=true\ninfo.app.name=${spring.application.name}\ninfo.app.version=1.0.0-SNAPSHOT\ninfo.app.description=Taxonomy Architecture Analyzer\n\n# ── SpringDoc / Swagger UI ─────────────────────────────────────────────────\n# Enabled by default for development; set TAXONOMY_SPRINGDOC_ENABLED=false\n# in production to disable the /v3/api-docs and /swagger-ui.html endpoints.\nspringdoc.api-docs.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\nspringdoc.swagger-ui.enabled=${TAXONOMY_SPRINGDOC_ENABLED:true}\n\n# ── Rate Limiting ──────────────────────────────────────────────────────────\n# Maximum LLM-backed API requests per IP per minute.\n# Set to 0 to disable. Protects against Gemini/OpenAI quota exhaustion.\ntaxonomy.rate-limit.per-minute=${TAXONOMY_RATE_LIMIT_PER_MINUTE:10}\n"}}, "taxonomy-app/src/main/resources/i18n/messages_de.properties": {"deddbc3527772934cd5a91ae42d4b435ebd9d8b8": {"t": 1785745404.1966894, "n": 84478, "h": "91414352258486d8", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DECISION_PIPELINE=Entscheidungspipeline\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.section.diagram=\\uD83D\\uDCCA Diagramm-Konfiguration\npreferences.diagram.policy=Diagramm-Auswahlrichtlinie\npreferences.diagram.policy.impact=Impact (Standard)\npreferences.diagram.policy.leafonly=Nur Bl\\u00E4tter (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (vollst\\u00E4ndige Hierarchie)\npreferences.diagram.policy.help=Steuert, welche Knoten und Kanten in Architekturdiagrammen angezeigt werden.\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 12 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.limited=\\uD83D\\uDFE1 KI: EINGESCHR\\u00C4NKT ({0})\nbrowse.ai.badge.limited.title=KI ist eingeschr\\u00E4nkt \\u2014 nur lokale Einbettung ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Konformit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n\n# ── Mermaid-Diagrammbeschriftungen (i18n) ─────────────────\nmermaid.layer.capabilities=F\\u00e4higkeiten\nmermaid.layer.business.processes=Gesch\\u00e4ftsprozesse\nmermaid.layer.business.roles=Gesch\\u00e4ftsrollen\nmermaid.layer.services=Dienste\nmermaid.layer.coi.services=COI-Dienste\nmermaid.layer.core.services=Kerndienste\nmermaid.layer.applications=Anwendungen\nmermaid.layer.user.applications=Benutzeranwendungen\nmermaid.layer.information.products=Informationsprodukte\nmermaid.layer.communications.services=Kommunikationsdienste\nmermaid.relation.realizes=realisiert\nmermaid.relation.supports=unterst\\u00fctzt\nmermaid.relation.uses=nutzt\nmermaid.relation.fulfills=erf\\u00fcllt\nmermaid.relation.depends.on=h\\u00e4ngt ab von\nmermaid.relation.produces=erzeugt\nmermaid.relation.consumes=konsumiert\nmermaid.relation.assigned.to=zugeordnet zu\nmermaid.relation.related.to=bezieht sich auf\nmermaid.relation.communicates.with=kommuniziert mit\nmermaid.marker.anchor=\\u2605\nmermaid.marker.hotspot=\\u26A0\nmermaid.showcase.layer.capabilities=\\uD83D\\uDD35 F\\u00e4higkeiten\nmermaid.showcase.layer.business.processes=\\uD83D\\uDFE2 Prozesse\nmermaid.showcase.layer.business.roles=\\uD83D\\uDFE2 Rollen\nmermaid.showcase.layer.services=\\uD83D\\uDFE0 Dienste\nmermaid.showcase.layer.coi.services=\\uD83D\\uDFE0 COI-Dienste\nmermaid.showcase.layer.core.services=\\uD83D\\uDFE0 Kerndienste\nmermaid.showcase.layer.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.user.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.information.products=\\uD83D\\uDD37 Infoprodukte\nmermaid.showcase.layer.communications.services=\\uD83D\\uDD34 Kommunikation\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Wirkungsbeziehungen\narchview.impact.relations.count={0}\narchview.trace.relations.title=Nachverfolgungsbeziehungen\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed-Kontextbeziehungen\narchview.impact.col.source=Quelle\narchview.impact.col.target=Ziel\narchview.impact.col.type=Typ\narchview.impact.col.relevance=Relevanz\narchview.impact.col.derived=Abgeleitet von\narchview.trace.col.source=Quelle\narchview.trace.col.target=Ziel\narchview.trace.col.type=Typ\narchview.trace.col.relevance=Relevanz\narchview.trace.col.hops=Spr\\u00fcnge\narchview.trace.col.reason=Begr\\u00fcndung\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direkter LLM-Treffer\nnode.origin.trace.intermediate=Scoring-Pfad (Zwischenknoten)\nnode.origin.propagated=Propagiert \\u00fcber Relation\nnode.origin.seed.context=Seed-Relation-Kontext\nnode.origin.enriched.leaf=Angereicherter Blattknoten\nnode.origin.impact.promoted=F\\u00fcr Impact hochgestuft\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomie-Seed\nrelation.origin.propagated.trace=Propagierte Nachverfolgung\nrelation.origin.impact.derived=Wirkungsabgeleitet\nrelation.origin.suggested.candidate=Vorgeschlagener Kandidat\nrelation.origin.llm.supported=LLM-gest\\u00fctzt\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Herkunft\narchview.col.depth=Tiefe\narchview.col.specificity=Spezifit\\u00e4t\narchview.col.scoring.path=Scoring-Pfad\narchview.col.llm.score=LLM-Score\narchview.col.impact=Wirkung\narchview.col.confidence=Konfidenz\narchview.col.derivation=Ableitung\n\n# ── Ansicht-Metadaten (generiert aus Diagramm-Richtlinie) ──\narchview.view.legend=Aktive Regeln: {0}\narchview.view.containment.hint=Containment: Einzelkind-Zwischenknoten zusammengefasst, Mehrfachkinder als Cluster\n\n# ── Richtlinientitel und Beschreibungen (i18n-Schl\\u00fcssel von DiagramViewMetadata) ──\narchview.policy.title.defaultImpact=Architektur-Wirkungsansicht\narchview.policy.title.leafOnly=Nur-Blatt-Pr\\u00e4sentationsansicht\narchview.policy.title.clustering=Gruppierte Wirkungsansicht\narchview.policy.title.trace=Scoring-Nachverfolgung\narchview.policy.desc.defaultImpact=Relevante Knoten mit bewertungsbasierter Filterung; Wurzeln und Ger\\u00fcst unterdr\\u00fcckt, Zwischenknoten gruppiert.\narchview.policy.desc.leafOnly=Zeigt nur die tiefsten Blattknoten; \\u00fcbergeordnete Zwischenknoten werden unterdr\\u00fcckt und Kanten umgeleitet.\narchview.policy.desc.clustering=Zwischenknoten werden zu visuellen Containern, die ihre Kinder gruppieren; Einzelkind-Zwischenknoten werden zusammengefasst.\narchview.policy.desc.trace=Vollst\\u00e4ndige Hierarchie f\\u00fcr Nachverfolgbarkeit erhalten \\u2014 nichts wird unterdr\\u00fcckt.\n\n# ── Aktive Regelbeschriftungen ──\narchview.rule.suppress.roots=Wurzelknoten unterdr\\u00fcckt\narchview.rule.suppress.scaffolding=Ger\\u00fcstknoten unterdr\\u00fcckt\narchview.rule.collapse.single.child=Einzelkind-Zwischenknoten zusammengefasst\narchview.rule.cluster.multi.child=Mehrkind-Zwischenknoten als Cluster\narchview.rule.leaf.only=Nur-Blatt-Modus\narchview.rule.min.relevance=Mindestrelevanz-Filter aktiv\n\n# ── Zusammenfassungsleiste KPIs ──\narchview.kpi.direct.matches=direkte Treffer\narchview.kpi.affected.elements=betroffene Elemente\narchview.kpi.relations=Beziehungen\narchview.kpi.layers=Ebenen\n\n# ── Abschnitts\\u00fcberschriften ──\narchview.section.impact=Architektur-Wirkung\narchview.section.trace=Scoring-Nachverfolgung\narchview.section.elements=Elemente\narchview.section.relations=Beziehungen\narchview.impact.elements.title=Wirkungselemente\narchview.trace.elements.title=Nachverfolgungselemente\n"}, "d762563ae43ef9b68be65f3524145410d813ce8e": {"t": 1785752693.124846, "n": 84478, "h": "91414352258486d8", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DECISION_PIPELINE=Entscheidungspipeline\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.section.diagram=\\uD83D\\uDCCA Diagramm-Konfiguration\npreferences.diagram.policy=Diagramm-Auswahlrichtlinie\npreferences.diagram.policy.impact=Impact (Standard)\npreferences.diagram.policy.leafonly=Nur Bl\\u00E4tter (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (vollst\\u00E4ndige Hierarchie)\npreferences.diagram.policy.help=Steuert, welche Knoten und Kanten in Architekturdiagrammen angezeigt werden.\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 12 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.limited=\\uD83D\\uDFE1 KI: EINGESCHR\\u00C4NKT ({0})\nbrowse.ai.badge.limited.title=KI ist eingeschr\\u00E4nkt \\u2014 nur lokale Einbettung ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Konformit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n\n# ── Mermaid-Diagrammbeschriftungen (i18n) ─────────────────\nmermaid.layer.capabilities=F\\u00e4higkeiten\nmermaid.layer.business.processes=Gesch\\u00e4ftsprozesse\nmermaid.layer.business.roles=Gesch\\u00e4ftsrollen\nmermaid.layer.services=Dienste\nmermaid.layer.coi.services=COI-Dienste\nmermaid.layer.core.services=Kerndienste\nmermaid.layer.applications=Anwendungen\nmermaid.layer.user.applications=Benutzeranwendungen\nmermaid.layer.information.products=Informationsprodukte\nmermaid.layer.communications.services=Kommunikationsdienste\nmermaid.relation.realizes=realisiert\nmermaid.relation.supports=unterst\\u00fctzt\nmermaid.relation.uses=nutzt\nmermaid.relation.fulfills=erf\\u00fcllt\nmermaid.relation.depends.on=h\\u00e4ngt ab von\nmermaid.relation.produces=erzeugt\nmermaid.relation.consumes=konsumiert\nmermaid.relation.assigned.to=zugeordnet zu\nmermaid.relation.related.to=bezieht sich auf\nmermaid.relation.communicates.with=kommuniziert mit\nmermaid.marker.anchor=\\u2605\nmermaid.marker.hotspot=\\u26A0\nmermaid.showcase.layer.capabilities=\\uD83D\\uDD35 F\\u00e4higkeiten\nmermaid.showcase.layer.business.processes=\\uD83D\\uDFE2 Prozesse\nmermaid.showcase.layer.business.roles=\\uD83D\\uDFE2 Rollen\nmermaid.showcase.layer.services=\\uD83D\\uDFE0 Dienste\nmermaid.showcase.layer.coi.services=\\uD83D\\uDFE0 COI-Dienste\nmermaid.showcase.layer.core.services=\\uD83D\\uDFE0 Kerndienste\nmermaid.showcase.layer.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.user.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.information.products=\\uD83D\\uDD37 Infoprodukte\nmermaid.showcase.layer.communications.services=\\uD83D\\uDD34 Kommunikation\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Wirkungsbeziehungen\narchview.impact.relations.count={0}\narchview.trace.relations.title=Nachverfolgungsbeziehungen\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed-Kontextbeziehungen\narchview.impact.col.source=Quelle\narchview.impact.col.target=Ziel\narchview.impact.col.type=Typ\narchview.impact.col.relevance=Relevanz\narchview.impact.col.derived=Abgeleitet von\narchview.trace.col.source=Quelle\narchview.trace.col.target=Ziel\narchview.trace.col.type=Typ\narchview.trace.col.relevance=Relevanz\narchview.trace.col.hops=Spr\\u00fcnge\narchview.trace.col.reason=Begr\\u00fcndung\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direkter LLM-Treffer\nnode.origin.trace.intermediate=Scoring-Pfad (Zwischenknoten)\nnode.origin.propagated=Propagiert \\u00fcber Relation\nnode.origin.seed.context=Seed-Relation-Kontext\nnode.origin.enriched.leaf=Angereicherter Blattknoten\nnode.origin.impact.promoted=F\\u00fcr Impact hochgestuft\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomie-Seed\nrelation.origin.propagated.trace=Propagierte Nachverfolgung\nrelation.origin.impact.derived=Wirkungsabgeleitet\nrelation.origin.suggested.candidate=Vorgeschlagener Kandidat\nrelation.origin.llm.supported=LLM-gest\\u00fctzt\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Herkunft\narchview.col.depth=Tiefe\narchview.col.specificity=Spezifit\\u00e4t\narchview.col.scoring.path=Scoring-Pfad\narchview.col.llm.score=LLM-Score\narchview.col.impact=Wirkung\narchview.col.confidence=Konfidenz\narchview.col.derivation=Ableitung\n\n# ── Ansicht-Metadaten (generiert aus Diagramm-Richtlinie) ──\narchview.view.legend=Aktive Regeln: {0}\narchview.view.containment.hint=Containment: Einzelkind-Zwischenknoten zusammengefasst, Mehrfachkinder als Cluster\n\n# ── Richtlinientitel und Beschreibungen (i18n-Schl\\u00fcssel von DiagramViewMetadata) ──\narchview.policy.title.defaultImpact=Architektur-Wirkungsansicht\narchview.policy.title.leafOnly=Nur-Blatt-Pr\\u00e4sentationsansicht\narchview.policy.title.clustering=Gruppierte Wirkungsansicht\narchview.policy.title.trace=Scoring-Nachverfolgung\narchview.policy.desc.defaultImpact=Relevante Knoten mit bewertungsbasierter Filterung; Wurzeln und Ger\\u00fcst unterdr\\u00fcckt, Zwischenknoten gruppiert.\narchview.policy.desc.leafOnly=Zeigt nur die tiefsten Blattknoten; \\u00fcbergeordnete Zwischenknoten werden unterdr\\u00fcckt und Kanten umgeleitet.\narchview.policy.desc.clustering=Zwischenknoten werden zu visuellen Containern, die ihre Kinder gruppieren; Einzelkind-Zwischenknoten werden zusammengefasst.\narchview.policy.desc.trace=Vollst\\u00e4ndige Hierarchie f\\u00fcr Nachverfolgbarkeit erhalten \\u2014 nichts wird unterdr\\u00fcckt.\n\n# ── Aktive Regelbeschriftungen ──\narchview.rule.suppress.roots=Wurzelknoten unterdr\\u00fcckt\narchview.rule.suppress.scaffolding=Ger\\u00fcstknoten unterdr\\u00fcckt\narchview.rule.collapse.single.child=Einzelkind-Zwischenknoten zusammengefasst\narchview.rule.cluster.multi.child=Mehrkind-Zwischenknoten als Cluster\narchview.rule.leaf.only=Nur-Blatt-Modus\narchview.rule.min.relevance=Mindestrelevanz-Filter aktiv\n\n# ── Zusammenfassungsleiste KPIs ──\narchview.kpi.direct.matches=direkte Treffer\narchview.kpi.affected.elements=betroffene Elemente\narchview.kpi.relations=Beziehungen\narchview.kpi.layers=Ebenen\n\n# ── Abschnitts\\u00fcberschriften ──\narchview.section.impact=Architektur-Wirkung\narchview.section.trace=Scoring-Nachverfolgung\narchview.section.elements=Elemente\narchview.section.relations=Beziehungen\narchview.impact.elements.title=Wirkungselemente\narchview.trace.elements.title=Nachverfolgungselemente\n"}, "c762d317f69736f685e93dc3f3c49694bf88d21e": {"t": 1785752694.632169, "n": 84477, "h": "cec3ca068c01da5f", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DECISION_PIPELINE=Entscheidungspipeline\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.section.diagram=\\uD83D\\uDCCA Diagramm-Konfiguration\npreferences.diagram.policy=Diagramm-Auswahlrichtlinie\npreferences.diagram.policy.impact=Impact (Standard)\npreferences.diagram.policy.leafonly=Nur Bl\\u00E4tter (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (vollst\\u00E4ndige Hierarchie)\npreferences.diagram.policy.help=Steuert, welche Knoten und Kanten in Architekturdiagrammen angezeigt werden.\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.limited=\\uD83D\\uDFE1 KI: EINGESCHR\\u00C4NKT ({0})\nbrowse.ai.badge.limited.title=KI ist eingeschr\\u00E4nkt \\u2014 nur lokale Einbettung ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Konformit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n\n# ── Mermaid-Diagrammbeschriftungen (i18n) ─────────────────\nmermaid.layer.capabilities=F\\u00e4higkeiten\nmermaid.layer.business.processes=Gesch\\u00e4ftsprozesse\nmermaid.layer.business.roles=Gesch\\u00e4ftsrollen\nmermaid.layer.services=Dienste\nmermaid.layer.coi.services=COI-Dienste\nmermaid.layer.core.services=Kerndienste\nmermaid.layer.applications=Anwendungen\nmermaid.layer.user.applications=Benutzeranwendungen\nmermaid.layer.information.products=Informationsprodukte\nmermaid.layer.communications.services=Kommunikationsdienste\nmermaid.relation.realizes=realisiert\nmermaid.relation.supports=unterst\\u00fctzt\nmermaid.relation.uses=nutzt\nmermaid.relation.fulfills=erf\\u00fcllt\nmermaid.relation.depends.on=h\\u00e4ngt ab von\nmermaid.relation.produces=erzeugt\nmermaid.relation.consumes=konsumiert\nmermaid.relation.assigned.to=zugeordnet zu\nmermaid.relation.related.to=bezieht sich auf\nmermaid.relation.communicates.with=kommuniziert mit\nmermaid.marker.anchor=\\u2605\nmermaid.marker.hotspot=\\u26A0\nmermaid.showcase.layer.capabilities=\\uD83D\\uDD35 F\\u00e4higkeiten\nmermaid.showcase.layer.business.processes=\\uD83D\\uDFE2 Prozesse\nmermaid.showcase.layer.business.roles=\\uD83D\\uDFE2 Rollen\nmermaid.showcase.layer.services=\\uD83D\\uDFE0 Dienste\nmermaid.showcase.layer.coi.services=\\uD83D\\uDFE0 COI-Dienste\nmermaid.showcase.layer.core.services=\\uD83D\\uDFE0 Kerndienste\nmermaid.showcase.layer.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.user.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.information.products=\\uD83D\\uDD37 Infoprodukte\nmermaid.showcase.layer.communications.services=\\uD83D\\uDD34 Kommunikation\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Wirkungsbeziehungen\narchview.impact.relations.count={0}\narchview.trace.relations.title=Nachverfolgungsbeziehungen\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed-Kontextbeziehungen\narchview.impact.col.source=Quelle\narchview.impact.col.target=Ziel\narchview.impact.col.type=Typ\narchview.impact.col.relevance=Relevanz\narchview.impact.col.derived=Abgeleitet von\narchview.trace.col.source=Quelle\narchview.trace.col.target=Ziel\narchview.trace.col.type=Typ\narchview.trace.col.relevance=Relevanz\narchview.trace.col.hops=Spr\\u00fcnge\narchview.trace.col.reason=Begr\\u00fcndung\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direkter LLM-Treffer\nnode.origin.trace.intermediate=Scoring-Pfad (Zwischenknoten)\nnode.origin.propagated=Propagiert \\u00fcber Relation\nnode.origin.seed.context=Seed-Relation-Kontext\nnode.origin.enriched.leaf=Angereicherter Blattknoten\nnode.origin.impact.promoted=F\\u00fcr Impact hochgestuft\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomie-Seed\nrelation.origin.propagated.trace=Propagierte Nachverfolgung\nrelation.origin.impact.derived=Wirkungsabgeleitet\nrelation.origin.suggested.candidate=Vorgeschlagener Kandidat\nrelation.origin.llm.supported=LLM-gest\\u00fctzt\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Herkunft\narchview.col.depth=Tiefe\narchview.col.specificity=Spezifit\\u00e4t\narchview.col.scoring.path=Scoring-Pfad\narchview.col.llm.score=LLM-Score\narchview.col.impact=Wirkung\narchview.col.confidence=Konfidenz\narchview.col.derivation=Ableitung\n\n# ── Ansicht-Metadaten (generiert aus Diagramm-Richtlinie) ──\narchview.view.legend=Aktive Regeln: {0}\narchview.view.containment.hint=Containment: Einzelkind-Zwischenknoten zusammengefasst, Mehrfachkinder als Cluster\n\n# ── Richtlinientitel und Beschreibungen (i18n-Schl\\u00fcssel von DiagramViewMetadata) ──\narchview.policy.title.defaultImpact=Architektur-Wirkungsansicht\narchview.policy.title.leafOnly=Nur-Blatt-Pr\\u00e4sentationsansicht\narchview.policy.title.clustering=Gruppierte Wirkungsansicht\narchview.policy.title.trace=Scoring-Nachverfolgung\narchview.policy.desc.defaultImpact=Relevante Knoten mit bewertungsbasierter Filterung; Wurzeln und Ger\\u00fcst unterdr\\u00fcckt, Zwischenknoten gruppiert.\narchview.policy.desc.leafOnly=Zeigt nur die tiefsten Blattknoten; \\u00fcbergeordnete Zwischenknoten werden unterdr\\u00fcckt und Kanten umgeleitet.\narchview.policy.desc.clustering=Zwischenknoten werden zu visuellen Containern, die ihre Kinder gruppieren; Einzelkind-Zwischenknoten werden zusammengefasst.\narchview.policy.desc.trace=Vollst\\u00e4ndige Hierarchie f\\u00fcr Nachverfolgbarkeit erhalten \\u2014 nichts wird unterdr\\u00fcckt.\n\n# ── Aktive Regelbeschriftungen ──\narchview.rule.suppress.roots=Wurzelknoten unterdr\\u00fcckt\narchview.rule.suppress.scaffolding=Ger\\u00fcstknoten unterdr\\u00fcckt\narchview.rule.collapse.single.child=Einzelkind-Zwischenknoten zusammengefasst\narchview.rule.cluster.multi.child=Mehrkind-Zwischenknoten als Cluster\narchview.rule.leaf.only=Nur-Blatt-Modus\narchview.rule.min.relevance=Mindestrelevanz-Filter aktiv\n\n# ── Zusammenfassungsleiste KPIs ──\narchview.kpi.direct.matches=direkte Treffer\narchview.kpi.affected.elements=betroffene Elemente\narchview.kpi.relations=Beziehungen\narchview.kpi.layers=Ebenen\n\n# ── Abschnitts\\u00fcberschriften ──\narchview.section.impact=Architektur-Wirkung\narchview.section.trace=Scoring-Nachverfolgung\narchview.section.elements=Elemente\narchview.section.relations=Beziehungen\narchview.impact.elements.title=Wirkungselemente\narchview.trace.elements.title=Nachverfolgungselemente\n"}, "421ee23a1bf845b5a620247a94cacf16c3b88a53": {"t": 1785752699.7139194, "n": 84481, "h": "f3286c7e848101b8", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DECISION_PIPELINE=Entscheidungspipeline\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.section.diagram=\\uD83D\\uDCCA Diagramm-Konfiguration\npreferences.diagram.policy=Diagramm-Auswahlrichtlinie\npreferences.diagram.policy.impact=Impact (Standard)\npreferences.diagram.policy.leafonly=Nur Bl\\u00E4tter (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (vollst\\u00E4ndige Hierarchie)\npreferences.diagram.policy.help=Steuert, welche Knoten und Kanten in Architekturdiagrammen angezeigt werden.\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.limited=\\uD83D\\uDFE1 KI: EINGESCHR\\u00C4NKT ({0})\nbrowse.ai.badge.limited.title=KI ist eingeschr\\u00E4nkt \\u2014 nur lokale Einbettung ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Konformit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n\n# ── Mermaid-Diagrammbeschriftungen (i18n) ─────────────────\nmermaid.layer.capabilities=F\\u00e4higkeiten\nmermaid.layer.business.processes=Gesch\\u00e4ftsprozesse\nmermaid.layer.business.roles=Gesch\\u00e4ftsrollen\nmermaid.layer.services=Dienste\nmermaid.layer.coi.services=COI-Dienste\nmermaid.layer.core.services=Kerndienste\nmermaid.layer.applications=Anwendungen\nmermaid.layer.user.applications=Benutzeranwendungen\nmermaid.layer.information.products=Informationsprodukte\nmermaid.layer.communications.services=Kommunikationsdienste\nmermaid.relation.realizes=realisiert\nmermaid.relation.supports=unterst\\u00fctzt\nmermaid.relation.uses=nutzt\nmermaid.relation.fulfills=erf\\u00fcllt\nmermaid.relation.depends.on=h\\u00e4ngt ab von\nmermaid.relation.produces=erzeugt\nmermaid.relation.consumes=konsumiert\nmermaid.relation.assigned.to=zugeordnet zu\nmermaid.relation.related.to=bezieht sich auf\nmermaid.relation.communicates.with=kommuniziert mit\nmermaid.marker.anchor=\\u2605\nmermaid.marker.hotspot=\\u26A0\nmermaid.showcase.layer.capabilities=\\uD83D\\uDD35 F\\u00e4higkeiten\nmermaid.showcase.layer.business.processes=\\uD83D\\uDFE2 Prozesse\nmermaid.showcase.layer.business.roles=\\uD83D\\uDFE2 Rollen\nmermaid.showcase.layer.services=\\uD83D\\uDFE0 Dienste\nmermaid.showcase.layer.coi.services=\\uD83D\\uDFE0 COI-Dienste\nmermaid.showcase.layer.core.services=\\uD83D\\uDFE0 Kerndienste\nmermaid.showcase.layer.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.user.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.information.products=\\uD83D\\uDD37 Infoprodukte\nmermaid.showcase.layer.communications.services=\\uD83D\\uDD34 Kommunikation\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Wirkungsbeziehungen\narchview.impact.relations.count={0}\narchview.trace.relations.title=Nachverfolgungsbeziehungen\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed-Kontextbeziehungen\narchview.impact.col.source=Quelle\narchview.impact.col.target=Ziel\narchview.impact.col.type=Typ\narchview.impact.col.relevance=Relevanz\narchview.impact.col.derived=Abgeleitet von\narchview.trace.col.source=Quelle\narchview.trace.col.target=Ziel\narchview.trace.col.type=Typ\narchview.trace.col.relevance=Relevanz\narchview.trace.col.hops=Spr\\u00fcnge\narchview.trace.col.reason=Begr\\u00fcndung\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direkter LLM-Treffer\nnode.origin.trace.intermediate=Scoring-Pfad (Zwischenknoten)\nnode.origin.propagated=Propagiert \\u00fcber Relation\nnode.origin.seed.context=Seed-Relation-Kontext\nnode.origin.enriched.leaf=Angereicherter Blattknoten\nnode.origin.impact.selected=F\\u00fcr Impact ausgew\\u00e4hlt\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomie-Seed\nrelation.origin.propagated.trace=Propagierte Nachverfolgung\nrelation.origin.impact.derived=Wirkungsabgeleitet\nrelation.origin.suggested.candidate=Vorgeschlagener Kandidat\nrelation.origin.llm.supported=LLM-gest\\u00fctzt\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Herkunft\narchview.col.depth=Tiefe\narchview.col.specificity=Spezifit\\u00e4t\narchview.col.scoring.path=Scoring-Pfad\narchview.col.llm.score=LLM-Score\narchview.col.impact=Wirkung\narchview.col.confidence=Konfidenz\narchview.col.derivation=Ableitung\n\n# ── Ansicht-Metadaten (generiert aus Diagramm-Richtlinie) ──\narchview.view.legend=Aktive Regeln: {0}\narchview.view.containment.hint=Containment: Einzelkind-Zwischenknoten zusammengefasst, Mehrfachkinder als Cluster\n\n# ── Richtlinientitel und Beschreibungen (i18n-Schl\\u00fcssel von DiagramViewMetadata) ──\narchview.policy.title.defaultImpact=Architektur-Wirkungsansicht\narchview.policy.title.leafOnly=Nur-Blatt-Pr\\u00e4sentationsansicht\narchview.policy.title.clustering=Gruppierte Wirkungsansicht\narchview.policy.title.trace=Scoring-Nachverfolgung\narchview.policy.desc.defaultImpact=Relevante Knoten mit bewertungsbasierter Filterung; Wurzeln und Ger\\u00fcst unterdr\\u00fcckt, Zwischenknoten gruppiert.\narchview.policy.desc.leafOnly=Zeigt nur die tiefsten Blattknoten; \\u00fcbergeordnete Zwischenknoten werden unterdr\\u00fcckt und Kanten umgeleitet.\narchview.policy.desc.clustering=Zwischenknoten werden zu visuellen Containern, die ihre Kinder gruppieren; Einzelkind-Zwischenknoten werden zusammengefasst.\narchview.policy.desc.trace=Vollst\\u00e4ndige Hierarchie f\\u00fcr Nachverfolgbarkeit erhalten \\u2014 nichts wird unterdr\\u00fcckt.\n\n# ── Aktive Regelbeschriftungen ──\narchview.rule.suppress.roots=Wurzelknoten unterdr\\u00fcckt\narchview.rule.suppress.scaffolding=Ger\\u00fcstknoten unterdr\\u00fcckt\narchview.rule.collapse.single.child=Einzelkind-Zwischenknoten zusammengefasst\narchview.rule.cluster.multi.child=Mehrkind-Zwischenknoten als Cluster\narchview.rule.leaf.only=Nur-Blatt-Modus\narchview.rule.min.relevance=Mindestrelevanz-Filter aktiv\n\n# ── Zusammenfassungsleiste KPIs ──\narchview.kpi.direct.matches=direkte Treffer\narchview.kpi.affected.elements=betroffene Elemente\narchview.kpi.relations=Beziehungen\narchview.kpi.layers=Ebenen\n\n# ── Abschnitts\\u00fcberschriften ──\narchview.section.impact=Architektur-Wirkung\narchview.section.trace=Scoring-Nachverfolgung\narchview.section.elements=Elemente\narchview.section.relations=Beziehungen\narchview.impact.elements.title=Wirkungselemente\narchview.trace.elements.title=Nachverfolgungselemente\n"}, "a9a6cd3f38e1db37e4ffef0b417123ab31e68cef": {"t": 1785752701.9116461, "n": 82385, "h": "46d52324cae63d36", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.section.diagram=\\uD83D\\uDCCA Diagramm-Konfiguration\npreferences.diagram.policy=Diagramm-Auswahlrichtlinie\npreferences.diagram.policy.impact=Impact (Standard)\npreferences.diagram.policy.leafonly=Nur Bl\\u00E4tter (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (vollst\\u00E4ndige Hierarchie)\npreferences.diagram.policy.help=Steuert, welche Knoten und Kanten in Architekturdiagrammen angezeigt werden.\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.limited=\\uD83D\\uDFE1 KI: EINGESCHR\\u00C4NKT ({0})\nbrowse.ai.badge.limited.title=KI ist eingeschr\\u00E4nkt \\u2014 nur lokale Einbettung ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Konformit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n\n# ── Mermaid-Diagrammbeschriftungen (i18n) ─────────────────\nmermaid.layer.capabilities=F\\u00e4higkeiten\nmermaid.layer.business.processes=Gesch\\u00e4ftsprozesse\nmermaid.layer.business.roles=Gesch\\u00e4ftsrollen\nmermaid.layer.services=Dienste\nmermaid.layer.coi.services=COI-Dienste\nmermaid.layer.core.services=Kerndienste\nmermaid.layer.applications=Anwendungen\nmermaid.layer.user.applications=Benutzeranwendungen\nmermaid.layer.information.products=Informationsprodukte\nmermaid.layer.communications.services=Kommunikationsdienste\nmermaid.relation.realizes=realisiert\nmermaid.relation.supports=unterst\\u00fctzt\nmermaid.relation.uses=nutzt\nmermaid.relation.fulfills=erf\\u00fcllt\nmermaid.relation.depends.on=h\\u00e4ngt ab von\nmermaid.relation.produces=erzeugt\nmermaid.relation.consumes=konsumiert\nmermaid.relation.assigned.to=zugeordnet zu\nmermaid.relation.related.to=bezieht sich auf\nmermaid.relation.communicates.with=kommuniziert mit\nmermaid.marker.anchor=\\u2605\nmermaid.marker.hotspot=\\u26A0\nmermaid.showcase.layer.capabilities=\\uD83D\\uDD35 F\\u00e4higkeiten\nmermaid.showcase.layer.business.processes=\\uD83D\\uDFE2 Prozesse\nmermaid.showcase.layer.business.roles=\\uD83D\\uDFE2 Rollen\nmermaid.showcase.layer.services=\\uD83D\\uDFE0 Dienste\nmermaid.showcase.layer.coi.services=\\uD83D\\uDFE0 COI-Dienste\nmermaid.showcase.layer.core.services=\\uD83D\\uDFE0 Kerndienste\nmermaid.showcase.layer.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.user.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.information.products=\\uD83D\\uDD37 Infoprodukte\nmermaid.showcase.layer.communications.services=\\uD83D\\uDD34 Kommunikation\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Wirkungsbeziehungen\narchview.impact.relations.count={0}\narchview.trace.relations.title=Nachverfolgungsbeziehungen\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed-Kontextbeziehungen\narchview.impact.col.source=Quelle\narchview.impact.col.target=Ziel\narchview.impact.col.type=Typ\narchview.impact.col.relevance=Relevanz\narchview.impact.col.derived=Abgeleitet von\narchview.trace.col.source=Quelle\narchview.trace.col.target=Ziel\narchview.trace.col.type=Typ\narchview.trace.col.relevance=Relevanz\narchview.trace.col.hops=Spr\\u00fcnge\narchview.trace.col.reason=Begr\\u00fcndung\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direkter LLM-Treffer\nnode.origin.trace.intermediate=Scoring-Pfad (Zwischenknoten)\nnode.origin.propagated=Propagiert \\u00fcber Relation\nnode.origin.seed.context=Seed-Relation-Kontext\nnode.origin.enriched.leaf=Angereicherter Blattknoten\nnode.origin.impact.selected=F\\u00fcr Impact ausgew\\u00e4hlt\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomie-Seed\nrelation.origin.propagated.trace=Propagierte Nachverfolgung\nrelation.origin.impact.derived=Wirkungsabgeleitet\nrelation.origin.suggested.candidate=Vorgeschlagener Kandidat\nrelation.origin.llm.supported=LLM-gest\\u00fctzt\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Herkunft\narchview.col.depth=Tiefe\narchview.col.specificity=Spezifit\\u00e4t\narchview.col.scoring.path=Scoring-Pfad\narchview.col.llm.score=LLM-Score\narchview.col.impact=Wirkung\narchview.col.confidence=Konfidenz\narchview.col.derivation=Ableitung\n"}, "66ad2533da73f5b1540b53400a85f2311de3bbab": {"t": 1785752703.9075456, "n": 82228, "h": "1b49a2e27ea8c9ba", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.section.diagram=\\uD83D\\uDCCA Diagramm-Konfiguration\npreferences.diagram.policy=Diagramm-Auswahlrichtlinie\npreferences.diagram.policy.impact=Impact (Standard)\npreferences.diagram.policy.leafonly=Nur Bl\\u00E4tter (Showcase)\npreferences.diagram.policy.clustering=Clustering\npreferences.diagram.policy.trace=Trace (vollst\\u00E4ndige Hierarchie)\npreferences.diagram.policy.help=Steuert, welche Knoten und Kanten in Architekturdiagrammen angezeigt werden.\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Konformit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n\n# ── Mermaid-Diagrammbeschriftungen (i18n) ─────────────────\nmermaid.layer.capabilities=F\\u00e4higkeiten\nmermaid.layer.business.processes=Gesch\\u00e4ftsprozesse\nmermaid.layer.business.roles=Gesch\\u00e4ftsrollen\nmermaid.layer.services=Dienste\nmermaid.layer.coi.services=COI-Dienste\nmermaid.layer.core.services=Kerndienste\nmermaid.layer.applications=Anwendungen\nmermaid.layer.user.applications=Benutzeranwendungen\nmermaid.layer.information.products=Informationsprodukte\nmermaid.layer.communications.services=Kommunikationsdienste\nmermaid.relation.realizes=realisiert\nmermaid.relation.supports=unterst\\u00fctzt\nmermaid.relation.uses=nutzt\nmermaid.relation.fulfills=erf\\u00fcllt\nmermaid.relation.depends.on=h\\u00e4ngt ab von\nmermaid.relation.produces=erzeugt\nmermaid.relation.consumes=konsumiert\nmermaid.relation.assigned.to=zugeordnet zu\nmermaid.relation.related.to=bezieht sich auf\nmermaid.relation.communicates.with=kommuniziert mit\nmermaid.marker.anchor=\\u2605\nmermaid.marker.hotspot=\\u26A0\nmermaid.showcase.layer.capabilities=\\uD83D\\uDD35 F\\u00e4higkeiten\nmermaid.showcase.layer.business.processes=\\uD83D\\uDFE2 Prozesse\nmermaid.showcase.layer.business.roles=\\uD83D\\uDFE2 Rollen\nmermaid.showcase.layer.services=\\uD83D\\uDFE0 Dienste\nmermaid.showcase.layer.coi.services=\\uD83D\\uDFE0 COI-Dienste\nmermaid.showcase.layer.core.services=\\uD83D\\uDFE0 Kerndienste\nmermaid.showcase.layer.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.user.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.information.products=\\uD83D\\uDD37 Infoprodukte\nmermaid.showcase.layer.communications.services=\\uD83D\\uDD34 Kommunikation\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Wirkungsbeziehungen\narchview.impact.relations.count={0}\narchview.trace.relations.title=Nachverfolgungsbeziehungen\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed-Kontextbeziehungen\narchview.impact.col.source=Quelle\narchview.impact.col.target=Ziel\narchview.impact.col.type=Typ\narchview.impact.col.relevance=Relevanz\narchview.impact.col.derived=Abgeleitet von\narchview.trace.col.source=Quelle\narchview.trace.col.target=Ziel\narchview.trace.col.type=Typ\narchview.trace.col.relevance=Relevanz\narchview.trace.col.hops=Spr\\u00fcnge\narchview.trace.col.reason=Begr\\u00fcndung\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direkter LLM-Treffer\nnode.origin.trace.intermediate=Scoring-Pfad (Zwischenknoten)\nnode.origin.propagated=Propagiert \\u00fcber Relation\nnode.origin.seed.context=Seed-Relation-Kontext\nnode.origin.enriched.leaf=Angereicherter Blattknoten\nnode.origin.impact.selected=F\\u00fcr Impact ausgew\\u00e4hlt\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomie-Seed\nrelation.origin.propagated.trace=Propagierte Nachverfolgung\nrelation.origin.impact.derived=Wirkungsabgeleitet\nrelation.origin.suggested.candidate=Vorgeschlagener Kandidat\nrelation.origin.llm.supported=LLM-gest\\u00fctzt\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Herkunft\narchview.col.depth=Tiefe\narchview.col.specificity=Spezifit\\u00e4t\narchview.col.scoring.path=Scoring-Pfad\narchview.col.llm.score=LLM-Score\narchview.col.impact=Wirkung\narchview.col.confidence=Konfidenz\narchview.col.derivation=Ableitung\n"}, "08b2399b1444f55e7253b4b48d57146c52dd3c8f": {"t": 1785752705.6939437, "n": 81766, "h": "8c8a1339bdc2501e", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Konformit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n\n# ── Mermaid-Diagrammbeschriftungen (i18n) ─────────────────\nmermaid.layer.capabilities=F\\u00e4higkeiten\nmermaid.layer.business.processes=Gesch\\u00e4ftsprozesse\nmermaid.layer.business.roles=Gesch\\u00e4ftsrollen\nmermaid.layer.services=Dienste\nmermaid.layer.coi.services=COI-Dienste\nmermaid.layer.core.services=Kerndienste\nmermaid.layer.applications=Anwendungen\nmermaid.layer.user.applications=Benutzeranwendungen\nmermaid.layer.information.products=Informationsprodukte\nmermaid.layer.communications.services=Kommunikationsdienste\nmermaid.relation.realizes=realisiert\nmermaid.relation.supports=unterst\\u00fctzt\nmermaid.relation.uses=nutzt\nmermaid.relation.fulfills=erf\\u00fcllt\nmermaid.relation.depends.on=h\\u00e4ngt ab von\nmermaid.relation.produces=erzeugt\nmermaid.relation.consumes=konsumiert\nmermaid.relation.assigned.to=zugeordnet zu\nmermaid.relation.related.to=bezieht sich auf\nmermaid.relation.communicates.with=kommuniziert mit\nmermaid.marker.anchor=\\u2605\nmermaid.marker.hotspot=\\u26A0\nmermaid.showcase.layer.capabilities=\\uD83D\\uDD35 F\\u00e4higkeiten\nmermaid.showcase.layer.business.processes=\\uD83D\\uDFE2 Prozesse\nmermaid.showcase.layer.business.roles=\\uD83D\\uDFE2 Rollen\nmermaid.showcase.layer.services=\\uD83D\\uDFE0 Dienste\nmermaid.showcase.layer.coi.services=\\uD83D\\uDFE0 COI-Dienste\nmermaid.showcase.layer.core.services=\\uD83D\\uDFE0 Kerndienste\nmermaid.showcase.layer.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.user.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.information.products=\\uD83D\\uDD37 Infoprodukte\nmermaid.showcase.layer.communications.services=\\uD83D\\uDD34 Kommunikation\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Wirkungsbeziehungen\narchview.impact.relations.count={0}\narchview.trace.relations.title=Nachverfolgungsbeziehungen\narchview.trace.relations.count={0}\narchview.seed.relations.title=Seed-Kontextbeziehungen\narchview.impact.col.source=Quelle\narchview.impact.col.target=Ziel\narchview.impact.col.type=Typ\narchview.impact.col.relevance=Relevanz\narchview.impact.col.derived=Abgeleitet von\narchview.trace.col.source=Quelle\narchview.trace.col.target=Ziel\narchview.trace.col.type=Typ\narchview.trace.col.relevance=Relevanz\narchview.trace.col.hops=Spr\\u00fcnge\narchview.trace.col.reason=Begr\\u00fcndung\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direkter LLM-Treffer\nnode.origin.trace.intermediate=Scoring-Pfad (Zwischenknoten)\nnode.origin.propagated=Propagiert \\u00fcber Relation\nnode.origin.seed.context=Seed-Relation-Kontext\nnode.origin.enriched.leaf=Angereicherter Blattknoten\nnode.origin.impact.selected=F\\u00fcr Impact ausgew\\u00e4hlt\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomie-Seed\nrelation.origin.propagated.trace=Propagierte Nachverfolgung\nrelation.origin.impact.derived=Wirkungsabgeleitet\nrelation.origin.suggested.candidate=Vorgeschlagener Kandidat\nrelation.origin.llm.supported=LLM-gest\\u00fctzt\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Herkunft\narchview.col.depth=Tiefe\narchview.col.specificity=Spezifit\\u00e4t\narchview.col.scoring.path=Scoring-Pfad\narchview.col.llm.score=LLM-Score\narchview.col.impact=Wirkung\narchview.col.confidence=Konfidenz\narchview.col.derivation=Ableitung\n"}, "b8469c0d791a224e269a4edb2314852a12fede54": {"t": 1785752708.5480072, "n": 81712, "h": "d48b1a99c5239fff", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Konformit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n\n# ── Mermaid-Diagrammbeschriftungen (i18n) ─────────────────\nmermaid.layer.capabilities=F\\u00e4higkeiten\nmermaid.layer.business.processes=Gesch\\u00e4ftsprozesse\nmermaid.layer.business.roles=Gesch\\u00e4ftsrollen\nmermaid.layer.services=Dienste\nmermaid.layer.coi.services=COI-Dienste\nmermaid.layer.core.services=Kerndienste\nmermaid.layer.applications=Anwendungen\nmermaid.layer.user.applications=Benutzeranwendungen\nmermaid.layer.information.products=Informationsprodukte\nmermaid.layer.communications.services=Kommunikationsdienste\nmermaid.relation.realizes=realisiert\nmermaid.relation.supports=unterst\\u00fctzt\nmermaid.relation.uses=nutzt\nmermaid.relation.fulfills=erf\\u00fcllt\nmermaid.relation.depends.on=h\\u00e4ngt ab von\nmermaid.relation.produces=erzeugt\nmermaid.relation.consumes=konsumiert\nmermaid.relation.assigned.to=zugeordnet zu\nmermaid.relation.related.to=bezieht sich auf\nmermaid.relation.communicates.with=kommuniziert mit\nmermaid.marker.anchor=\\u2605\nmermaid.marker.hotspot=\\u26A0\nmermaid.showcase.layer.capabilities=\\uD83D\\uDD35 F\\u00e4higkeiten\nmermaid.showcase.layer.business.processes=\\uD83D\\uDFE2 Prozesse\nmermaid.showcase.layer.business.roles=\\uD83D\\uDFE2 Rollen\nmermaid.showcase.layer.services=\\uD83D\\uDFE0 Dienste\nmermaid.showcase.layer.coi.services=\\uD83D\\uDFE0 COI-Dienste\nmermaid.showcase.layer.core.services=\\uD83D\\uDFE0 Kerndienste\nmermaid.showcase.layer.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.user.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.information.products=\\uD83D\\uDD37 Infoprodukte\nmermaid.showcase.layer.communications.services=\\uD83D\\uDD34 Kommunikation\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Wirkungsbeziehungen\narchview.impact.relations.count={0}\narchview.trace.relations.title=Nachverfolgungsbeziehungen\narchview.trace.relations.count={0}\narchview.impact.col.source=Quelle\narchview.impact.col.target=Ziel\narchview.impact.col.type=Typ\narchview.impact.col.relevance=Relevanz\narchview.impact.col.derived=Abgeleitet von\narchview.trace.col.source=Quelle\narchview.trace.col.target=Ziel\narchview.trace.col.type=Typ\narchview.trace.col.relevance=Relevanz\narchview.trace.col.hops=Spr\\u00fcnge\narchview.trace.col.reason=Begr\\u00fcndung\n# ── Node origin labels ────────────────────────────────────────\nnode.origin.direct.scored=Direkter LLM-Treffer\nnode.origin.trace.intermediate=Scoring-Pfad (Zwischenknoten)\nnode.origin.propagated=Propagiert \\u00fcber Relation\nnode.origin.seed.context=Seed-Relation-Kontext\nnode.origin.enriched.leaf=Angereicherter Blattknoten\nnode.origin.impact.selected=F\\u00fcr Impact ausgew\\u00e4hlt\n# ── Relation origin labels ────────────────────────────────────\nrelation.origin.taxonomy.seed=Taxonomie-Seed\nrelation.origin.propagated.trace=Propagierte Nachverfolgung\nrelation.origin.impact.derived=Wirkungsabgeleitet\nrelation.origin.suggested.candidate=Vorgeschlagener Kandidat\nrelation.origin.llm.supported=LLM-gest\\u00fctzt\n# ── Architecture view: extended columns ───────────────────────\narchview.col.origin=Herkunft\narchview.col.depth=Tiefe\narchview.col.specificity=Spezifit\\u00e4t\narchview.col.scoring.path=Scoring-Pfad\narchview.col.llm.score=LLM-Score\narchview.col.impact=Wirkung\narchview.col.confidence=Konfidenz\narchview.col.derivation=Ableitung\n"}, "4ef70b50bb822c0a88a184ed86bdc393c8be5dc0": {"t": 1785752710.632414, "n": 80669, "h": "24cf79d1be31ee47", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.DEUTSCHLAND_STACK_CONFORMITY=Deutschland-Stack Konformit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n\n# ── Mermaid-Diagrammbeschriftungen (i18n) ─────────────────\nmermaid.layer.capabilities=F\\u00e4higkeiten\nmermaid.layer.business.processes=Gesch\\u00e4ftsprozesse\nmermaid.layer.business.roles=Gesch\\u00e4ftsrollen\nmermaid.layer.services=Dienste\nmermaid.layer.coi.services=COI-Dienste\nmermaid.layer.core.services=Kerndienste\nmermaid.layer.applications=Anwendungen\nmermaid.layer.user.applications=Benutzeranwendungen\nmermaid.layer.information.products=Informationsprodukte\nmermaid.layer.communications.services=Kommunikationsdienste\nmermaid.relation.realizes=realisiert\nmermaid.relation.supports=unterst\\u00fctzt\nmermaid.relation.uses=nutzt\nmermaid.relation.fulfills=erf\\u00fcllt\nmermaid.relation.depends.on=h\\u00e4ngt ab von\nmermaid.relation.produces=erzeugt\nmermaid.relation.consumes=konsumiert\nmermaid.relation.assigned.to=zugeordnet zu\nmermaid.relation.related.to=bezieht sich auf\nmermaid.relation.communicates.with=kommuniziert mit\nmermaid.marker.anchor=\\u2605\nmermaid.marker.hotspot=\\u26A0\nmermaid.showcase.layer.capabilities=\\uD83D\\uDD35 F\\u00e4higkeiten\nmermaid.showcase.layer.business.processes=\\uD83D\\uDFE2 Prozesse\nmermaid.showcase.layer.business.roles=\\uD83D\\uDFE2 Rollen\nmermaid.showcase.layer.services=\\uD83D\\uDFE0 Dienste\nmermaid.showcase.layer.coi.services=\\uD83D\\uDFE0 COI-Dienste\nmermaid.showcase.layer.core.services=\\uD83D\\uDFE0 Kerndienste\nmermaid.showcase.layer.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.user.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.information.products=\\uD83D\\uDD37 Infoprodukte\nmermaid.showcase.layer.communications.services=\\uD83D\\uDD34 Kommunikation\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Wirkungsbeziehungen\narchview.impact.relations.count={0}\narchview.trace.relations.title=Nachverfolgungsbeziehungen\narchview.trace.relations.count={0}\narchview.impact.col.source=Quelle\narchview.impact.col.target=Ziel\narchview.impact.col.type=Typ\narchview.impact.col.relevance=Relevanz\narchview.impact.col.derived=Abgeleitet von\narchview.trace.col.source=Quelle\narchview.trace.col.target=Ziel\narchview.trace.col.type=Typ\narchview.trace.col.relevance=Relevanz\narchview.trace.col.hops=Spr\\u00fcnge\narchview.trace.col.reason=Begr\\u00fcndung\n"}, "1f956ea5b1e7314c4862e6123550d9117b3ad7f5": {"t": 1785752713.897947, "n": 80596, "h": "0f94da3187a8bb6a", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n\n# ── Mermaid-Diagrammbeschriftungen (i18n) ─────────────────\nmermaid.layer.capabilities=F\\u00e4higkeiten\nmermaid.layer.business.processes=Gesch\\u00e4ftsprozesse\nmermaid.layer.business.roles=Gesch\\u00e4ftsrollen\nmermaid.layer.services=Dienste\nmermaid.layer.coi.services=COI-Dienste\nmermaid.layer.core.services=Kerndienste\nmermaid.layer.applications=Anwendungen\nmermaid.layer.user.applications=Benutzeranwendungen\nmermaid.layer.information.products=Informationsprodukte\nmermaid.layer.communications.services=Kommunikationsdienste\nmermaid.relation.realizes=realisiert\nmermaid.relation.supports=unterst\\u00fctzt\nmermaid.relation.uses=nutzt\nmermaid.relation.fulfills=erf\\u00fcllt\nmermaid.relation.depends.on=h\\u00e4ngt ab von\nmermaid.relation.produces=erzeugt\nmermaid.relation.consumes=konsumiert\nmermaid.relation.assigned.to=zugeordnet zu\nmermaid.relation.related.to=bezieht sich auf\nmermaid.relation.communicates.with=kommuniziert mit\nmermaid.marker.anchor=\\u2605\nmermaid.marker.hotspot=\\u26A0\nmermaid.showcase.layer.capabilities=\\uD83D\\uDD35 F\\u00e4higkeiten\nmermaid.showcase.layer.business.processes=\\uD83D\\uDFE2 Prozesse\nmermaid.showcase.layer.business.roles=\\uD83D\\uDFE2 Rollen\nmermaid.showcase.layer.services=\\uD83D\\uDFE0 Dienste\nmermaid.showcase.layer.coi.services=\\uD83D\\uDFE0 COI-Dienste\nmermaid.showcase.layer.core.services=\\uD83D\\uDFE0 Kerndienste\nmermaid.showcase.layer.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.user.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.information.products=\\uD83D\\uDD37 Infoprodukte\nmermaid.showcase.layer.communications.services=\\uD83D\\uDD34 Kommunikation\n# ── Architecture view: relation categories ────────────────────\narchview.impact.relations.title=Wirkungsbeziehungen\narchview.impact.relations.count={0}\narchview.trace.relations.title=Nachverfolgungsbeziehungen\narchview.trace.relations.count={0}\narchview.impact.col.source=Quelle\narchview.impact.col.target=Ziel\narchview.impact.col.type=Typ\narchview.impact.col.relevance=Relevanz\narchview.impact.col.derived=Abgeleitet von\narchview.trace.col.source=Quelle\narchview.trace.col.target=Ziel\narchview.trace.col.type=Typ\narchview.trace.col.relevance=Relevanz\narchview.trace.col.hops=Spr\\u00fcnge\narchview.trace.col.reason=Begr\\u00fcndung\n"}, "30afc1cc10e1ce2aa96709549ba5b96cd9aebdfe": {"t": 1785752716.2578895, "n": 79964, "h": "de56f7a3f7ad0474", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n\n# ── Mermaid-Diagrammbeschriftungen (i18n) ─────────────────\nmermaid.layer.capabilities=F\\u00e4higkeiten\nmermaid.layer.business.processes=Gesch\\u00e4ftsprozesse\nmermaid.layer.business.roles=Gesch\\u00e4ftsrollen\nmermaid.layer.services=Dienste\nmermaid.layer.coi.services=COI-Dienste\nmermaid.layer.core.services=Kerndienste\nmermaid.layer.applications=Anwendungen\nmermaid.layer.user.applications=Benutzeranwendungen\nmermaid.layer.information.products=Informationsprodukte\nmermaid.layer.communications.services=Kommunikationsdienste\nmermaid.relation.realizes=realisiert\nmermaid.relation.supports=unterst\\u00fctzt\nmermaid.relation.uses=nutzt\nmermaid.relation.fulfills=erf\\u00fcllt\nmermaid.relation.depends.on=h\\u00e4ngt ab von\nmermaid.relation.produces=erzeugt\nmermaid.relation.consumes=konsumiert\nmermaid.relation.assigned.to=zugeordnet zu\nmermaid.relation.related.to=bezieht sich auf\nmermaid.relation.communicates.with=kommuniziert mit\nmermaid.marker.anchor=\\u2605\nmermaid.marker.hotspot=\\u26A0\nmermaid.showcase.layer.capabilities=\\uD83D\\uDD35 F\\u00e4higkeiten\nmermaid.showcase.layer.business.processes=\\uD83D\\uDFE2 Prozesse\nmermaid.showcase.layer.business.roles=\\uD83D\\uDFE2 Rollen\nmermaid.showcase.layer.services=\\uD83D\\uDFE0 Dienste\nmermaid.showcase.layer.coi.services=\\uD83D\\uDFE0 COI-Dienste\nmermaid.showcase.layer.core.services=\\uD83D\\uDFE0 Kerndienste\nmermaid.showcase.layer.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.user.applications=\\uD83D\\uDFE3 Anwendungen\nmermaid.showcase.layer.information.products=\\uD83D\\uDD37 Infoprodukte\nmermaid.showcase.layer.communications.services=\\uD83D\\uDD34 Kommunikation\n"}, "234e630d228f5103d8a4eb781ccf395bfabe350e": {"t": 1785752718.1161044, "n": 78337, "h": "d4e9c3bdf92ea32d", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.CONTAINER_IMAGE=Container-Image\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n"}, "554dd2c4ca827ee54ff128ad14bf643d38f0c098": {"t": 1785752722.0968292, "n": 78296, "h": "67b658f6859af3f4", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n"}, "8a24fef79416f9993ea3cafe69ca8867dcce84e3": {"t": 1785752728.177167, "n": 78315, "h": "17736d169c633e27", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.KEYCLOAK_MIGRATION=Keycloak-Migrationsanleitung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n"}, "f4b3a6ce661731fab150798e44ad7e4e41818ee9": {"t": 1785752734.6448185, "n": 78258, "h": "27fe2d716d79da78", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n\n# ── Panel-Titel (i18n f\\u00FCr einklappbare Bereiche) ───────────\nbrowse.search.title=\\uD83D\\uDD0D Taxonomie durchsuchen\nbrowse.analysis.log.title=\\uD83D\\uDCCB Analyse-Protokoll\nbrowse.llm.log.title=\\uD83D\\uDCE1 LLM-Kommunikationsprotokoll\nanalyze.gap.panel.title=\\uD83D\\uDD0D L\\u00FCckenanalyse\nanalyze.gap.panel.description=L\\u00FCckenanalyse durchf\\u00FChren, um fehlende Beziehungen und unvollst\\u00E4ndige Muster zu identifizieren.\nanalyze.gap.btn=\\uD83D\\uDD0D L\\u00FCcken analysieren\nanalyze.patterns.panel.title=\\uD83E\\uDDE9 Mustererkennung\nanalyze.patterns.panel.description=Architekturmuster (Full Stack, App Chain, Role Chain) \\u00FCber bewertete Knoten erkennen.\nanalyze.patterns.btn=\\uD83E\\uDDE9 Muster erkennen\nanalyze.recommendation.panel.title=\\uD83D\\uDCA1 Architekturempfehlung\nanalyze.recommendation.panel.description=Architekturempfehlungen generieren basierend auf Treffern, L\\u00FCckenanalyse und semantischer Suche.\nbrowse.relations.title=\\uD83D\\uDD17 Beziehungsbrowser\nlog.viewer.title=\\uD83D\\uDCDC Log-Viewer\nprompt.template.title=\\uD83D\\uDCDD Prompt-Vorlagen\ndsl.history.col.time=Zeit\n\n# ── Filter- / Badge-Beschriftungen ──────────────────────────\nrelations.filter.all.types=Alle Typen\nlog.level.filter.all=Alle Level\nprompt.badge.overridden=\\u00DCberschrieben\nprompt.badge.default=Standard\nprompt.btn.save=\\uD83D\\uDCBE Speichern\nprompt.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\nprompt.placeholders=Platzhalter: {{BUSINESS_TEXT}}, {{NODE_LIST}}, {{TAXONOMY_NAME}}\ntoast.operation.title=Ergebnis\ntransfer.source.commit=Quell-Commit\n\n# ── Modal-Titel / Buttons ──────────────────────────────────\npropose.modal.title=\\uD83D\\uDD17 Beziehungen vorschlagen\npropose.modal.description=Beziehungsvorschl\\u00E4ge f\\u00FCr Knoten generieren\npropose.modal.type.label=Beziehungstyp\npropose.btn.generate=Vorschl\\u00E4ge generieren\nleaf.justification.title=\\uD83D\\uDCCB Blattbegr\\u00FCndung\ngraph.detail.title=\\uD83D\\uDD2C Graph-Abfrageergebnisse\nmerge.conflict.description=Die Zusammenf\\u00FChrung kann nicht automatisch abgeschlossen werden. \\u00DCberpr\\u00FCfen Sie den Inhalt beider Seiten und bearbeiten Sie die aufgel\\u00F6ste Version unten.\nsync.diverged.modal.title=\\uD83D\\uDD04 Divergierten Zustand aufl\\u00F6sen\nsync.diverged.description=Ihr Arbeitsbereich und das gemeinsame Repository sind divergiert \\u2014 beide Seiten haben \\u00C4nderungen, die die andere nicht hat. W\\u00E4hlen Sie eine Aufl\\u00F6sungsstrategie:\nsync.diverged.merge.label=\\uD83D\\uDD00 Zusammenf\\u00FChren\nsync.diverged.merge.description=Versuchen, gemeinsame \\u00C4nderungen in Ihren Branch zusammenzuf\\u00FChren. Kann fehlschlagen bei Konflikten.\nsync.diverged.keep.mine.label=\\uD83D\\uDCE4 Meine behalten\nsync.diverged.keep.mine.description=Ihre Version in das gemeinsame Repository ver\\u00F6ffentlichen und gemeinsame \\u00C4nderungen \\u00FCberschreiben.\nsync.diverged.take.shared.label=\\uD83D\\uDCE5 Gemeinsame \\u00FCbernehmen\nsync.diverged.take.shared.description=Ihren lokalen Branch durch die gemeinsame Version ersetzen und Ihre \\u00C4nderungen verwerfen.\nlog.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nlog.btn.autoscroll=\\u2193 Auto-Scrollen\nlog.filter.component.placeholder=Nach Komponente filtern\\u2026\nabout.notice.link=NOTICE\nabout.third.party.link=Drittanbieter-Lizenzen\n\n# ── Verbleibende Template-i18n (P4) ────────────────────────\nskip.link=Zum Hauptinhalt springen\nbrowse.tree.loading=Taxonomie wird geladen\\u2026\nbrowse.search.btn=\\uD83D\\uDD0D Suchen\nllm.log.btn.clear=\\uD83D\\uDDD1\\uFE0F Protokoll l\\u00F6schen\narch.overview.label=\\uD83C\\uDFDF\\uFE0F \\u00DCbersicht\nbrowse.relations.btn.new=\\u2795 Neue Beziehung\nbrowse.relations.placeholder=\\u00D6ffnen, um Beziehungen zu laden.\ngraph.apqc.filter.label=Nur APQC-Hierarchie anzeigen (Knoten mit x-source-framework: apqc filtern)\ncontext.history.title=\\uD83D\\uDD51 Navigationshistorie\ncontext.history.loading=Navigationshistorie wird geladen\\u2026\ncontext.history.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nworkspace.manager.placeholder=\\u00D6ffnen, um Arbeitsbereiche zu laden.\nversions.branch.label=Branch:\nadmin.health.title=\\uD83D\\uDC9A Gesundheits-Dashboard\nhealth.overall.label=Gesamt\nhealth.ai.label=KI/LLM\nhealth.embedding.label=Einbettung\nhealth.memory.label=Speicher\nadmin.health.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.quality.title=\\uD83D\\uDCCA Qualit\\u00E4ts-Dashboard\nadmin.quality.placeholder=\\u00D6ffnen, um Metriken zu laden.\nadmin.quality.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.title=\\uD83D\\uDCCB Anforderungsabdeckung\nadmin.coverage.placeholder=\\u00D6ffnen, um Abdeckungsdaten zu laden.\nadmin.coverage.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.coverage.btn.record=\\uD83D\\uDCE5 Aktuelle Analyse erfassen\nadmin.diagnostics.panel.title=\\uD83D\\uDD27 LLM-Diagnose\nadmin.diagnostics.loading=Diagnose wird geladen\\u2026\nadmin.diagnostics.btn.refresh=\\uD83D\\uDD04 Aktualisieren\nadmin.diagnostics.btn.test=\\uD83E\\uDE7A Verbindung testen\nprompt.taxonomy.label=Taxonomie:\nabout.third.party.notice=Dieses Produkt enth\\u00E4lt Open-Source-Software von Drittanbietern. Volltext:\nexport.hint.text=\\uD83D\\uDCCB F\\u00FChren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.png.res.label=PNG-Export-Aufl\\u00F6sungsmultiplikator\nproposals.loading.text=Vorschl\\u00E4ge werden geladen\\u2026\nlog.viewer.placeholder=\\u00D6ffnen, um Protokolle zu laden.\n\n# ── DSL-Editor JS i18n ─────────────────────────────────────\ndsl.branch.prompt=Neuer Branch-Name:\ndsl.branch.creating=Branch \\u201C{0}\\u201D wird von \\u201C{1}\\u201D erstellt\\u2026\ndsl.branch.error=Branch-Fehler: {0}\ndsl.commit.not.found=Commit nicht gefunden\ndsl.load.error=Ladefehler: {0}\ndsl.diff.computing=Diff wird berechnet\\u2026\ndsl.diff.error=Diff-Fehler: {0}\ndsl.diff.text.computing=Text-Diff wird berechnet\\u2026\ndsl.diff.text.error=Text-Diff-Fehler: {0}\ndsl.diff.elements.removed=Element(e) entfernt\ndsl.diff.elements.changed=Element(e) ge\\u00E4ndert\ndsl.diff.relations.removed=Beziehung(en) entfernt\ndsl.diff.relations.changed=Beziehung(en) ge\\u00E4ndert\ndsl.cherrypick.prompt=Cherry-Pick Commit {0} auf welchen Branch?\ndsl.cherrypick.progress=Cherry-Pick von {0} auf \\u201C{1}\\u201D\\u2026\ndsl.cherrypick.success.title=Cherry-Pick erfolgreich\ndsl.cherrypick.success.message=Angewendet auf \\u201C{0}\\u201D \\u2192 {1}\ndsl.cherrypick.error=Cherry-Pick-Fehler: {0}\ndsl.merge.prompt=Branch \\u201C{0}\\u201D in welchen Branch zusammenf\\u00FChren?\ndsl.merge.progress=\\u201C{0}\\u201D wird in \\u201C{1}\\u201D zusammengef\\u00FChrt\\u2026\ndsl.merge.success.title=Zusammenf\\u00FChrung erfolgreich\ndsl.merge.success.message=\\u201C{0}\\u201D in \\u201C{1}\\u201D zusammengef\\u00FChrt \\u2192 {2}\ndsl.merge.error=Zusammenf\\u00FChrungsfehler: {0}\n\n# ── Scoring JS i18n ────────────────────────────────────────\nanalyze.zero.matches=\\u26A0\\uFE0F Analyse ergab 0 Treffer. M\\u00F6glicherweise ist kein LLM-API-Schl\\u00FCssel konfiguriert oder das LLM hat leere Ergebnisse geliefert. Pr\\u00FCfen Sie die Serverprotokolle.\nanalyze.complete=\\u2705 Analyse abgeschlossen. {0} Knoten zugeordnet.\nanalyze.partial=\\u26A0\\uFE0F Teilergebnisse \\u2014 {0} {1} Knoten bisher zugeordnet.\nanalyze.incomplete=Analyse unvollst\\u00E4ndig.\nanalyze.interactive.info=\\uD83D\\uDD0D Interaktiver Modus: Knoten erweitern, um sie mit KI zu bewerten.\nanalyze.connection.lost=Verbindung zum Server verloren.\nanalyze.no.text=Kein Gesch\\u00E4ftstext gespeichert. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nanalyze.hotspots=\\u26A0\\uFE0F {0} \\u00C4nderungs-Hotspots\nanalyze.hotspot.risk=\\u00C4nderungsrisiko\nanalyze.proposal.exists=\\u2139\\uFE0F Vorschlag existiert bereits f\\u00FCr {0} \\u2192 {1}\n\n# ── Dokumentenimport JS i18n ───────────────────────────────\ndocimport.upload.failed=Upload fehlgeschlagen\ndocimport.ai.failed=KI-Extraktion fehlgeschlagen\ndocimport.regulation.failed=Regulierungszuordnung fehlgeschlagen\n"}, "5c64862804361d0120b93c308d83f89c398c743a": {"t": 1785752736.4488666, "n": 70375, "h": "110e967025b5b2ae", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\ncompare.filter.all=Alle\ncompare.filter.elements=Elemente\ncompare.filter.relations=Beziehungen\ncompare.filter.requirements=Anforderungen\ncompare.relations.column.added=Beziehungen hinzugef\\u00FCgt ({0})\ncompare.relations.column.changed=Beziehungen ge\\u00E4ndert ({0})\ncompare.relations.column.removed=Beziehungen entfernt ({0})\ncompare.relations.column.empty.added=Keine hinzugef\\u00FCgten Beziehungen\ncompare.relations.column.empty.changed=Keine ge\\u00E4nderten Beziehungen\ncompare.relations.column.empty.removed=Keine entfernten Beziehungen\ncompare.requirements.column.added=Anforderungen hinzugef\\u00FCgt ({0})\ncompare.requirements.column.changed=Anforderungen ge\\u00E4ndert ({0})\ncompare.requirements.column.removed=Anforderungen entfernt ({0})\ncompare.requirements.column.empty.added=Keine hinzugef\\u00FCgten Anforderungen\ncompare.requirements.column.empty.changed=Keine ge\\u00E4nderten Anforderungen\ncompare.requirements.column.empty.removed=Keine entfernten Anforderungen\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.manager.title=Arbeitsbereich-Manager\nworkspace.manager.create=Neuer Arbeitsbereich\nworkspace.manager.refresh=Aktualisieren\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.structurizr.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Structurizr DSL exportieren.\nexport.structurizr.failed=Structurizr-DSL-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.btn.structurizr.title=Architekturansicht als Structurizr DSL f\\u00fcr C4-Tools exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n"}, "639be534609bf4bf38d5f9046316b2c8c7b9897d": {"t": 1785752738.075673, "n": 68968, "h": "92528ba6447679c3", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=\\u2699\\uFE0F Einstellungen\npreferences.btn.save=\\uD83D\\uDCBE Speichern\npreferences.btn.reset=\\u21A9\\uFE0F Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\npreferences.llm.rpm=LLM-Anfragen pro Minute (RPM)\npreferences.llm.timeout=LLM-Anfrage-Timeout (Sekunden)\npreferences.llm.ratelimit=Server-Ratenlimit (Anfragen/IP/Minute)\npreferences.llm.minscore=Mindest-Relevanzbewertung (0\\u2013100)\npreferences.dsl.branch=Standard-Branch\npreferences.dsl.project=Projektname\npreferences.dsl.autosave=Auto-Speicher-Intervall (Sekunden, 0 = deaktiviert)\npreferences.dsl.pushoncommit=Nach jedem Commit zum Remote pushen\npreferences.dsl.remoteurl=Remote-Git-URL\npreferences.dsl.remoteurl.placeholder=https://github.com/org/repo.git\npreferences.dsl.remotetoken=Remote-Git-Token (sicher gespeichert, letzte 4 Zeichen angezeigt)\npreferences.dsl.remotetoken.placeholder=Leer lassen, um vorhandenes Token beizubehalten\npreferences.limits.businesstext=Max. Gesch\\u00E4ftstextl\\u00E4nge\npreferences.limits.archnodes=Max. Architekturknoten\npreferences.limits.exportnodes=Max. Exportknoten\npreferences.history.title=\\uD83D\\uDCCB \\u00C4nderungsverlauf der Einstellungen\npreferences.history.commit=Commit\npreferences.history.author=Autor\npreferences.history.time=Zeit\npreferences.history.message=Nachricht\npreferences.history.empty=Aufklappen, um Verlauf zu laden.\npreferences.scope.system=\\u2601\\uFE0F System\npreferences.scope.info=Alle Einstellungen sind systemweit \\u2601\\uFE0F \\u2014 sie gelten f\\u00FCr alle Benutzer und Arbeitsbereiche.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n"}, "f07b935d377f7a0ba3d4ca1a922761b27e11e503": {"t": 1785752740.0908208, "n": 67581, "h": "d7700e61390143c9", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=Einstellungen\npreferences.btn.save=Einstellungen speichern\npreferences.btn.reset=Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak- & SSO-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n"}, "7840c2fa93f98c7a28b86ab62eb643198fe645b4": {"t": 1785752742.0795374, "n": 67744, "h": "511252f059d02387", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=Einstellungen\npreferences.btn.save=Einstellungen speichern\npreferences.btn.reset=Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak-Einrichtung\nhelp.toc.SSO_INTEGRATION=SSO-Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL-Einrichtung\nhelp.toc.MSSQL-SETUP=MSSQL-Einrichtung\nhelp.toc.ORACLE-SETUP=Oracle-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\nhelp.toc.RELATION_SEEDS=Beziehungs-Seed-Modell\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n"}, "3ec84e7e9827cc5628a3e39690a66ea8c8d7d130": {"t": 1785752743.5983279, "n": 67697, "h": "8a4e0013014d8846", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Wirkungsanalyse\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=Einstellungen\npreferences.btn.save=Einstellungen speichern\npreferences.btn.reset=Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak-Einrichtung\nhelp.toc.SSO_INTEGRATION=SSO-Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL-Einrichtung\nhelp.toc.MSSQL-SETUP=MSSQL-Einrichtung\nhelp.toc.ORACLE-SETUP=Oracle-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n"}, "c11922e77c84ca1839cf6371dd79986b2877df84": {"t": 1785752745.313385, "n": 67700, "h": "8655c56765fcc330", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Architekturansicht\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=Einstellungen\npreferences.btn.save=Einstellungen speichern\npreferences.btn.reset=Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak-Einrichtung\nhelp.toc.SSO_INTEGRATION=SSO-Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL-Einrichtung\nhelp.toc.MSSQL-SETUP=MSSQL-Einrichtung\nhelp.toc.ORACLE-SETUP=Oracle-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\ndocimport.mode.extract=\\uD83D\\uDCDD Kandidaten extrahieren\ndocimport.mode.ai=\\uD83E\\uDD16 KI-gest\\u00FCtzte Extraktion\ndocimport.mode.regmap=\\uD83C\\uDFDB\\uFE0F Architektur-Mapping\ndocimport.ai.extracting=KI analysiert das Dokument\\u2026\ndocimport.ai.success=KI hat {0} Anforderungen aus {1} Seiten extrahiert.\ndocimport.ai.results.title=\\uD83E\\uDD16 KI-extrahierte Anforderungen\ndocimport.ai.comparison=KI hat {0} Kandidaten extrahiert vs \\uD83D\\uDCDD Regelbasiert: {1} Abs\\u00E4tze\ndocimport.ai.no.results=Die KI hat keine Anforderungskandidaten extrahiert.\ndocimport.regmap.mapping=Regulation wird auf Architektur abgebildet\\u2026\ndocimport.regmap.success={0} Architektur-Treffer aus {1} Seiten gefunden.\ndocimport.regmap.results.title=\\uD83C\\uDFDB\\uFE0F Regulation \\u2192 Architektur-Mapping\ndocimport.regmap.no.matches=Keine Architektur-Treffer gefunden.\ndocimport.regmap.col.node=Taxonomie-Knoten\ndocimport.regmap.col.linktype=Verbindungstyp\ndocimport.regmap.col.confidence=Konfidenz\ndocimport.regmap.col.ref=\\u00A7 Referenz\ndocimport.regmap.col.reason=Begr\\u00FCndung\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n"}, "aad79edee20b7cf1791d07f93ffba2d2d41679cc": {"t": 1785752747.172534, "n": 66626, "h": "f0bdc50eafae24db", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Architekturansicht\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=Einstellungen\npreferences.btn.save=Einstellungen speichern\npreferences.btn.reset=Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak-Einrichtung\nhelp.toc.SSO_INTEGRATION=SSO-Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL-Einrichtung\nhelp.toc.MSSQL-SETUP=MSSQL-Einrichtung\nhelp.toc.ORACLE-SETUP=Oracle-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n\n# ── Dokumentenimport & Herkunft ───────────────────────────────\ndocimport.panel.title=\\uD83D\\uDCC4 Dokumentenimport\ndocimport.panel.description=Laden Sie ein PDF- oder DOCX-Dokument hoch (z.\\u00A0B. eine Verwaltungsvorschrift), um Anforderungskandidaten zu extrahieren.\ndocimport.file.label=Dokumentdatei\ndocimport.title.label=Titel (optional)\ndocimport.title.placeholder=z.\\u00A0B. BayVwVfG \\u00A723\ndocimport.type.label=Quellentyp\ndocimport.type.regulation=Verwaltungsvorschrift\ndocimport.type.business=Gesch\\u00E4ftsanforderung\ndocimport.type.document=Dokument\ndocimport.type.meeting=Besprechungsnotiz\ndocimport.btn.upload=\\uD83D\\uDCC4 Hochladen & Extrahieren\ndocimport.uploading=Wird hochgeladen und analysiert\\u2026\ndocimport.success={0} Kandidaten aus {1} Seiten extrahiert.\ndocimport.select.file=Bitte w\\u00E4hlen Sie eine Datei aus.\ndocimport.no.candidates=Es wurden keine Anforderungskandidaten in diesem Dokument gefunden.\ndocimport.none.selected=Bitte w\\u00E4hlen Sie mindestens einen Kandidaten aus.\ndocimport.transferred={0} Kandidat(en) zur Analyse \\u00FCbertragen.\ndocimport.review.title=\\uD83D\\uDCC4 Extrahierte Anforderungskandidaten\ndocimport.btn.selectall=Alle ausw\\u00E4hlen\ndocimport.btn.deselectall=Alle abw\\u00E4hlen\ndocimport.btn.analyze=\\uD83D\\uDD0D Ausgew\\u00E4hlte analysieren\nprovenance.panel.title=\\uD83D\\uDD17 Quellenherkunft\nprovenance.panel.hint=Informationen zur Anforderungsherkunft werden hier nach der Analyse angezeigt.\nprovenance.source=Quelle\nprovenance.type=Typ\nprovenance.artifact=Artefakt-ID\nprovenance.candidates=Kandidaten\nprovenance.pages=Seiten\nhelp.toc.DOCUMENT_IMPORT=Dokumentenimport & Herkunft\n"}, "613043cef04560970a1524dc702e6f881be4b641": {"t": 1785752749.2765362, "n": 64980, "h": "90764d3e99bc9a00", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.card.title=Gesch\\u00E4ftsanforderungs-Analyse\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.descriptions=Beschreibungen\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\narchitecture.no.suggestions=Noch keine vorgeschlagenen Beziehungen.\narchitecture.suggested.title=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\narchitecture.placeholder.title=Noch keine Architektur-Ansicht\narchitecture.placeholder.description=F\\u00FChren Sie eine Analyse mit der Option <strong>Architektur-Ansicht</strong> durch, um die Architektur\\u00FCbersicht hier zu sehen.\narchitecture.placeholder.btn=\\uD83D\\uDD0D Zur Analyse\narchitecture.requirement.view.title=\\uD83C\\uDFD7\\uFE0F Anforderungs-Architekturansicht\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.card.title=\\uD83D\\uDCE5 Architektur exportieren\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=Einstellungen\npreferences.btn.save=Einstellungen speichern\npreferences.btn.reset=Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\npreferences.section.llm=\\uD83E\\uDD16 LLM-Konfiguration\npreferences.section.jgit=\\uD83D\\uDCC2 JGit / DSL-Konfiguration\npreferences.section.limits=\\uD83D\\uDCC8 Gr\\u00F6\\u00DFenlimits\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.indicator=Sync:\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.based.on=\\uD83D\\uDCCC Basiert auf:\ncontext.provisional.warning=\\u26A0\\uFE0F Enth\\u00E4lt vorl\\u00E4ufige Beziehungen\ncontext.projection.stale=Projektion: VERALTET\ncontext.projection.fresh=Projektion: aktuell\ncontext.index.stale=Index: VERALTET\ncontext.index.fresh=Index: aktuell\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.panel.title=\\uD83D\\uDD0D Beziehungsvorschl\\u00E4ge\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.btn.recommend=\\uD83D\\uDCA1 Empfehlung generieren\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nanalyze.copilot.panel.title=\\uD83D\\uDE80 KI-Architektur-Copilot\nanalyze.copilot.badge=Ein-Klick\nanalyze.copilot.panel.hint=Klicken Sie auf die \\uD83D\\uDE80 Copilot-Schaltfl\\u00E4che, um eine vollst\\u00E4ndige Architekturanalyse zu starten.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak-Einrichtung\nhelp.toc.SSO_INTEGRATION=SSO-Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL-Einrichtung\nhelp.toc.MSSQL-SETUP=MSSQL-Einrichtung\nhelp.toc.ORACLE-SETUP=Oracle-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.card.title=\\uD83D\\uDCE4 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.branch.draft.new=draft (neu)\ndsl.diff.no.changes=Keine \\u00C4nderungen\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\nabout.third.party.error=Drittanbieter-Hinweise konnten nicht geladen werden.\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\nviews.no.scored.nodes=Noch keine bewerteten Knoten. F\\u00FChren Sie eine Analyse durch, um die Entscheidungskarte zu sehen.\nviews.no.filter.match=Keine Knoten entsprechen den Filterkriterien.\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.header.code=Code\ngraph.header.title=Titel\ngraph.header.sheet=Blatt\ngraph.header.relevance=Relevanz\ngraph.header.hop=Sprung\ngraph.header.reason=Begr\\u00FCndung\ngraph.loading=Graph wird abgefragt\\u2026\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\ngraph.section.relationships=Durchlaufene Beziehungen\ngraph.header.source=Quelle\ngraph.header.target=Ziel\ngraph.header.type=Typ\ngraph.badge.origin=Ursprung\ngraph.badge.hop=Sprung {0}\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\nscoring.badge.already.exists=Bereits vorhanden\nscoring.badge.accepted=Akzeptiert\nscoring.badge.dismissed=Verworfen\nscoring.badge.session.only=\\uD83D\\uDCCC Nur Sitzung\nscoring.no.archview=Keine Architektur-Ansicht verf\\u00FCgbar. Aktivieren Sie \\u201E\\uD83C\\uDFD7\\uFE0F Architektur-Ansicht\\u201C und f\\u00FChren Sie zuerst eine Analyse durch.\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n"}, "05cb9d5946380bd7f9a1302541fdf6ad04baf03e": {"t": 1785752750.9060278, "n": 62327, "h": "03690a22908a445d", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=Einstellungen\npreferences.btn.save=Einstellungen speichern\npreferences.btn.reset=Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak-Einrichtung\nhelp.toc.SSO_INTEGRATION=SSO-Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL-Einrichtung\nhelp.toc.MSSQL-SETUP=MSSQL-Einrichtung\nhelp.toc.ORACLE-SETUP=Oracle-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\nhelp.toc.REPOSITORY_TOPOLOGY=Repository-Topologie\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\n\n# ── Workspace-Bereitstellung (JS) ────────────────────────────\nworkspace.provisioning.title=Arbeitsbereich vorbereiten\nworkspace.provisioning.message=Ihr pers\\u00F6nlicher Arbeitsbereich wurde noch nicht eingerichtet. Klicken Sie auf die Schaltfl\\u00E4che, um Ihre pers\\u00F6nliche Arbeitskopie aus dem gemeinsamen Bereich zu erstellen.\nworkspace.provisioning.button=Arbeitsbereich vorbereiten\nworkspace.provisioning.preparing=Ihre pers\\u00F6nliche Arbeitskopie wird aus dem gemeinsamen Bereich erstellt\\u2026\nworkspace.provisioning.ready.title=Arbeitsbereich bereit\nworkspace.provisioning.ready.message=Ihr Arbeitsbereich ist bereit! Sie k\\u00F6nnen jetzt mit der Arbeit beginnen.\nworkspace.provisioning.failed=Arbeitsbereich konnte nicht vorbereitet werden\nworkspace.provisioning.retry=Erneut versuchen\nworkspace.provisioning.status.not_provisioned=Nicht vorbereitet\nworkspace.provisioning.status.provisioning=Wird vorbereitet\\u2026\nworkspace.provisioning.status.ready=Bereit\nworkspace.provisioning.status.failed=Fehlgeschlagen\nworkspace.topology.title=Repository-Topologie\nworkspace.topology.mode.internal=Intern geteilt\nworkspace.topology.mode.external=Extern kanonisch\nworkspace.topology.shared.branch=Gemeinsamer Branch\n"}, "d54d92003a3c8b7172dfc50b85567ecf03b7d780": {"t": 1785752752.8034322, "n": 61049, "h": "39d7ecdf84f97b6f", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.FEATURE_MATRIX=Feature-Vollst\\u00e4ndigkeitsmatrix\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=Einstellungen\npreferences.btn.save=Einstellungen speichern\npreferences.btn.reset=Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak-Einrichtung\nhelp.toc.SSO_INTEGRATION=SSO-Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL-Einrichtung\nhelp.toc.MSSQL-SETUP=MSSQL-Einrichtung\nhelp.toc.ORACLE-SETUP=Oracle-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n\n# ── Navbar-Tooltips ──────────────────────────────────────────\nnavbar.ai.status.title=Zeigt den aktuellen KI/LLM-Anbieterstatus: gr\\u00fcn = verf\\u00fcgbar, gelb = unbekannt (Status-Check fehlgeschlagen), rot = kein API-Schl\\u00fcssel konfiguriert\nnavbar.embedding.status.title=Embedding-Modell-Status f\\u00fcr semantische Suche\nnavbar.workspace.title=Aktueller Arbeitsbereich / Benutzer\nnavbar.admin.open.title=Admin-Modus \\u00f6ffnen f\\u00fcr Diagnose-Panels und Prompt-Vorlagen\n\n# ── Ansichts-Umschalter ─────────────────────────────────────\nview.list.title=Einr\\u00fcckende Listenansicht\nview.tabs.title=Registerkartenansicht\nview.sunburst.title=Zoombares Sunburst-Diagramm\nview.tree.title=Bottom-Up-Baumdiagramm\nview.decision.title=Entscheidungs\\u00fcbersichtskarte\nview.summary.title=Architektur\\u00fcbersicht nach Analyse\nview.tree.root.select=Taxonomie zur Anzeige ausw\\u00e4hlen\n\n# ── Analyse ──────────────────────────────────────────────────\nanalyze.input.description=Beschreiben Sie die Gesch\\u00e4ftsanforderung oder den F\\u00e4higkeitsbedarf:\nanalyze.placeholder=z.B. Wir ben\\u00f6tigen ein System zur Verwaltung und Anzeige von Echtzeit-Luftlagedaten, Integration von Radardaten und Bereitstellung eines gemeinsamen Lagebildes f\\u00fcr Kommandeure ab Brigadeebene\\u2026\nanalyze.provider.title=KI-Anbieter f\\u00fcr diese Analyse w\\u00e4hlen\nanalyze.provider.default=\\uD83D\\uDD27 Server-Standard\nanalyze.btn.analyze.title=Die Gesch\\u00e4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nanalyze.btn.analyze.text=Mit KI analysieren\nanalyze.btn.copilot.title=Ein-Klick-KI-Architektur-Copilot: Analyse \\u2192 L\\u00fcckenanalyse \\u2192 Mustererkennung \\u2192 Empfehlung\nanalyze.btn.copilot.text=\\uD83D\\uDE80 Copilot\nanalyze.loading=Laden\\u2026\nanalyze.interactive.label=\\uD83D\\uDD0D Interaktiver Modus\nanalyze.interactive.hint=(spart API-Kontingent)\nanalyze.interactive.title=Im interaktiven Modus wird die Taxonomie Ebene f\\u00fcr Ebene erweitert. Klicken Sie auf das \\uD83D\\uDD0D-Symbol eines Knotens, um tiefer zu navigieren. Dies spart API-Kontingent.\nanalyze.archview.label=\\uD83C\\uDFD7\\uFE0F Architekturansicht\nanalyze.archview.hint=(relationsbewusste Erweiterung)\nanalyze.archview.title=Wenn aktiviert, erzeugt die Analyse auch eine Architekturansicht, die zeigt, wie die gefundenen Taxonomie-Knoten \\u00fcber Quertaxonomie-Relationen (REALIZES, SUPPORTS etc.) zusammenh\\u00e4ngen.\nanalyze.ai.unavailable=\\u26A0\\uFE0F <strong>KI ist nicht verf\\u00fcgbar.</strong> Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie <code>GEMINI_API_KEY</code>, <code>OPENAI_API_KEY</code>, <code>DEEPSEEK_API_KEY</code>, <code>DASHSCOPE_API_KEY</code>, <code>LLAMA_API_KEY</code> oder <code>MISTRAL_API_KEY</code>, oder verwenden Sie <code>LLM_PROVIDER=LOCAL_ONNX</code> f\\u00fcr Offline-Analyse.\n\n# ── Trefferlegende ───────────────────────────────────────────\nlegend.title=Farb-Bewertung: Die Gr\\u00fcnintensit\\u00e4t zeigt den \\u00dcbereinstimmungsprozentsatz. 0% = keine \\u00dcbereinstimmung (transparent), 100% = perfekte \\u00dcbereinstimmung (kr\\u00e4ftiges Gr\\u00fcn). Text wird ab 60% wei\\u00df.\nlegend.label=Trefferlegende:\nlegend.0=0% \\u2014 Keine \\u00dcbereinstimmung\nlegend.25=25% \\u2014 Schwache \\u00dcbereinstimmung\nlegend.50=50% \\u2014 M\\u00e4\\u00dfige \\u00dcbereinstimmung\nlegend.75=75% \\u2014 Starke \\u00dcbereinstimmung\nlegend.100=100% \\u2014 Perfekte \\u00dcbereinstimmung\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.placeholder=Taxonomie-Knoten suchen\\u2026\nsearch.mode.fulltext=Volltext\nsearch.mode.semantic=Semantisch\nsearch.mode.hybrid=Hybrid\nsearch.mode.graph=Graph\n\n# ── Graph-Explorer ───────────────────────────────────────────\ngraph.explorer.title=\\uD83D\\uDD2C Graph-Explorer\ngraph.explorer.navigate=Navigieren\ngraph.explorer.navigate.title=Upstream-Abh\\u00e4ngigkeiten, Downstream-Auswirkungen und Fehleranalyse erkunden\ngraph.explorer.description=Erkunden Sie Architektur-Abh\\u00e4ngigkeiten und \\u00c4nderungsauswirkungen, indem Sie unten einen Knoten ausw\\u00e4hlen oder auf die \\uD83D\\uDD2C-Schaltfl\\u00e4che eines Taxonomie-Knotens klicken.\ngraph.node.label=Knoten-Code:\ngraph.node.placeholder=z.B. BP-1040\ngraph.maxhops.label=Max. Spr\\u00fcnge:\ngraph.maxhops.aria=Maximale Traversierungs-Spr\\u00fcnge\ngraph.btn.upstream=\\u2B06\\uFE0F Upstream\ngraph.btn.upstream.title=Was unterst\\u00fctzt dieses Element?\ngraph.btn.downstream=\\u2B07\\uFE0F Downstream\ngraph.btn.downstream.title=Was h\\u00e4ngt von diesem Element ab?\ngraph.btn.failure=\\u26A0\\uFE0F Ausfallauswirkung\ngraph.btn.failure.title=Was ist betroffen, wenn dieses Element ausf\\u00e4llt?\ngraph.btn.enriched=\\uD83D\\uDCC8 Erweiterte Auswirkung\ngraph.btn.enriched.title=Ausfallauswirkung angereichert mit Anforderungsabdeckung und Risikobewertung\ngraph.btn.reqimpact=\\uD83C\\uDFAF Anf.-Auswirkung\ngraph.btn.reqimpact.title=Analysieren, welche Elemente transitiv von den aktuellen Anforderungsbewertungen betroffen sind\ngraph.enter.code=Bitte geben Sie einen Knoten-Code ein.\n\n# ── Export ────────────────────────────────────────────────────\nexport.description=Exportieren Sie die aktuellen Analyseergebnisse als Diagramm oder Datendatei. F\\u00fchren Sie zuerst eine Analyse auf dem Analyse-Tab durch, um Diagrammexporte zu aktivieren.\nexport.hint=\\uD83D\\uDCCB F\\u00fchren Sie eine Analyse durch, um Diagrammexporte zu aktivieren (SVG, PNG, PDF, DOT, Mermaid, Visio, ArchiMate).\nexport.hint.title=Export-Schaltfl\\u00e4chen erscheinen nach einer erfolgreichen Analyse mit Bewertungen > 0\nexport.diagram.heading=Diagrammformate\nexport.btn.svg.title=Aktuelle Ansicht als SVG herunterladen\nexport.btn.png.title=Aktuelle Ansicht als PNG herunterladen\nexport.png.res.title=PNG-Export-Aufl\\u00f6sungsmultiplikator\nexport.btn.pdf.title=Als Vektor-PDF exportieren (oder Drucken)\nexport.btn.visio.title=Architekturansicht als Visio-Diagramm (.vsdx) exportieren\nexport.btn.archimate.title=Architekturansicht als ArchiMate XML (.xml) f\\u00fcr Archi oder \\u00e4hnliche Tools exportieren\nexport.btn.mermaid.title=Architekturansicht als Mermaid-Flussdiagramm f\\u00fcr Markdown-Dokumente exportieren\nexport.tree.heading=Baumformate\nexport.btn.dot.title=Taxonomie-Hierarchie als Graphviz DOT f\\u00fcr yEd, Gephi oder Graphviz exportieren\nexport.btn.mermaid.tree.title=Taxonomie-Hierarchie als Mermaid-Baum f\\u00fcr Markdown-Dokumente exportieren\nexport.data.heading=Datenformate\nexport.btn.csv.title=Bewertungen als CSV-Tabelle herunterladen\nexport.btn.json.title=Bewertungen als JSON-Datei herunterladen\nexport.report.heading=\\uD83D\\uDCC4 Vollst\\u00e4ndiger Bericht\nexport.btn.report.md.title=Umfassenden Architekturbericht als Markdown exportieren\nexport.btn.report.html.title=Umfassenden Architekturbericht als HTML exportieren\nexport.btn.report.docx.title=Umfassenden Architekturbericht als Word-Dokument exportieren\nexport.import.heading=Import & Laden\nexport.btn.load.title=Gespeicherte Analyse aus JSON-Datei laden\nexport.btn.archimate.import.title=ArchiMate-XML-Modell importieren, um Elemente und Relationen der Taxonomie zuzuordnen\n\n# ── Framework-Import ─────────────────────────────────────────\nframework.import.title=\\uD83D\\uDCE8 Framework-Import\nframework.import.description=Architekturmodelle aus externen Frameworks (UAF, APQC, C4/Structurizr) importieren. Elemente und Relationen werden der Taxonomie zugeordnet und in die Datenbank materialisiert.\nframework.import.profile=Profil\nframework.import.profile.select=-- Profil ausw\\u00e4hlen --\nframework.import.file=Datei\nframework.import.branch=Branch\nframework.import.branch.placeholder=main\nframework.import.btn.preview=\\uD83D\\uDD0E Vorschau\nframework.import.btn.preview.title=Import-Vorschau ohne Schreiben in die Datenbank\nframework.import.btn.execute=\\uD83D\\uDCE8 Importieren\nframework.import.btn.execute.title=Vollst\\u00e4ndigen Import in die Datenbank ausf\\u00fchren\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.editor.title=\\uD83D\\uDCDD Architektur-DSL-Editor\ndsl.btn.load.title=Aktuelle Architektur als DSL laden\ndsl.btn.load.text=\\uD83D\\uDD04 Laden\ndsl.btn.parse.title=DSL parsen und Struktur anzeigen\ndsl.btn.parse.text=\\uD83D\\uDD0D Parsen\ndsl.btn.validate.title=DSL auf Fehler validieren\ndsl.btn.validate.text=\\u2705 Validieren\ndsl.btn.format.title=DSL formatieren (kanonischer Stil) \\u2014 Shift+Alt+F\ndsl.btn.format.text=\\u2728 Formatieren\ndsl.diff.title=\\uD83D\\uDD0D Diff-Ansicht\ndsl.diff.select=W\\u00e4hlen Sie zwei Commits aus dem Verlauf zum Vergleichen.\ndsl.commit.panel.title=\\uD83D\\uDCE6 Commit & Materialisieren\ndsl.btn.newbranch.title=Neuen Branch erstellen\ndsl.btn.merge.title=Aktuellen Branch in einen anderen zusammenf\\u00fchren\ndsl.btn.incr.title=Inkrementelle Materialisierung (nur Delta)\ndsl.btn.incr.text=\\u0394 Inkrementell\ndsl.history.title=\\uD83D\\uDD53 Commit-Verlauf\ndsl.history.col.commit=Commit\ndsl.history.col.branch=Branch\ndsl.history.col.message=Nachricht\ndsl.history.col.author=Autor\ndsl.history.col.date=Datum\ndsl.history.col.actions=Aktionen\ndsl.author.placeholder=benutzer@beispiel.de\n\n# ── Hilfe-Tab ────────────────────────────────────────────────\nhelp.filter.placeholder=\\uD83D\\uDD0D Dokumente filtern\\u2026\nhelp.loading=Laden\\u2026\nhelp.select.doc=W\\u00e4hlen Sie ein Dokument aus der Seitenleiste, um es hier zu lesen.\nhelp.back.to.top=Nach oben\n\n# ── Info-Dialog ──────────────────────────────────────────────\nabout.product=Produkt\nabout.version=Version\nabout.build.time=Build-Zeitpunkt\nabout.commit=Commit\nabout.branch=Branch\nabout.license=Lizenz\nabout.copyright=Urheberrecht\nabout.source=Quellcode\nabout.api.docs=API-Dokumentation\nabout.third.party.info=Dieses Produkt enth\\u00e4lt Open-Source-Software von Drittanbietern. Vollst\\u00e4ndiger Text:\nabout.info.tab=\\u2139\\uFE0F \\u00dcber\nabout.notices.tab=\\uD83D\\uDCDC Open-Source-Hinweise\nabout.btn.close=Schlie\\u00dfen\n\n# ── Admin-Dialog ─────────────────────────────────────────────\nadmin.modal.title=\\uD83D\\uDD12 Admin-Modus\nadmin.password.label=Admin-Passwort eingeben, um Diagnose-Panels freizuschalten:\nadmin.password.placeholder=Passwort\nadmin.password.error=Falsches Passwort. Bitte versuchen Sie es erneut.\nadmin.locked.info=Der Admin-Modus ist derzeit <strong>freigeschaltet</strong>. Klicken Sie auf Sperren, um Diagnose-Panels auszublenden.\nadmin.btn.cancel=Abbrechen\nadmin.btn.unlock=\\uD83D\\uDD13 Freischalten\nadmin.btn.lock=\\uD83D\\uDD12 Sperren\n\n# ── Relation-erstellen-Dialog ────────────────────────────────\nrelation.create.title=\\u2795 Relation erstellen\nrelation.source.label=Quell-Knoten-Code\nrelation.source.placeholder=z.B. BP-1040\nrelation.target.label=Ziel-Knoten-Code\nrelation.target.placeholder=z.B. CP-2010\nrelation.type.label=Relationstyp\nrelation.description.label=Beschreibung (optional)\nrelation.btn.cancel=Abbrechen\nrelation.btn.create=Erstellen\n\n# ── Kontext-Transfer ────────────────────────────────────────\ntransfer.target.commit=Ziel-Commit\ntransfer.element.ids=Element-IDs (kommagetrennt)\ntransfer.element.placeholder=CP-1023, CR-1047\ntransfer.relation.ids=Relations-Schl\\u00fcssel (kommagetrennt)\ntransfer.relation.placeholder=CP-1023 REALIZES CR-1047\ntransfer.btn.preview=Vorschau\ntransfer.btn.apply=Transfer anwenden\n\n# ── Merge-Vorschau-Dialog ────────────────────────────────────\nmerge.preview.title=\\uD83D\\uDD00 Merge-Vorschau\nmerge.preview.loading=Vorschau wird geladen\\u2026\nmerge.preview.btn.cancel=Abbrechen\nmerge.preview.btn.proceed=Merge durchf\\u00fchren\n\n# ── Cherry-Pick-Vorschau-Dialog ──────────────────────────────\ncherrypick.preview.title=\\uD83C\\uDF52 Cherry-Pick-Vorschau\ncherrypick.preview.loading=Vorschau wird geladen\\u2026\ncherrypick.preview.btn.cancel=Abbrechen\ncherrypick.preview.btn.proceed=Cherry-Pick durchf\\u00fchren\n\n# ── Konfliktl\\u00f6sungs-Dialog ────────────────────────────────────\nconflict.resolution.title=\\u26A0\\uFE0F Konfliktl\\u00f6sung\nconflict.resolution.description=Die Operation hat einen Konflikt verursacht. \\u00dcberpr\\u00fcfen Sie beide Seiten und bearbeiten Sie die aufgel\\u00f6ste Version unten.\nconflict.ours.label=Unsere (Ziel)\nconflict.theirs.label=Deren (Quelle)\nconflict.resolved.label=Aufgel\\u00f6ster Inhalt\nconflict.resolved.placeholder=Bearbeiten Sie den aufgel\\u00f6sten Inhalt hier\\u2026\nconflict.btn.cancel=Abbrechen\nconflict.btn.use.ours=Unsere verwenden\nconflict.btn.use.theirs=Deren verwenden\nconflict.btn.resolve=\\u2714 Aufl\\u00f6sen & Committen\n\n# ── Sync-Diverged-Dialog ────────────────────────────────────\nsync.diverged.title=\\u26A0\\uFE0F Sync divergiert\n\n# ── Git-Status-Panel ────────────────────────────────────────\ngit.repo.url.placeholder=https://github.com/org/repo.git\ngit.repo.token.placeholder=Leer lassen, um vorhandenen Token beizubehalten\n\n# ── Action-Guards (JS) ──────────────────────────────────────\nguard.blocked.readonly=Gesperrt: Kontext ist schreibgesch\\u00fctzt \\u2014 kehren Sie zum Ursprung zur\\u00fcck oder wechseln Sie den Kontext\nguard.blocked.operation=Gesperrt: {0} l\\u00e4uft \\u2014 bitte zuerst abschlie\\u00dfen\nguard.warning.projection.badge=Projektion veraltet\nguard.warning.projection=Warnung: DB-Projektion ist veraltet \\u2014 Daten spiegeln m\\u00f6glicherweise nicht die neuesten Git-\\u00c4nderungen wider\nguard.warning.index.badge=Index veraltet\nguard.warning.index=Warnung: Suchindex veraltet \\u2014 Ergebnisse k\\u00f6nnten unvollst\\u00e4ndig sein\nguard.warning.rematerialize.badge=Re-Materialisierung erforderlich\nguard.merge.preview.failed=Merge-Vorschau konnte nicht geladen werden.\nguard.merge.cannot.proceed=Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C kann nicht durchgef\\u00fchrt werden.\nguard.merge.conflict.expected=\\u26A0\\uFE0F Merge-Konflikt erwartet! Der Merge von \\u201E{0}\\u201C in \\u201E{1}\\u201C w\\u00fcrde aufgrund von Konflikten fehlschlagen.\nguard.merge.already.merged=Bereits gemergt: \\u201E{0}\\u201C ist bereits ein Vorg\\u00e4nger von \\u201E{1}\\u201C.\nguard.merge.fastforward=\\u2705 Fast-Forward-Merge m\\u00f6glich. Keine Konflikte erkannt.\nguard.merge.preview.ok=Merge-Vorschau: Commits zum Mergen von \\u201E{0}\\u201C in \\u201E{1}\\u201C. Keine Konflikte erkannt.\nguard.merge.preview.unavailable=Merge-Vorschau nicht verf\\u00fcgbar.\nguard.proceed=Fortfahren?\nguard.cherrypick.preview.failed=Cherry-Pick-Vorschau konnte nicht geladen werden.\nguard.cherrypick.cannot.proceed=Cherry-Pick von {0} kann nicht durchgef\\u00fchrt werden.\nguard.cherrypick.conflict.expected=\\u26A0\\uFE0F Cherry-Pick w\\u00fcrde Konflikte verursachen! Commit {0} kann nicht sauber auf \\u201E{1}\\u201C angewendet werden.\nguard.cherrypick.clean=\\u2705 Cherry-Pick sieht sauber aus. Commit {0} auf \\u201E{1}\\u201C anwenden?\nguard.cherrypick.preview.unavailable=Cherry-Pick-Vorschau nicht verf\\u00fcgbar.\n\n# ── Verlaufs-Suche (JS) ─────────────────────────────────────\nhistory.search.failed=Suche fehlgeschlagen.\nhistory.search.no.results=Keine Ergebnisse gefunden.\nhistory.search.newest=neueste\nhistory.search.current.branch=aktueller Branch\nhistory.search.older=\\u00e4lter\nhistory.search.btn.view=\\uD83D\\uDC41 Ansehen\nhistory.search.btn.switch=Wechseln\nhistory.search.btn.variant=Variante\nhistory.search.btn.compare=Vergleichen\nhistory.search.matched=Gefunden:\n\n# ── Ansichten (JS) ───────────────────────────────────────────\nviews.d3.required=D3.js wird f\\u00fcr diese Ansicht ben\\u00f6tigt. Bitte \\u00fcberpr\\u00fcfen Sie Ihre Internetverbindung.\nviews.back=\\u21A9 zur\\u00fcck\nviews.valid=\\u2705 G\\u00fcltig\n\n# ── DSL-Editor (JS) ─────────────────────────────────────────\ndsl.branch.create.failed=Branch-Erstellung fehlgeschlagen: {0}\ndsl.branch.create.success=\\u2705 Branch \\u201E{0}\\u201C erstellt\ndsl.commit.loading=Commit {0} wird geladen\\u2026\ndsl.commit.loaded=Commit {0} geladen\ndsl.commit.no.content=Commit {0} hat keinen DSL-Inhalt\ndsl.diff.changes=Diff: {0} \\u00c4nderungen\ndsl.diff.failed=Diff fehlgeschlagen: {0}\ndsl.textdiff.loaded=Text-Diff geladen\ndsl.textdiff.failed=Text-Diff fehlgeschlagen: {0}\ndsl.incr.elements.added=\\u2705 + {0} Element(e) hinzugef\\u00fcgt\ndsl.incr.relations.added=\\u2705 + {0} Relation(en) hinzugef\\u00fcgt\ndsl.incr.section.elements=+ Hinzugef\\u00fcgte Elemente ({0})\ndsl.incr.section.relations=+ Hinzugef\\u00fcgte Relationen ({0})\ndsl.cherrypick.failed=Cherry-Pick fehlgeschlagen: {0}\ndsl.cherrypick.failed.title=Cherry-Pick fehlgeschlagen\ndsl.cherrypick.success=\\u2705 Cherry-Pick auf \\u201E{0}\\u201C \\u2192 {1}\ndsl.merge.failed=Merge fehlgeschlagen: {0}\ndsl.merge.failed.title=Merge fehlgeschlagen\ndsl.merge.success=\\u2705 \\u201E{0}\\u201C in \\u201E{1}\\u201C gemergt \\u2192 {2}\n\n# ── Graph (JS) ───────────────────────────────────────────────\ngraph.summary.direction=Richtung\ngraph.summary.origin=Ursprung\ngraph.summary.neighbors=Nachbarn\ngraph.summary.relations=Relationen\ngraph.summary.maxhops=Max. Spr\\u00fcnge\ngraph.summary.failed.node=Ausgefallener Knoten\ngraph.summary.direct.impact=Direkte Auswirkung\ngraph.summary.indirect.impact=Indirekte Auswirkung\ngraph.summary.total.affected=Gesamt betroffen\ngraph.summary.upstream.elements=Upstream-Elemente\ngraph.summary.downstream.elements=Downstream-Elemente\ngraph.query.failed={0}-Abfrage fehlgeschlagen: {1}\ngraph.label.upstream=Upstream\ngraph.label.downstream=Downstream\ngraph.label.failure=Ausfallauswirkung\n\n# ── Bewertung (JS) ──────────────────────────────────────────\nscoring.enter.requirement=Bitte geben Sie einen Gesch\\u00e4ftsanforderungstext ein, bevor Sie die Analyse starten.\nscoring.analysis.failed=\\u274C Analyse fehlgeschlagen: {0}\nscoring.analysis.error=Analyse fehlgeschlagen: {0}\nscoring.error=Fehler: {0}\nscoring.justify.failed=Begr\\u00fcndung f\\u00fcr {0} konnte nicht abgerufen werden: {1}\nscoring.relation.accepted=\\u2705 Beziehung akzeptiert: {0} \\u2192 {1}\nscoring.relation.accept.failed=\\u274C Akzeptierung fehlgeschlagen: {0}\n"}, "5cace13d5697fb4162dc58ee3e5745b2c138702e": {"t": 1785752755.9676986, "n": 43236, "h": "c88fbb75e588e6cc", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\nversions.sub.history=Verlauf\nversions.sub.variants=Varianten\nversions.sub.save=Version speichern\nversions.sub.sync=Synchronisieren\nversions.history.title=Versionsverlauf\nversions.history.refresh=Aktualisieren\nversions.history.loading=Versionsverlauf wird geladen\\u2026\nversions.history.load.failed=Verlauf konnte nicht geladen werden: {0}\nversions.history.none=Keine Versionen auf diesem Zweig gefunden.\nversions.undo=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.title=Letzte \\u00C4nderung auf diesem Zweig r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.title=Letzte \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.undo.confirm.body=Die letzte \\u00C4nderung auf <strong>{0}</strong> r\\u00FCckg\\u00E4ngig machen?\nversions.undo.confirm.detail=Der letzte Eintrag wird aus der Versionsgeschichte entfernt.\nversions.undo.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.undo.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.undo.last=Letzte: \\u201E{0}\\u201C\nversions.entry.view=Ansehen\nversions.entry.view.title=DSL dieser Version anzeigen\nversions.entry.compare=Vergleichen\nversions.entry.compare.title=Mit aktuellem Stand vergleichen\nversions.entry.restore=Zur\\u00FCcksetzen\nversions.entry.restore.title=Auf diese Version zur\\u00FCcksetzen\nversions.entry.revert=R\\u00FCckg\\u00E4ngig\nversions.entry.revert.title=Diese \\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.entry.variant=Variante\nversions.entry.variant.title=Variante aus dieser Version erstellen\nversions.entry.unknown.author=unbekannt\nversions.entry.no.message=Keine Nachricht\nversions.entry.marker.restore=Wiederherstellung\nversions.entry.marker.revert=R\\u00FCckg\\u00E4ngig\nversions.compare.title=Vergleich: {0} \\u2194 Aktuell\nversions.compare.same=Dies ist die aktuelle Version \\u2014 nichts zu vergleichen.\nversions.compare.added=Hinzugef\\u00FCgt\nversions.compare.removed=Entfernt\nversions.compare.changed=Ge\\u00E4ndert\nversions.compare.no.diff=Keine Unterschiede gefunden.\nversions.compare.summary.title=Vergleich: {0} \\u2194 Aktuell\nversions.restore.confirm.title=Auf Version zur\\u00FCcksetzen\nversions.restore.confirm.body=Auf Version <code>{0}</code> zur\\u00FCcksetzen?\nversions.restore.confirm.detail=Es wird eine neue Version erstellt, die den Inhalt der ausgew\\u00E4hlten Version enth\\u00E4lt. Die bisherige Versionsgeschichte bleibt erhalten.\nversions.restore.confirm.btn=Zur\\u00FCcksetzen\nversions.restore.preview=Vorschau der \\u00C4nderungen:\nversions.restore.preview.added=+{0} hinzugef\\u00FCgt\nversions.restore.preview.removed=\\u2212{0} entfernt\nversions.restore.preview.changed=~{0} ge\\u00E4ndert\nversions.restore.preview.none=Keine Unterschiede zum aktuellen Stand.\nversions.restore.success=Version wiederhergestellt\nversions.restore.success.detail=Version {0} wurde wiederhergestellt.\nversions.restore.failed=Wiederherstellung fehlgeschlagen\nversions.revert.confirm.title=\\u00C4nderung r\\u00FCckg\\u00E4ngig machen\nversions.revert.confirm.body=\\u00C4nderung von Version <code>{0}</code> r\\u00FCckg\\u00E4ngig machen?\nversions.revert.confirm.detail=Es wird eine neue Version erstellt, die die \\u00C4nderungen dieses Commits r\\u00FCckg\\u00E4ngig macht. Nur die \\u00C4nderungen dieses einen Commits werden zur\\u00FCckgenommen.\nversions.revert.confirm.btn=R\\u00FCckg\\u00E4ngig machen\nversions.revert.success=\\u00C4nderung r\\u00FCckg\\u00E4ngig gemacht\nversions.revert.success.detail=Version {0} wurde r\\u00FCckg\\u00E4ngig gemacht.\nversions.revert.failed=R\\u00FCckg\\u00E4ngig fehlgeschlagen\nversions.save.title=Version speichern\nversions.save.description=Erstellen Sie eine benannte Version (Snapshot) des aktuellen Architekturstands.\nversions.save.label.title=Titel\nversions.save.label.desc=Beschreibung (optional)\nversions.save.placeholder.title=z.B. Baseline nach Reviewrunde 2\nversions.save.placeholder.desc=Kurze Zusammenfassung der \\u00C4nderungen\nversions.save.btn=Version speichern\nversions.save.error.title=Bitte geben Sie einen Titel ein.\nversions.save.error.no.content=Kein DSL-Inhalt auf diesem Zweig\nversions.save.failed=Speichern fehlgeschlagen: {0}\nversions.save.success=Version gespeichert! ({0})\nversions.timestamp.today=Heute, {0}\nversions.error=Fehler\n\n# \\u2500\\u2500 Vergleich \\u2500\\u2500\ncompare.modal.title=Versionen vergleichen\ncompare.left.branch=Linke Version\ncompare.left.commit=Linker Commit (optional)\ncompare.right.branch=Rechte Version\ncompare.right.commit=Rechter Commit (optional)\ncompare.btn=Vergleichen\ncompare.loading=Vergleich wird durchgef\\u00FChrt\\u2026\ncompare.failed=Vergleich fehlgeschlagen.\ncompare.no.diff=Keine Unterschiede gefunden.\ncompare.summary=Zusammenfassung der Unterschiede:\ncompare.elements.added=+{0} Element(e) hinzugef\\u00FCgt\ncompare.elements.removed=\\u2212{0} Element(e) entfernt\ncompare.elements.changed=~{0} Element(e) ge\\u00E4ndert\ncompare.relations.added=+{0} Relation(en)\ncompare.relations.removed=\\u2212{0} Relation(en)\ncompare.relations.changed=~{0} Relation(en)\ncompare.no.differences=Keine Unterschiede gefunden\ncompare.column.added=Hinzugef\\u00FCgt ({0})\ncompare.column.changed=Ge\\u00E4ndert ({0})\ncompare.column.removed=Entfernt ({0})\ncompare.column.empty.added=Keine hinzugef\\u00FCgten Elemente\ncompare.column.empty.changed=Keine ge\\u00E4nderten Elemente\ncompare.column.empty.removed=Keine entfernten Elemente\ncompare.dsl.diff=DSL-Diff anzeigen\ncompare.dsl.diff.expert=(Expertenmodus)\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=Einstellungen\npreferences.btn.save=Einstellungen speichern\npreferences.btn.reset=Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\nworkspace.sync.status.synced=synchron\nworkspace.sync.status.behind=Aktualisierungen verf\\u00FCgbar\nworkspace.sync.status.ahead={0} unver\\u00F6ffentlicht\nworkspace.sync.status.diverged=abweichend\nworkspace.sync.panel.uptodate=Auf dem neuesten Stand\nworkspace.sync.panel.behind=Aktualisierungen vom Team verf\\u00FCgbar\nworkspace.sync.panel.ahead={0} unver\\u00F6ffentlichte \\u00C4nderung(en)\nworkspace.sync.panel.diverged=Abweichend \\u2014 beide Seiten haben \\u00C4nderungen\nworkspace.sync.panel.resolve=Aufl\\u00F6sen\\u2026\nworkspace.sync.panel.resolve.title=Dialog zur Aufl\\u00F6sung \\u00F6ffnen\nworkspace.sync.panel.last.synced=Zuletzt synchronisiert\nworkspace.sync.panel.last.published=Zuletzt ver\\u00F6ffentlicht\nworkspace.sync.panel.synced.commit=Synchronisierter Commit\nworkspace.sync.panel.unpublished=Unver\\u00F6ffentlicht\nworkspace.sync.panel.changes={0} \\u00C4nderung(en)\nworkspace.sync.tab.title=Mit Team-Repository synchronisieren\nworkspace.sync.tab.refresh=Aktualisieren\nworkspace.sync.tab.refresh.title=Synchronisierungsstatus aktualisieren\nworkspace.sync.tab.loading=Synchronisierungsstatus wird geladen\\u2026\nworkspace.sync.from.shared=Vom Team aktualisieren\nworkspace.sync.from.shared.title=\\u00C4nderungen vom Team-Repository in Ihren Arbeitsbereich \\u00FCbernehmen\nworkspace.sync.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.sync.publish.title=Ihre \\u00C4nderungen f\\u00FCr das Team ver\\u00F6ffentlichen\nworkspace.sync.from.success=Synchronisierung abgeschlossen\nworkspace.sync.from.success.detail=Vom Team-Repository aktualisiert.\nworkspace.sync.publish.success=Ver\\u00F6ffentlichung abgeschlossen\nworkspace.sync.publish.success.detail=\\u00C4nderungen wurden mit dem Team-Repository geteilt.\nworkspace.sync.publish.failed=Ver\\u00F6ffentlichung fehlgeschlagen\nworkspace.local.changes=Lokale \\u00C4nderungen\nworkspace.local.refresh=Aktualisieren\nworkspace.local.none=Keine unver\\u00F6ffentlichten \\u00C4nderungen. Ihr Arbeitsbereich ist mit dem Team-Repository synchron.\nworkspace.local.count={0} unver\\u00F6ffentlichte \\u00C4nderung(en) auf <strong>{1}</strong>.\nworkspace.local.publish=F\\u00FCr Team ver\\u00F6ffentlichen\nworkspace.local.sync=Vom Team aktualisieren\nworkspace.dirty.title=Arbeitsbereich hat ungespeicherte \\u00C4nderungen\nworkspace.clean.title=Aktueller Arbeitsbereich / Benutzer\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\ncontext.mode.editable=Arbeitsversion\ncontext.mode.readonly.label=Nur ansehen\ncontext.mode.temporary=Entwurf\ncontext.back=Zur\\u00FCck\ncontext.back.title=Zur\\u00FCck zum vorherigen Kontext\ncontext.origin=Zum Ursprung\ncontext.origin.title=Zur\\u00FCck zum Ursprung\ncontext.copyback=Zur\\u00FCckkopieren\ncontext.copyback.title=Elemente zur\\u00FCck in die Arbeitsversion kopieren\ncontext.new.variant=Neue Variante\ncontext.new.variant.title=Neue Variante erstellen\ncontext.compare=Vergleichen\ncontext.compare.title=Versionen vergleichen\ncontext.search=Suche: {0}\ncontext.unsaved=Ungespeicherte \\u00C4nderungen\ncontext.from=von {0}\ncontext.saved.just.now=Gerade eben gespeichert\ncontext.saved.minutes=Gespeichert vor {0} Min.\ncontext.saved.hours=Gespeichert vor {0} Std.\ncontext.saved.days=Gespeichert vor {0} Tag(en)\ncontext.sync.unpublished={0} \\u00C4nderung(en) zum Teilen\ncontext.sync.unpublished.title=Jetzt ver\\u00F6ffentlichen\ncontext.sync.behind=Aktualisierungen verf\\u00FCgbar\ncontext.sync.behind.title=Jetzt aktualisieren\ncontext.sync.diverged=Versionen weichen ab\ncontext.compare.loading=Vergleichsfunktion wird geladen\\u2026\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\nvariants.loading=Varianten werden geladen\\u2026\nvariants.load.failed=Varianten konnten nicht geladen werden: {0}\nvariants.none.available=Keine Varianten-Informationen verf\\u00FCgbar.\nvariants.empty.title=Keine Varianten vorhanden\nvariants.empty.description=Varianten erm\\u00F6glichen paralleles Arbeiten an verschiedenen Architektur-Entw\\u00FCrfen, ohne die Hauptversion zu beeinflussen.\nvariants.empty.create=Erste Variante erstellen\nvariants.main=Haupt\nvariants.main.description=Hauptversion \\u2014 Referenz f\\u00FCr alle Varianten\nvariants.derived.description=Variante \\u2014 abgeleitet von Hauptversion\nvariants.active=Aktiv\nvariants.open=\\u00D6ffnen\nvariants.open.title=Zu dieser Variante wechseln\nvariants.compare.title=Mit aktueller Version vergleichen\nvariants.integrate=Integrieren\nvariants.integrate.title=\\u00C4nderungen dieser Variante in die aktuelle Version \\u00FCbernehmen\nvariants.delete.title=Diese Variante l\\u00F6schen\nvariants.delete.btn=L\\u00F6schen\nvariants.delete.confirm.title=Variante l\\u00F6schen\nvariants.delete.confirm.body=Variante <strong>{0}</strong> wirklich l\\u00F6schen?\nvariants.delete.confirm.warning=Dies kann nicht r\\u00FCckg\\u00E4ngig gemacht werden.\nvariants.delete.success=Variante gel\\u00F6scht\nvariants.delete.success.detail=Variante \\u201E{0}\\u201C wurde gel\\u00F6scht.\nvariants.delete.failed=L\\u00F6schen fehlgeschlagen\nvariants.delete.notfound=Variante \\u201E{0}\\u201C nicht gefunden.\nvariants.integrate.confirm.title=Integrieren\nvariants.integrate.confirm.body=\\u00C4nderungen aus <strong>{0}</strong> in <strong>{1}</strong> \\u00FCbernehmen?\nvariants.integrate.confirm.btn=Integrieren\nvariants.integrate.preview=Vorschau: {0} \\u00C4nderung(en) werden \\u00FCbernommen\nvariants.integrate.preview.detail=+{0} Elemente, \\u2212{1} entfernt, ~{2} ge\\u00E4ndert\nvariants.integrate.success=Erfolgreich integriert\nvariants.integrate.success.detail=\\u00C4nderungen aus \\u201E{0}\\u201C in \\u201E{1}\\u201C \\u00FCbernommen.\nvariants.integrate.failed=Integration fehlgeschlagen\nvariants.new.variant=Neue Variante\nvariants.new.variant.title=Neue Variante erstellen\nvariants.refresh=Aktualisieren\nvariants.variant.name.required=Bitte geben Sie einen Variantennamen ein.\nvariants.variant.error=Fehler: {0}\nvariants.create.modal.title=Neue Variante erstellen\nvariants.create.modal.description=Erstellen Sie eine neue Variante aus Ihrem aktuellen Architekturstand. Die Variante enth\\u00E4lt eine Kopie des aktuellen Stands und kann unabh\\u00E4ngig bearbeitet werden.\nvariants.create.modal.label=Variantenname\nvariants.create.modal.placeholder=z.B. mein-experiment, review-runde-2\nvariants.create.modal.hint=Verwenden Sie Kleinbuchstaben, Zahlen und Bindestriche. Keine Leerzeichen.\nvariants.create.modal.btn=Variante erstellen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak-Einrichtung\nhelp.toc.SSO_INTEGRATION=SSO-Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL-Einrichtung\nhelp.toc.MSSQL-SETUP=MSSQL-Einrichtung\nhelp.toc.ORACLE-SETUP=Oracle-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\nhelp.toc.WORKSPACE_VERSIONING=Arbeitsbereich & Versionierung\n\n# ── Bewertung ────────────────────────────────────────────────\nscoring.analyzing=Analysiere\\u2026\nscoring.analyze.btn=Mit KI analysieren\nscoring.view.architecture=Architektur anzeigen \\u2192\nscoring.generating=\\u23F3 Wird generiert\\u2026\nscoring.no.justification=(keine Begr\\u00FCndung zur\\u00FCckgegeben)\nscoring.justification.title=\\uD83D\\uDCCB Begr\\u00FCndung f\\u00FCr {0}\n\n# ── Import ───────────────────────────────────────────────────\nimport.select.profile=-- Profil ausw\\u00E4hlen --\nimport.previewing=Vorschau wird erstellt\\u2026\nimport.preview.failed=Vorschau fehlgeschlagen: {0}\nimport.importing=Wird importiert\\u2026\nimport.import.failed=Import fehlgeschlagen: {0}\nimport.select.profile.alert=Bitte w\\u00E4hlen Sie ein Importprofil aus.\nimport.select.file.alert=Bitte w\\u00E4hlen Sie eine Datei zum Importieren aus.\nimport.preview.ok=Vorschau OK\nimport.import.success=Import erfolgreich\nimport.import.fail=Fehlgeschlagen\nimport.elements.label=Elemente (gesamt/zugeordnet)\nimport.relations.label=Relationen (gesamt/zugeordnet)\nimport.relations.created=Relationen erstellt\nimport.hypotheses.created=Hypothesen erstellt\nimport.unmapped.types=Nicht zugeordnete Typen ({0})\nimport.warnings=Warnungen ({0})\nimport.warnings.more=\\u2026und {0} weitere\nimport.elements.strong=Elemente:\nimport.relations.strong=Relationen:\n\n# ── Export ────────────────────────────────────────────────────\nexport.no.svg=Kein SVG in der aktuellen Ansicht gefunden. Wechseln Sie zu Sunburst-, Baum- oder Entscheidungsansicht.\nexport.png.failed=PNG-Export fehlgeschlagen. Versuchen Sie stattdessen den SVG-Export.\nexport.visio.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Visio exportieren.\nexport.visio.failed=Visio-Export fehlgeschlagen: {0}\nexport.archimate.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach ArchiMate exportieren.\nexport.archimate.failed=ArchiMate-Export fehlgeschlagen: {0}\nexport.json.no.scores=Keine Bewertungen zum Exportieren vorhanden. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\nexport.json.failed=JSON-Export fehlgeschlagen: {0}\nexport.mermaid.no.text=Bitte geben Sie einen Gesch\\u00E4ftsanforderungstext ein, bevor Sie nach Mermaid exportieren.\nexport.mermaid.failed=Mermaid-Export fehlgeschlagen: {0}\nexport.dot.no.data=DOT-Export erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.mermaid.tree.no.data=Mermaid-Baumexport erfordert Taxonomiedaten. Bitte laden Sie zuerst die Taxonomie.\nexport.failed.http=Export fehlgeschlagen (HTTP {0})\n\n# ── Qualit\\u00E4ts-Dashboard ─────────────────────────────────────\nquality.loading=Metriken werden geladen\\u2026\nquality.load.failed=\\u26A0\\uFE0F Qualit\\u00E4tsmetriken konnten nicht geladen werden.\nquality.total=Gesamt\nquality.accepted=Akzeptiert\nquality.rejected=Abgelehnt\nquality.pending=Ausstehend\nquality.rate=Quote\nquality.by.type=Nach Relationstyp:\nquality.table.type=Typ\nquality.table.proposed=Vorgeschlagen\nquality.table.accepted=Akzeptiert\nquality.table.rejected=Abgelehnt\nquality.table.rate=Quote\nquality.top.rejected=Top abgelehnt (h\\u00F6chste Konfidenz):\nquality.table.source=Quelle\nquality.table.target=Ziel\nquality.table.confidence=Konf.\n\n# ── Abdeckungs-Dashboard ─────────────────────────────────────\ncoverage.loading=Abdeckung wird geladen\\u2026\ncoverage.load.failed=\\u26A0\\uFE0F Abdeckungsstatistiken konnten nicht geladen werden.\ncoverage.total.nodes=Knoten gesamt\ncoverage.covered=Abgedeckt\ncoverage.uncovered=Nicht abgedeckt\ncoverage.coverage=Abdeckung\ncoverage.requirements=Anforderungen\ncoverage.avg.per.node=\\u00D8 Anf./Knoten\ncoverage.top.covered=Am meisten abgedeckte Knoten:\ncoverage.table.node=Knotencode\ncoverage.table.requirements=Anforderungen\ncoverage.gap.candidates=L\\u00FCckenkandidaten (ohne Abdeckung):\ncoverage.no.data.hint=Keine Abdeckungsdaten verf\\u00FCgbar. Verwenden Sie \\u201EAktuelle Analyse aufzeichnen\\u201C zum Starten.\ncoverage.loading.node=Knotenabdeckung wird geladen\\u2026\ncoverage.back=\\u2190 Zur\\u00FCck\ncoverage.node.requirements={0} Anforderung(en)\ncoverage.table.req.id=Anforderungs-ID\ncoverage.table.score=Bewertung\ncoverage.table.analyzed=Analysiert am\ncoverage.node.no.requirements=Keine Anforderungen decken diesen Knoten ab.\ncoverage.load.node.failed=\\u26A0\\uFE0F Knotenabdeckung konnte nicht geladen werden.\ncoverage.no.scores=Keine Analyseergebnisse verf\\u00FCgbar. Bitte f\\u00FChren Sie zuerst eine Analyse durch.\ncoverage.prompt.req.id=Geben Sie eine Anforderungskennung ein (z.B. REQ-101):\ncoverage.record.failed=Abdeckung konnte nicht aufgezeichnet werden (HTTP {0}).\ncoverage.record.error=Abdeckung konnte nicht aufgezeichnet werden. Pr\\u00FCfen Sie die Konsole.\n\n# ── Relationen ───────────────────────────────────────────────\nrelations.loading=Wird geladen\\u2026\nrelations.load.failed=\\u26A0\\uFE0F Relationen konnten nicht geladen werden.\nrelations.none=Keine Relationen gefunden.\nrelations.count={0} Relation(en)\nrelations.table.source=Quelle\nrelations.table.target=Ziel\nrelations.table.type=Typ\nrelations.table.provenance=Herkunft\nrelations.delete.title=Relation l\\u00F6schen\nrelations.delete.confirm=Diese Relation l\\u00F6schen?\nrelations.delete.failed=\\u26A0\\uFE0F Relation konnte nicht gel\\u00F6scht werden.\nrelations.create.error=Fehler beim Erstellen der Relation: {0}\nrelations.create.required=Quell- und Zielcode sind erforderlich.\nrelations.impact.no.scores=\\u26A0\\uFE0F F\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen f\\u00FCr die Auswirkungsanalyse zu generieren.\nrelations.impact.analyzing=Auswirkungen werden analysiert\\u2026\nrelations.impact.elements={0} betroffene(s) Element(e)\nrelations.impact.table.code=Code\nrelations.impact.table.name=Name\nrelations.impact.table.impact=Auswirkung\nrelations.impact.relationships={0} durchlaufene Beziehung(en)\nrelations.impact.table.from=Von\nrelations.impact.table.to=Nach\nrelations.impact.no.data=Keine Auswirkungsdaten zur\\u00FCckgegeben.\n\n# ── Suche ────────────────────────────────────────────────────\nsearch.embeddings.available=\\uD83E\\uDDE0 Embeddings: {0} Knoten\nsearch.embeddings.available.title=Semantische Embeddings verf\\u00FCgbar \\u2014 Modell: {0}\nsearch.embeddings.unavailable=\\uD83E\\uDDE0 Embeddings: nicht verf\\u00FCgbar\nsearch.embeddings.unavailable.title=Embeddings nicht geladen \\u2014 Semantische/Hybrid-/Graph-Suche deaktiviert\nsearch.searching=Suche l\\u00E4uft\\u2026\nsearch.results.count={0} Ergebnis(se)\nsearch.no.graph.results=Keine Graph-Ergebnisse gefunden.\nsearch.top.relation.types=H\\u00E4ufigste Relationstypen:\nsearch.finding.similar=\\u00C4hnliche Knoten werden gesucht\\u2026\nsearch.matched.nodes={0} zugeordnete(r) Knoten\n\n# ── DSL-Editor ───────────────────────────────────────────────\ndsl.loading=Aktuelle Architektur wird geladen\\u2026\ndsl.loaded=Aktuelle Architektur-DSL geladen ({0} Zeichen)\ndsl.load.failed=Laden fehlgeschlagen: {0}\ndsl.parsing=Wird geparst\\u2026\ndsl.parsed=Geparst: {0} Elemente, {1} Relationen\ndsl.parse.error=Parse-Fehler: {0}\ndsl.validating=Wird validiert\\u2026\ndsl.valid=\\u2705 G\\u00FCltige DSL\ndsl.invalid=\\u274C Validierungsfehler\ndsl.validate.error=Validierungsfehler: {0}\ndsl.formatting=Wird formatiert\\u2026\ndsl.formatted=\\u2728 Formatiert\ndsl.format.error=Formatierungsfehler: {0}\ndsl.committing=Commit auf Branch \\u201E{0}\\u201C\\u2026\ndsl.commit.default.message=Manueller Commit\ndsl.commit.rejected=Commit abgelehnt: Validierungsfehler\ndsl.committed=\\u2705 Committed: {0}\ndsl.commit.error=Commit-Fehler: {0}\ndsl.materializing=Wird materialisiert\\u2026\ndsl.materialize.validation.failed=Materialisierung fehlgeschlagen: Validierungsfehler\ndsl.materialized=\\u2705 Materialisiert: {0} Relationen, {1} Elemente\ndsl.materialize.error=Materialisierungsfehler: {0}\ndsl.incremental.loading=Verlauf f\\u00FCr inkrementelle Materialisierung wird geladen\\u2026\ndsl.incremental.need.commits=Mindestens 2 Commits auf Branch \\u201E{0}\\u201C f\\u00FCr inkrementelle Materialisierung erforderlich\ndsl.incremental.done=\\u2705 Inkrementell: {0} Relationen, {1} Elemente\ndsl.incremental.error=Inkrementeller Fehler: {0}\ndsl.history.failed=Verlauf konnte nicht geladen werden\ndsl.history.empty=Noch keine Commits\n\n# ── Merge & Konfliktl\\u00F6sung ──────────────────────────────────\nmerge.no.conflict.title=Kein Konflikt\nmerge.no.conflict.merge=Kein Konflikt zwischen \\u201E{0}\\u201C und \\u201E{1}\\u201C erkannt.\nmerge.conflict.title=\\u26A0\\uFE0F Merge-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.error.title=Fehler\nmerge.error.load=Konfliktdetails konnten nicht geladen werden: {0}\nmerge.no.conflict.cherrypick=Kein Konflikt f\\u00FCr Cherry-Pick auf \\u201E{0}\\u201C erkannt.\nmerge.cherrypick.conflict.title=\\u26A0\\uFE0F Cherry-Pick-Konflikt \\u2014 Manuelle Aufl\\u00F6sung erforderlich\nmerge.ours.label=Unsere ({0})\nmerge.theirs.label=Ihre ({0})\nmerge.empty.content=Leerer Inhalt\nmerge.empty.warning=Der aufgel\\u00F6ste Inhalt darf nicht leer sein.\nmerge.resolution.failed=Aufl\\u00F6sung fehlgeschlagen\nmerge.resolved.title={0}-Konflikt aufgel\\u00F6st\nmerge.resolved.detail=Inhalt erfolgreich committed: {0}\nmerge.resolution.error=Aufl\\u00F6sung fehlgeschlagen: {0}\nmerge.diverged.resolved=Abweichender Zustand aufgel\\u00F6st\n\n# ── Einf\\u00FChrung ─────────────────────────────────────────────\nonboarding.title=\\uD83C\\uDF0C Willkommen beim NATO NC3T Taxonomy Browser\nonboarding.intro=Ordnen Sie Ihre Gesch\\u00E4ftsanforderungen der NATO-C3-Taxonomie in drei einfachen Schritten zu:\nonboarding.step1=Beschreiben Sie Ihre Anforderung im Textbereich rechts\nonboarding.step2=Klicken Sie auf <strong>Mit KI analysieren</strong>, um passende Taxonomie-Knoten zu finden\nonboarding.step3=Erkunden Sie die Ergebnisse in verschiedenen Ansichten, exportieren Sie Diagramme und durchsuchen Sie Abh\\u00E4ngigkeiten\nonboarding.dismiss=Verstanden \\u2014 los geht's!\n\n# ── Graph ────────────────────────────────────────────────────\ngraph.apqc.title=APQC-Prozesshierarchie\ngraph.apqc.processes={0} Prozesse\ngraph.apqc.no.data=Keine APQC-Hierarchiedaten gefunden. Importieren Sie zuerst eine APQC-Datei \\u00FCber den Import-Tab.\ngraph.apqc.load.failed=APQC-Hierarchie konnte nicht geladen werden: {0}\n\n# ── Hilfe ────────────────────────────────────────────────────\nhelp.load.failed=Hilfeverzeichnis konnte nicht geladen werden.\n\n# ── Git-Status ───────────────────────────────────────────────\ngit.projection=Projektion\ngit.index=Index\ngit.fresh=aktuell\ngit.stale=VERALTET\ngit.variants.count={0} Variante(n)\ngit.versions.count={0} Version(en)\ngit.operation.in.progress={0} l\\u00E4uft\n\n# ── Kontext\\u00FCbertragung ──────────────────────────────────────\ntransfer.preview.failed=Vorschau fehlgeschlagen.\ntransfer.apply.confirm=Selektive \\u00DCbertragung anwenden? Dies erstellt einen neuen Commit.\ntransfer.apply.success=\\u00DCbertragung abgeschlossen. Commit: {0}\ntransfer.apply.failed=\\u00DCbertragung fehlgeschlagen: {0}\ntransfer.required.ids=Quell- und Ziel-Commit-IDs sind erforderlich.\ntransfer.selected=Ausgew\\u00E4hlt: {0} Elemente, {1} Relationen.\ntransfer.conflicts={0} Konflikt(e) erkannt.\ntransfer.no.conflicts=Keine Konflikte.\ntransfer.table.id=ID\ntransfer.table.current=Aktuell\ntransfer.table.incoming=Eingehend\ntransfer.table.views=Betroffene Ansichten\n\n# ── Ansichten ────────────────────────────────────────────────\nviews.tooltip.match=Treffer: {0}%\n"}, "f38b89974a9cc32d2bc411f0a5d264f4742bfd1a": {"t": 1785752757.7738307, "n": 20331, "h": "6d5e75b9c74f0066", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=Einstellungen\npreferences.btn.save=Einstellungen speichern\npreferences.btn.reset=Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\nhelp.toc.DEPLOYMENT_CHECKLIST=Deployment-Checkliste\nhelp.toc.OPERATIONS_GUIDE=Betriebshandbuch\nhelp.toc.KEYCLOAK_SETUP=Keycloak-Einrichtung\nhelp.toc.SSO_INTEGRATION=SSO-Integration\nhelp.toc.POSTGRESQL-SETUP=PostgreSQL-Einrichtung\nhelp.toc.MSSQL-SETUP=MSSQL-Einrichtung\nhelp.toc.ORACLE-SETUP=Oracle-Einrichtung\nhelp.toc.AI_TRANSPARENCY=KI-Transparenz\nhelp.toc.AI_LITERACY_CONCEPT=KI-Kompetenzkonzept\nhelp.toc.DATA_PROTECTION=Datenschutz\nhelp.toc.ACCESSIBILITY=Barrierefreiheit\nhelp.toc.BSI_KI_CHECKLIST=BSI-KI-Checkliste\nhelp.toc.DIGITAL_SOVEREIGNTY=Digitale Souver\\u00e4nit\\u00e4t\nhelp.toc.USE_CASE_WISSENSKONSERVIERUNG=Wissenskonservierung\nhelp.toc.VERWALTUNGSINTEGRATION=Verwaltungsintegration\nhelp.toc.UI_GAP_ANALYSIS=UI-L\\u00fcckenanalyse\n"}, "cbf01f258cd33718ddea4c05798da87757ec01a4": {"t": 1785752760.5447683, "n": 19588, "h": "6ec9d5d7bbeb6417", "c": "# ── Anwendung ──\napp.title=Taxonomie Architektur Analysator\napp.version=v1.1.1\n\n# ── Navigation ──\nnav.analyze=Analyse\nnav.architecture=Architektur\nnav.graph=Graph\nnav.relations=Beziehungen\nnav.export=Export\nnav.versions=Versionen\nnav.dsl=DSL\nnav.help=Hilfe\nnav.admin=Admin\nnav.preferences=Einstellungen\n\n# ── Navigationsleiste ──\nnavbar.about=\\u00DCber diese Anwendung\nnavbar.darkmode=Helles/Dunkles Design umschalten\nnavbar.admin.locked=Admin-Modus \\u2014 gesperrt\nnavbar.admin.unlocked=Admin-Modus \\u2014 entsperrt\nnavbar.admin.label=Admin-Modus\n\n# ── Statusleiste ──\nstatus.loading=Laden\\u2026\nstatus.ready=Bereit\nstatus.git.unavailable=Git-Status nicht verf\\u00FCgbar\n\n# ── Analyse-Tab ──\nanalyze.title=Architektur-Analyse\nanalyze.input.label=Beschreiben Sie das System oder die F\\u00E4higkeit, die Sie bewerten:\nanalyze.input.placeholder=z.B. Integrierte Krankenhaus-Kommunikations- und Koordinationsplattform\nanalyze.btn.analyze=Analysieren\nanalyze.btn.clear=L\\u00F6schen\nanalyze.status.running=Analyse l\\u00E4uft\\u2026\nanalyze.status.complete=Analyse abgeschlossen\nanalyze.status.error=Analysefehler\nanalyze.status.unavailable=KI-Analyse ist nicht verf\\u00FCgbar\n\n# ── Browser-Panel ──\nbrowse.title=Taxonomie-Browser\nbrowse.search.placeholder=Taxonomie durchsuchen\\u2026\nbrowse.expand.all=Alle aufklappen\nbrowse.collapse.all=Alle zuklappen\nbrowse.view.list=Liste\nbrowse.view.tree=Baum\nbrowse.view.tabs=Tabs\nbrowse.view.sunburst=Sonnenstrahl\nbrowse.view.decision=Entscheidungskarte\nbrowse.nodes=Knoten\nbrowse.no.results=Keine Ergebnisse gefunden\nbrowse.root.select=W\\u00E4hlen Sie eine Wurzelkategorie\n\n# ── Architektur-Tab ──\narchitecture.title=Architektur-Ansicht\narchitecture.no.data=Keine Architekturdaten verf\\u00FCgbar\n\n# ── Graph-Tab ──\ngraph.title=Graph-Explorer\ngraph.depth.label=Tiefe\ngraph.direction.upstream=Aufw\\u00E4rts\ngraph.direction.downstream=Abw\\u00E4rts\ngraph.direction.both=Beide\ngraph.no.data=Keine Graphdaten verf\\u00FCgbar\n\n# ── Beziehungen-Tab ──\nrelations.title=Beziehungen\nrelations.proposals=Beziehungsvorschl\\u00E4ge\nrelations.add=Beziehung hinzuf\\u00FCgen\nrelations.source.label=Quellknoten-Code\nrelations.target.label=Zielknoten-Code\nrelations.type.label=Beziehungstyp\nrelations.no.proposals=Keine Vorschl\\u00E4ge verf\\u00FCgbar\nrelations.btn.propose=Beziehungen vorschlagen\nrelations.btn.accept=Akzeptieren\nrelations.btn.reject=Ablehnen\n\n# ── Export-Tab ──\nexport.title=Export\nexport.format.label=Format\nexport.btn.export=Exportieren\nexport.btn.download=Herunterladen\n\n# ── Versionen-Tab ──\nversions.title=Versionen\nversions.history=Verlauf\nversions.save=Version speichern\nversions.restore=Wiederherstellen\nversions.compare=Vergleichen\nversions.no.history=Kein Versionsverlauf verf\\u00FCgbar\nversions.timeline=Zeitachse\nversions.btn.save=Speichern\nversions.commit.message=Commit-Nachricht\nversions.author=Autor\n\n# ── DSL-Editor ──\ndsl.title=DSL-Editor\ndsl.commit.author=Autor\ndsl.commit.author.hint=(optional)\ndsl.commit.message=Commit-Nachricht\ndsl.commit.message.placeholder=Beschreiben Sie Ihre \\u00C4nderungen\\u2026\ndsl.btn.commit=Committen\ndsl.btn.materialize=Materialisieren\ndsl.btn.commit.title=DSL in ausgew\\u00E4hlten Branch committen (keine Materialisierung)\ndsl.btn.materialize.title=DSL in Taxonomie-Datenbank materialisieren\n\n# ── Hilfe-Tab ──\nhelp.title=Hilfe\nhelp.toc.USER_GUIDE=Benutzerhandbuch\nhelp.toc.CONCEPTS=Konzepte\nhelp.toc.EXAMPLES=Beispiele\nhelp.toc.FRAMEWORK_IMPORT=Framework-Import\nhelp.toc.GIT_INTEGRATION=Git-Integration\nhelp.toc.PREFERENCES=Einstellungen\nhelp.toc.AI_PROVIDERS=KI-Anbieter\nhelp.toc.CONFIGURATION_REFERENCE=Konfigurationsreferenz\nhelp.toc.API_REFERENCE=API-Referenz\nhelp.toc.CURL_EXAMPLES=cURL-Beispiele\nhelp.toc.ARCHITECTURE=Architektur\nhelp.toc.DEVELOPER_GUIDE=Entwicklerhandbuch\nhelp.toc.DEPLOYMENT_GUIDE=Bereitstellungshandbuch\nhelp.toc.SECURITY=Sicherheit\nhelp.toc.DATABASE_SETUP=Datenbank-Einrichtung\nhelp.audience.everyone=Alle\nhelp.audience.developers=Entwickler\nhelp.audience.admins=Administratoren\nhelp.audience.integrators=Integratoren\nhelp.audience.devops=DevOps\n\n# ── Admin-Tab ──\nadmin.title=Verwaltung\nadmin.diagnostics=LLM-Diagnose\nadmin.prompt.editor=Prompt-Vorlagen-Editor\n\n# ── Einstellungen-Tab ──\npreferences.title=Einstellungen\npreferences.btn.save=Einstellungen speichern\npreferences.btn.reset=Auf Standard zur\\u00FCcksetzen\npreferences.saved=Einstellungen erfolgreich gespeichert.\npreferences.reset=Einstellungen auf Standard zur\\u00FCckgesetzt.\npreferences.save.failed=Speichern fehlgeschlagen: {0}\npreferences.reset.failed=Zur\\u00FCcksetzen fehlgeschlagen: {0}\npreferences.history=Verlauf\npreferences.no.history=Noch kein Verlauf vorhanden.\n\n# ── Dialoge / Modale ──\ndialog.confirm=Best\\u00E4tigen\ndialog.cancel=Abbrechen\ndialog.close=Schlie\\u00DFen\ndialog.ok=OK\ndialog.yes=Ja\ndialog.no=Nein\ndialog.delete.confirm=M\\u00F6chten Sie dies wirklich l\\u00F6schen?\ndialog.save.confirm=M\\u00F6chten Sie wirklich speichern?\n\n# ── Fehler (Backend) ──\nerror.internal=Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut oder pr\\u00FCfen Sie die Server-Protokolle.\nerror.bad.request=Ung\\u00FCltige Anfrage: {0}\nerror.not.found=Ressource nicht gefunden.\nerror.loading=Taxonomiedaten werden noch geladen. Bitte warten Sie.\nerror.invalid.document=Ung\\u00FCltiger Dokumentname\nerror.forbidden=Zugriff verweigert.\n\n# ── Suche ──\nsearch.title=Suche\nsearch.placeholder=Suchen\\u2026\nsearch.btn.search=Suchen\nsearch.fulltext=Volltext\nsearch.semantic=Semantisch\nsearch.hybrid=Hybrid\nsearch.graph=Graph\nsearch.no.results=Keine Ergebnisse gefunden\n\n# ── Git / Workspace ──\ngit.status.unavailable=Git-Status nicht verf\\u00FCgbar\ngit.branch.main=main\ngit.branch.draft=Entwurf\nworkspace.sync.title=Workspace-Synchronisation\nworkspace.sync.success=Synchronisation abgeschlossen\nworkspace.sync.failed=Synchronisation fehlgeschlagen\nworkspace.merge.title=Merge-Aufl\\u00F6sung\nworkspace.merge.success=Merge erfolgreich\nworkspace.merge.conflict=Merge-Konflikt erkannt\n\n# ── Abdeckung / Qualit\\u00E4t ──\ncoverage.title=Abdeckungs-Dashboard\ncoverage.no.data=Keine Abdeckungsdaten verf\\u00FCgbar\nquality.title=Qualit\\u00E4tsbewertung\nquality.no.data=Keine Qualit\\u00E4tsdaten verf\\u00FCgbar\n\n# ── Onboarding ──\nonboarding.welcome=Willkommen beim Taxonomie Architektur Analysator\nonboarding.skip=Tour \\u00FCberspringen\n\n# ── \\u00DCber ──\nabout.title=\\u00DCber\nabout.version=Version\nabout.license=Lizenz\n\n# ── Operationsergebnisse ──\noperation.success=Vorgang erfolgreich abgeschlossen\noperation.failed=Vorgang fehlgeschlagen: {0}\n\n# ── Sprachauswahl ──\nlang.en=English\nlang.de=Deutsch\nlang.selector.label=Sprache\n\n# ── Passwort \\u00E4ndern ──\npassword.change.title=Passwort \\u00E4ndern\npassword.current=Aktuelles Passwort\npassword.new=Neues Passwort\npassword.confirm=Neues Passwort best\\u00E4tigen\npassword.min.length=Mindestens 8 Zeichen.\npassword.btn.change=Passwort \\u00E4ndern\npassword.back=\\u2190 Zur\\u00FCck zur Anwendung\n\n# ── Kontextleiste ──\ncontext.branch=Branch\ncontext.mode.readonly=Nur Lesen\ncontext.mode.readwrite=Lesen/Schreiben\n\n# ── Bewertung ──\nscoring.title=Bewertung\nscoring.legend=\\u00DCbereinstimmungslegende\nscoring.interactive=Interaktiver Modus\nscoring.stale.warning=Ergebnisse k\\u00F6nnten veraltet sein\n\n# ── Import ──\nimport.title=Import\nimport.btn.import=Importieren\nimport.file.label=Datei ausw\\u00E4hlen\n\n# ── Varianten ──\nvariants.title=Varianten\nvariants.create=Variante erstellen\nvariants.delete=Variante l\\u00F6schen\nvariants.delete.confirm=M\\u00F6chten Sie diese Variante wirklich l\\u00F6schen?\nvariants.browse=Varianten durchsuchen\n\n# ── Browser: LLM-Protokoll ──\nbrowse.llm.log.empty=Noch keine LLM-Aufrufe. F\\u00FChren Sie eine Analyse durch, um LLM-Kommunikationsdetails zu sehen.\n\n# ── Browser: Import/Export ──\nbrowse.import.failed=\\u274C Import fehlgeschlagen: {0}\nbrowse.import.loaded=\\u2705 Analyse geladen: {0} Knoten bewertet.\nbrowse.report.export.failed=Berichtsexport fehlgeschlagen: {0}\n\n# ── Browser: Manuelle Bewertung ──\nbrowse.manual.scoring=Manuelle Bewertung\nbrowse.manual.enter.text=Bitte geben Sie einen Anforderungstext ein (wird als Bezeichnung f\\u00FCr den Export verwendet).\nbrowse.manual.mode.info=\\u270F\\uFE0F Manueller Modus: Setzen Sie Bewertungen (0\\u2013100) auf beliebige Knoten, dann klicken Sie \"Manuelle Bewertungen anwenden\".\nbrowse.manual.score.title=Bewertung manuell setzen (ohne KI)\nbrowse.manual.score.prompt=Bewertung eingeben (0-100) f\\u00FCr {0}:\nbrowse.manual.score.input.title=Bewertung f\\u00FCr {0} (0-100)\nbrowse.manual.apply.btn=\\u2705 Manuelle Bewertungen anwenden\nbrowse.manual.no.scores=Keine Bewertungen eingegeben. Setzen Sie mindestens eine Bewertung > 0.\nbrowse.manual.applied=\\u270F\\uFE0F Manuelle Bewertungen angewendet: {0} Knoten bewertet. Sie k\\u00F6nnen jetzt exportieren oder eine Architektur-Ansicht erstellen.\nbrowse.manual.reason=Manuell zugewiesen\n\n# ── Browser: KI-Status ──\nbrowse.ai.using=Verwendet: {0}\nbrowse.ai.badge.provider=\\uD83D\\uDFE2 KI: {0}\nbrowse.ai.badge.available.title=KI ist verf\\u00FCgbar ({0})\nbrowse.ai.badge.ready=\\uD83D\\uDFE2 KI: Bereit\nbrowse.ai.badge.ready.title=KI ist verf\\u00FCgbar\nbrowse.ai.badge.unavailable=\\uD83D\\uDD34 KI: Nicht verf\\u00FCgbar\nbrowse.ai.badge.unavailable.title=KI ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert\nbrowse.ai.unavailable.detail=\\u26A0\\uFE0F KI-Analyse ist nicht verf\\u00FCgbar \\u2014 kein LLM-API-Schl\\u00FCssel konfiguriert. Setzen Sie eine der folgenden Umgebungsvariablen: GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY. Sie k\\u00F6nnen weiterhin LOCAL_ONNX oder Manuelle Bewertung verwenden.\nbrowse.ai.badge.unknown=\\u26A0\\uFE0F KI: Unbekannt\nbrowse.ai.badge.unknown.title=KI-Status konnte nicht ermittelt werden\n\n# ── Browser: Diagnose ──\nbrowse.diagnostics.auth.required=Admin-Authentifizierung erforderlich.\nbrowse.diagnostics.configured=Konfiguriert\nbrowse.diagnostics.not.configured=Nicht konfiguriert\nbrowse.diagnostics.success=Erfolgreich\nbrowse.diagnostics.failed.label=Fehlgeschlagen\nbrowse.diagnostics.no.calls=Noch keine Aufrufe\nbrowse.diagnostics.last.error=Letzter Fehler:\nbrowse.diagnostics.provider=Anbieter\nbrowse.diagnostics.api.key=API-Schl\\u00FCssel\nbrowse.diagnostics.last.call=Letzter Aufruf\nbrowse.diagnostics.stats=Statistik\nbrowse.diagnostics.server.time=Serverzeit\nbrowse.diagnostics.load.failed=Diagnose konnte nicht geladen werden: {0}\n\n# ── Browser: Verbindungstest ──\nbrowse.test.testing=\\u23F3 Teste\\u2026\nbrowse.test.error=\\u26A0\\uFE0F Verbindungstest-Fehler: {0}\nbrowse.test.success=\\u2705 Verbindungstest erfolgreich \\u00FCber {0}.\nbrowse.test.failed=\\u274C Verbindungstest fehlgeschlagen: {0}\nbrowse.test.btn=\\uD83E\\uDDEA Verbindung testen\n\n# ── Browser: Laden ──\nbrowse.loading.message=\\u23F3 Taxonomiedaten werden geladen\\u2026 Dies dauert beim ersten Start ca. 1\\u20132 Minuten. Bitte warten Sie.\nbrowse.loading.wait=Warte auf das Laden der Taxonomiedaten\\u2026\nbrowse.analyze.btn.title=Gesch\\u00E4ftsanforderung gegen die Taxonomie mit dem konfigurierten KI/LLM-Anbieter analysieren\nbrowse.load.failed=Taxonomie konnte nicht geladen werden: {0}\n\n# ── Browser: Veraltete Ergebnisse ──\nbrowse.stale.warning=\\u26A0\\uFE0F Gesch\\u00E4ftstext hat sich ge\\u00E4ndert \\u2014 vorherige Ergebnisse sind nicht mehr g\\u00FCltig.\nbrowse.stale.reset=\\uD83D\\uDD04 Ergebnisse zur\\u00FCcksetzen\n\n# ── Browser: Admin-Modus ──\nbrowse.admin.active.title=Admin-Modus aktiv \\u2014 klicken zum Sperren\nbrowse.admin.active.aria=Admin-Modus \\u2014 entsperrt. Klicken zum Sperren.\nbrowse.admin.locked.title=Klicken um Admin-Modus zu entsperren\nbrowse.admin.locked.aria=Admin-Modus \\u2014 gesperrt. Klicken zum Entsperren.\n\n# ── Browser: Knoten-Beschriftungen ──\nbrowse.node.score=Bewertung: {0} Prozent\nbrowse.node.reason=Begr\\u00FCndung: {0}\nbrowse.btn.justify=\\uD83D\\uDCCB Begr\\u00FCndung anfordern\nbrowse.btn.propose.relations=\\uD83D\\uDD17 Beziehungen vorschlagen\nbrowse.btn.propose.relations.title=Beziehungsvorschl\\u00E4ge f\\u00FCr {0} generieren\nbrowse.btn.propose.relations.aria=Beziehungen f\\u00FCr {0} vorschlagen\nbrowse.btn.graph=\\uD83D\\uDD0E Graph\nbrowse.btn.graph.title=Upstream/Downstream-Abh\\u00E4ngigkeiten und Ausfallauswirkungen f\\u00FCr {0} erkunden\nbrowse.btn.graph.aria=Graph-Explorer f\\u00FCr {0} \\u00F6ffnen\nbrowse.btn.similar=\\uD83D\\uDD0D \\u00C4hnliche\nbrowse.btn.similar.title=Semantisch \\u00E4hnliche Knoten zu {0} finden\nbrowse.btn.similar.aria=\\u00C4hnliche Knoten zu {0} finden\n\n# ── Browser: Interaktive Auswertung ──\nbrowse.eval.llm.issue=\\u26A0\\uFE0F LLM-Problem f\\u00FCr {0}: {1}\nbrowse.eval.failed=Auswertung von {0} fehlgeschlagen: {1}\n\n# ── Browser: Vorschl\\u00E4ge ──\nbrowse.proposals.loading=Vorschl\\u00E4ge werden geladen\\u2026\nbrowse.proposals.load.failed=Vorschl\\u00E4ge konnten nicht geladen werden: {0}\nbrowse.proposals.none=Keine Vorschl\\u00E4ge gefunden.\nbrowse.proposals.selected={0} ausgew\\u00E4hlt\nbrowse.proposals.accept.selected=\\u2705 Ausgew\\u00E4hlte akzeptieren\nbrowse.proposals.reject.selected=\\u274C Ausgew\\u00E4hlte ablehnen\nbrowse.proposals.select.all=Alle ausw\\u00E4hlen\nbrowse.proposals.table.source=Quelle\nbrowse.proposals.table.target=Ziel\nbrowse.proposals.table.type=Typ\nbrowse.proposals.table.confidence=Konfidenz\nbrowse.proposals.table.rationale=Begr\\u00FCndung\nbrowse.proposals.table.actions=Aktionen\nbrowse.proposals.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert.\nbrowse.proposals.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt.\nbrowse.proposals.bulk.failed=\\u274C Massenaktion fehlgeschlagen: {0}\nbrowse.proposals.accept.success=\\u2705 Vorschlag akzeptiert und Beziehung erstellt.\nbrowse.proposals.accept.failed=\\u274C Vorschlag konnte nicht akzeptiert werden: {0}\nbrowse.proposals.reject.success=\\uD83D\\uDDD1\\uFE0F Vorschlag abgelehnt.\nbrowse.proposals.reject.failed=\\u274C Vorschlag konnte nicht abgelehnt werden: {0}\nbrowse.proposals.undo.accepted=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge akzeptiert\nbrowse.proposals.undo.rejected=\\uD83D\\uDDD1\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge abgelehnt\nbrowse.proposals.undo.btn=\\u21A9\\uFE0F R\\u00FCckg\\u00E4ngig\nbrowse.proposals.reverted=\\u21A9\\uFE0F {0} Vorschlag/Vorschl\\u00E4ge auf ausstehend zur\\u00FCckgesetzt.\nbrowse.proposals.undo.failed=\\u274C R\\u00FCckg\\u00E4ngig fehlgeschlagen: {0}\nbrowse.proposals.generated=\\u2705 {0} Vorschlag/Vorschl\\u00E4ge f\\u00FCr {1} ({2}) generiert.\nbrowse.proposals.generate.failed=\\u274C Vorschl\\u00E4ge konnten nicht generiert werden: {0}\nbrowse.proposals.pending={0} ausstehend\n\n# ── Browser: Prompt-Editor ──\nbrowse.prompt.load.failed=Prompt-Vorlagen konnten nicht geladen werden.\nbrowse.prompt.saved=\\u2705 Vorlage gespeichert.\nbrowse.prompt.save.failed=\\u274C Speichern fehlgeschlagen: {0}\nbrowse.prompt.reset.success=Auf Standard zur\\u00FCckgesetzt.\nbrowse.prompt.reset.failed=\\u274C Zur\\u00FCcksetzen fehlgeschlagen: {0}\nbrowse.prompt.load.template.failed=Vorlage f\\u00FCr {0} konnte nicht geladen werden\n\n# ── Analyse: Panel-Nachrichten ──\nanalyze.panel.analyzing=Analysiere\\u2026\nanalyze.scores.required=Bitte f\\u00FChren Sie zuerst eine Analyse durch, um Bewertungen zu erhalten.\n\n# ── Analyse: L\\u00FCckenanalyse ──\nanalyze.gap.failed=L\\u00FCckenanalyse fehlgeschlagen: {0}\nanalyze.gap.anchors=Anker: {0}\nanalyze.gap.gaps=L\\u00FCcken: {0}\nanalyze.gap.missing.relations=\\u274C Fehlende Beziehungen\nanalyze.gap.incomplete.patterns=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.gap.coverage.gaps=\\uD83D\\uDCCA Abdeckungsl\\u00FCcken\nanalyze.gap.no.gaps=\\u2705 Keine L\\u00FCcken erkannt \\u2014 Architekturabdeckung ist f\\u00FCr die analysierten Knoten vollst\\u00E4ndig.\n\n# ── Analyse: Mustererkennung ──\nanalyze.patterns.failed=Mustererkennung fehlgeschlagen: {0}\nanalyze.patterns.complete=Vollst\\u00E4ndige Muster: {0}\nanalyze.patterns.incomplete.count=Unvollst\\u00E4ndig: {0}\nanalyze.patterns.coverage=Abdeckung: {0}\nanalyze.patterns.complete.heading=\\u2705 Vollst\\u00E4ndige Muster\nanalyze.patterns.incomplete.heading=\\u26A0\\uFE0F Unvollst\\u00E4ndige Muster\nanalyze.patterns.none=Keine Muster f\\u00FCr die aktuellen Bewertungen erkannt.\n\n# ── Analyse: Empfehlung ──\nanalyze.recommendation.failed=Empfehlung fehlgeschlagen: {0}\nanalyze.recommendation.confidence=\\uD83C\\uDFAF Konfidenz: {0}%\nanalyze.recommendation.confirmed=Best\\u00E4tigt: {0}\nanalyze.recommendation.proposed=Vorgeschlagen: {0}\nanalyze.recommendation.relations.count=Beziehungen: {0}\nanalyze.recommendation.reasoning=\\uD83D\\uDCA1 Begr\\u00FCndung:\nanalyze.recommendation.confirmed.heading=\\u2705 Best\\u00E4tigte Elemente\nanalyze.recommendation.proposed.heading=\\uD83D\\uDCA1 Vorgeschlagene Elemente\nanalyze.recommendation.suggested.heading=\\uD83D\\uDD17 Vorgeschlagene Beziehungen\n\n# ── Analyse: Tabellen\\u00FCberschriften ──\nanalyze.table.source.node=Quellknoten\nanalyze.table.source.root=Quellwurzel\nanalyze.table.expected.relation=Erwartete Beziehung\nanalyze.table.expected.target=Erwartetes Ziel\nanalyze.table.description=Beschreibung\nanalyze.table.node=Knoten\nanalyze.table.root=Wurzel\nanalyze.table.pattern=Muster\nanalyze.table.missing=Fehlend\nanalyze.table.score=Bewertung\nanalyze.table.gap=L\\u00FCcke\nanalyze.table.source=Quelle\nanalyze.table.target=Ziel\nanalyze.table.type=Typ\nanalyze.table.reasoning=Begr\\u00FCndung\nanalyze.table.code=Code\nanalyze.table.title=Titel\nanalyze.table.sheet=Blatt\nanalyze.table.relevance=Relevanz\nanalyze.table.hop=Hop\nanalyze.table.requirements=Anforderungen\nanalyze.table.none=keine\n\n# ── Analyse: Graph / Ausfallauswirkungen ──\nanalyze.graph.enter.code=Bitte geben Sie einen Knoten-Code ein.\nanalyze.graph.enriched.analyzing=Analysiere erweiterte Ausfallauswirkungen\\u2026\nanalyze.graph.enriched.failed=Erweiterte Ausfallauswirkungsanalyse fehlgeschlagen: {0}\nanalyze.graph.failed.node=\\u26A0\\uFE0F Ausgefallen: {0}\nanalyze.graph.direct=\\uD83D\\uDD34 Direkt: {0}\nanalyze.graph.indirect=\\uD83D\\uDFE0 Indirekt: {0}\nanalyze.graph.total=Gesamt: {0}\nanalyze.graph.risk=\\uD83D\\uDCC8 Risiko: {0}\nanalyze.graph.affected.requirements=\\uD83D\\uDCCB Betroffene Anforderungen ({0}):\nanalyze.graph.directly.affected=\\uD83D\\uDD34 Direkt betroffen (Hop 1)\nanalyze.graph.indirectly.affected=\\uD83D\\uDFE0 Indirekt betroffen (Hop 2+)\n\n# ── Analyse: ArchiMate-Import ──\nanalyze.import.importing=Importiere {0}\\u2026\nanalyze.import.success=\\u2705 Importiert: {0} Elemente, {1} Beziehungen\nanalyze.import.failed=\\u274C Import fehlgeschlagen: {0}\n\n# ── Analyse: Copilot ──\nanalyze.copilot.enter.requirement=Bitte geben Sie zuerst eine Gesch\\u00E4ftsanforderung ein.\nanalyze.copilot.step1=Schritt 1/4: Anforderung wird analysiert\\u2026\nanalyze.copilot.cannot.start=Analyse kann nicht gestartet werden. Bitte pr\\u00FCfen Sie den KI-Status.\nanalyze.copilot.timeout=Analyse-Zeitlimit \\u00FCberschritten. Bitte versuchen Sie zuerst eine manuelle Analyse und verwenden Sie dann den Copilot.\nanalyze.copilot.step2=Schritt 2/4: L\\u00FCckenanalyse wird durchgef\\u00FChrt\\u2026\nanalyze.copilot.step3=Schritt 3/4: Muster werden erkannt\\u2026\nanalyze.copilot.step4=Schritt 4/4: Empfehlung wird generiert\\u2026\nanalyze.copilot.failed=Copilot-Ablauf fehlgeschlagen: {0}\nanalyze.copilot.complete=\\u2705 Architecture Copilot Analyse abgeschlossen\nanalyze.copilot.gaps={0} L\\u00FCcke(n)\nanalyze.copilot.anchors.analyzed={0} Anker analysiert\nanalyze.copilot.patterns={0}% Muster\nanalyze.copilot.patterns.complete={0} vollst\\u00E4ndig\nanalyze.copilot.confidence={0}% Konfidenz\nanalyze.copilot.proposals={0} Vorschl\\u00E4ge\nanalyze.copilot.scroll.hint=\\uD83D\\uDC47 Scrollen Sie nach unten f\\u00FCr detaillierte Ergebnisse in den Bereichen L\\u00FCckenanalyse, Mustererkennung und Empfehlung.\n"}}}}