{"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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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"}, "4727d09002c91c9de1ab9c65b8429da3d1750d6c": {"t": 1786067369.092033, "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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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"}, "63c43ab062e68bc4b5b1e313abe97d8ce5850b02": {"t": 1786068239.4164574, "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 Architecture View 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 {0}?\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 {0}?\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 {0}?\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 {1}.\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 {0}?\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 {0} into {1}?\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 Analyze with AI 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 AI is not available. No LLM API key is configured. Set one of the supported API keys, such as GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY, or MISTRAL_API_KEY, or use LLM_PROVIDER=LOCAL_ONNX 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 unlocked. 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"}}, "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"}, "4727d09002c91c9de1ab9c65b8429da3d1750d6c": {"t": 1786067370.584898, "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"}, "63c43ab062e68bc4b5b1e313abe97d8ce5850b02": {"t": 1786068239.1019485, "n": 13164, "h": "39f49d5ac942e709", "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, but semantic embeddings and any runtime download\n# must be enabled explicitly with the embedding settings below.\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# Semantic embedding is independent from the selected chat provider and is disabled by\n# default. Set TAXONOMY_EMBEDDING_ENABLED=true only when vector indexing/search is wanted.\nembedding.enabled=${TAXONOMY_EMBEDDING_ENABLED:false}\n# Path to a pre-downloaded model directory. A remote model is never fetched unless\n# TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD=true is also set explicitly.\nembedding.model.dir=${TAXONOMY_EMBEDDING_MODEL_DIR:}\n# HuggingFace model URL or local path to a directory containing\n# model.onnx + tokenizer.json + serving.properties.\nembedding.model.name=${TAXONOMY_EMBEDDING_MODEL_NAME:https://huggingface.co/BAAI/bge-small-en-v1.5}\n# 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# Runtime downloads are opt-in so containers/Kubernetes do not make unexpected outbound\n# requests. Prefer a mounted TAXONOMY_EMBEDDING_MODEL_DIR in production.\nembedding.allow-download=${TAXONOMY_EMBEDDING_ALLOW_DOWNLOAD:false}\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"}}, "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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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"}, "4727d09002c91c9de1ab9c65b8429da3d1750d6c": {"t": 1786067370.5344658, "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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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"}, "63c43ab062e68bc4b5b1e313abe97d8ce5850b02": {"t": 1786068239.5725875, "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 Architektur-Ansicht 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 {0} 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 {0} 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 {0} 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 {1}.\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 {0} 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 {0} in {1} \\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 Mit KI analysieren, 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 KI ist nicht verf\\u00fcgbar. Kein LLM-API-Schl\\u00fcssel konfiguriert. Setzen Sie einen der unterst\\u00fctzten API-Schl\\u00fcssel wie GEMINI_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, DASHSCOPE_API_KEY, LLAMA_API_KEY oder MISTRAL_API_KEY, oder verwenden Sie LLM_PROVIDER=LOCAL_ONNX 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 freigeschaltet. 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"}}}}