@nac3/forge-cli 1.0.77 → 1.0.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,527 +1,531 @@
1
- {
2
- "panel.brand": "Yujin Forge",
3
- "panel.brand.kanji": "侑",
4
- "panel.tagline": "Sprachgesteuerter Entwicklungsassistent",
5
- "panel.input.placeholder": "Frag Yujin",
6
- "panel.button.send": "Senden",
7
- "panel.button.mic": "Sprechen (gedrueckt halten)",
8
- "panel.button.mic.recording": "Druecken, um die Aufnahme zu stoppen",
9
- "panel.button.tts": "Stimme aktiviert",
10
- "panel.button.keys": "Schluessel",
11
- "panel.button.minimise": "Verkleinern",
12
- "panel.button.maximise": "Vergroessern",
13
- "panel.button.close": "Schliessen",
14
- "panel.button.language": "Sprache",
15
- "panel.trace.title": "Aktionsprotokoll",
16
- "panel.trace.count.one": "{n} Werkzeugaufruf",
17
- "panel.trace.count.other": "{n} Werkzeugaufrufe",
18
- "panel.trace.empty.kanji": "空",
19
- "panel.trace.empty.body": "Yujin Forge zeigt hier jedes Werkzeug, das es aufruft, um zu antworten: Manifest lesen, SPEC durchsuchen, Komponenten bearbeiten, Dokumente lesen. Stelle eine Frage, die diese benoetigt.",
20
- "panel.trace.badge.tool": "WERKZEUG",
21
- "panel.trace.badge.voice": "STIMME",
22
- "panel.trace.badge.error": "FEHLER",
23
- "panel.stream.empty.kanji": "侑仁",
24
- "panel.stream.empty.body": "Yujin Forge online. Bitte um Aenderungen am Projekt.",
25
- "panel.status.no_audio": "Kein Audio aufgenommen. Das Mikrofon hat vermutlich nichts erfasst.",
26
- "panel.status.did_not_catch": "Ich habe das nicht verstanden. Versuche es nochmal.",
27
- "panel.status.mic_denied": "Mikrofonberechtigung verweigert oder nicht verfuegbar: {error}",
28
- "panel.status.voice_failed": "Stimme fehlgeschlagen: {error}",
29
- "panel.status.voice_reply_failed": "Konnte die Antwort nicht abspielen: {error}",
30
- "panel.status.audio_play_error": "Konnte das Audio nicht abspielen: {error}",
31
- "panel.status.reading": "Lese {filename}...",
32
- "panel.status.ingest_failed": "Aufnahme fehlgeschlagen: {error}",
33
- "panel.status.read_failed": "Konnte die Spezifikation nicht lesen: {error}",
34
- "panel.drop.title": "Spezifikation hier ablegen",
35
- "panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
36
- "panel.ingest.spec_attached": "Spezifikation angehaengt: {filename}, {kb} KB",
37
- "panel.ingest.read_label": "Gelesen.",
38
- "panel.ingest.title_label": "Titel: {title}",
39
- "panel.ingest.no_title": "(kein Titel)",
40
- "panel.ingest.format_label": "Format: {format} / {sections} Abschnitt(e) / {kb} KB",
41
- "panel.ingest.first_lines": "Erste Zeilen:",
42
- "panel.ingest.action_done": "Aktion {tool} abgeschlossen.",
43
- "vault.modal.title": "Zugangsdaten (Vault)",
44
- "vault.modal.aria.close": "Zugangsdaten-Modal schliessen",
45
- "vault.tab.list": "Geladene Slots",
46
- "vault.tab.add": "Hinzufuegen",
47
- "vault.list.loading": "Laedt...",
48
- "vault.list.empty": "Du hast noch keinen Schluessel geladen. Klicke auf \"Hinzufuegen\" um zu beginnen.",
49
- "vault.add.slot_label": "Slot-Name",
50
- "vault.add.slot_hint": "Kleinbuchstaben, Ziffern, Unterstrich, Bindestrich. Muss mit einem Buchstaben beginnen.",
51
- "vault.add.value_label": "Klartextwert (maskiert)",
52
- "vault.add.value_hint": "Wird nur einmal beim Speichern angezeigt. Danach nur ersetzbar, nicht lesbar.",
53
- "vault.add.button_save": "Speichern",
54
- "vault.add.button_cancel": "Abbrechen",
55
- "vault.add.success": "Slot {slot} gespeichert.",
56
- "vault.add.overwrite": "Slot {slot} ueberschrieben.",
57
- "manual.intro": "Yujin Forge -- Benutzerhandbuch",
58
- "manual.section.welcome": "Willkommen",
59
- "manual.section.install": "Installation",
60
- "manual.section.first_run": "Erste Ausfuehrung",
61
- "manual.section.voice": "Sprachbefehle",
62
- "manual.section.spec_ingest": "Spezifikations-Ingestion",
63
- "manual.section.troubleshooting": "Fehlerbehebung",
64
- "manual.section.support": "Support",
65
- "lang.name.es": "Spanisch",
66
- "lang.name.en": "Englisch",
67
- "lang.name.pt": "Portugiesisch",
68
- "lang.name.fr": "Franzoesisch",
69
- "lang.name.ja": "Japanisch",
70
- "lang.name.zh": "Chinesisch",
71
- "lang.name.hi": "Hindi",
72
- "lang.name.ar": "Arabisch",
73
- "lang.name.de": "Deutsch",
74
- "lang.name.it": "Italienisch",
75
- "recap.fallback_period": ".",
76
- "recap.empty": "Es gibt noch nichts zusammenzufassen.",
77
- "error_ui.severity.info": "INFO",
78
- "error_ui.severity.warning": "WARNUNG",
79
- "error_ui.severity.error": "FEHLER",
80
- "error_ui.severity.fatal": "FATAL",
81
- "error_ui.label.what": "Was ist passiert",
82
- "error_ui.label.why": "Warum",
83
- "error_ui.label.fix": "Wie beheben",
84
- "error_ui.label.cmd": "Befehl",
85
- "error_ui.label.docs": "Lokale Docs",
86
- "error_ui.label.retry": "Erneut versuchen in",
87
- "error_ui.copy_btn": "Befehl kopieren",
88
- "error_ui.unknown.what": "Forge hat einen internen Fehler gefunden (unbekannter Code).",
89
- "error_ui.unknown.why": "Der Code {code} ist nicht im Katalog. Das ist ein Bug.",
90
- "error_ui.unknown.fix": "Issue oeffnen auf https://github.com/yujinapp/yujin-forge/issues mit dem Code + Traceback.",
91
- "error.cap_frontier_exhausted.what": "Monatliches Token-Cap des Frontier-Tier erschoepft (grosses Modell).",
92
- "error.cap_frontier_exhausted.why": "Ihr Plan {plan} erlaubt bis zu {cap} Tokens/Monat auf Frontier. Sie haben {used} verwendet. Reset zum Anfang des naechsten UTC-Monats.",
93
- "error.cap_frontier_exhausted.fix": "Wechseln Sie zu direktem Anthropic BYOK: umgeht das monatliche Worker-Cap. Ihre Kosten sind dann was Anthropic direkt berechnet.",
94
- "error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
95
- "error.cap_eco_exhausted.what": "Monatliches Token-Cap des Eco-Tier erschoepft (kleines Modell).",
96
- "error.cap_eco_exhausted.why": "Ihr Plan {plan} erlaubt bis zu {cap} Tokens/Monat auf Eco. Sie haben {used} verwendet. Reset zum Anfang des naechsten UTC-Monats.",
97
- "error.cap_eco_exhausted.fix": "Wechseln Sie zu direktem BYOK oder upgraden Sie Ihren Plan. BYOK umgeht das Worker-Cap.",
98
- "error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
99
- "error.tier_not_in_plan.what": "Tier {tier} ist in Ihrem Plan nicht aktiviert.",
100
- "error.tier_not_in_plan.why": "Ihr Plan {plan} enthaelt den {tier}-Tier nicht. Sie sind wahrscheinlich auf free-public oder Ihre Lizenz ist abgelaufen.",
101
- "error.tier_not_in_plan.fix": "Aktivieren Sie eine bezahlte Lizenz oder wechseln Sie zu direktem BYOK (Ihre Kosten, ohne Worker-Cap).",
102
- "error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
103
- "error.response_truncated.what": "Die Modellantwort wurde vor dem Ende abgeschnitten.",
104
- "error.response_truncated.why": "Limit managed_max_tokens_per_turn = {limit} Tokens mitten im Turn erreicht. Das Modell hat aufgehoert zu generieren.",
105
- "error.response_truncated.fix": "Erhoehen Sie das Limit via yf limits. Gilt fuer den naechsten Turn ohne Chat-Neustart.",
106
- "error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
107
- "error.response_truncated.banner": "[Antwort durch max_tokens={max} abgeschnitten. Limit erhoehen mit: yf limits set managed_max_tokens_per_turn {suggested}]",
108
- "error.modal_trace_stale.what": "Das Approval-Modal ist abgelaufen oder verwaist.",
109
- "error.modal_trace_stale.why": "Die trace_id {trace_id} hat keine pendente Approval im Dispatcher. Wahrscheinlich Race Condition zwischen Invoke und Panel-State, oder ein vorheriger Cancel hat den Trace als Zombie hinterlassen.",
110
- "error.modal_trace_stale.fix": "Verb erneut aus dem Chat aufrufen: startet einen neuen sauberen Trace. Wenn es weiterhin passiert, fuehren Sie yf doctor aus, um das Panel zu pruefen.",
111
- "error.modal_trace_stale.cmd": "yf doctor",
112
- "error.byok_key_missing.what": "API-Key fuer Provider {provider} fehlt.",
113
- "error.byok_key_missing.why": "Sie haben {provider} als Provider des {tier}-Tiers konfiguriert, aber der Slot byok_{slot} ist nicht im verschluesselten Vault.",
114
- "error.byok_key_missing.fix": "Konfigurieren Sie den Key mit yf keys set (atomar, mode 0600, niemals geloggt).",
115
- "error.byok_key_missing.cmd": "yf keys set {slot}",
116
- "error.worker_unreachable.what": "Konnte den yujin.app-Worker nicht erreichen.",
117
- "error.worker_unreachable.why": "Netzwerk-Timeout oder Worker ausgefallen (HTTP {status}). {attempts} mal wiederholt.",
118
- "error.worker_unreachable.fix": "Pruefen Sie Ihr Internet. Falls OK, wechseln Sie temporaer zu direktem BYOK, um die Worker-Abhaengigkeit zu vermeiden.",
119
- "error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
120
- "error.vault_decrypt_failed.what": "Konnte einen Schluessel aus dem Vault nicht entschluesseln.",
121
- "error.vault_decrypt_failed.why": "Der Master-Key ist falsch oder die Vault-Datei ist beschaedigt. Kann passieren, wenn Sie die Konfiguration zwischen Maschinen verschoben haben ohne den Master zu migrieren, oder durch Disk-Error.",
122
- "error.vault_decrypt_failed.fix": "Holen Sie die Server-Kopie (verschluesselt mit Ihrem lokalen Master neu), falls Sie Server-Backup aktiv haben.",
123
- "error.vault_decrypt_failed.cmd": "yf keys setup --pull",
124
- "error.shell_exec_rejected.what": "Sie haben das R8-Modal von yujin.shell.exec abgelehnt.",
125
- "error.shell_exec_rejected.why": "Der Befehl {command} wurde als {classification} klassifiziert. shell.exec verlangt immer Approval aus Sicherheit, auch wenn der Befehl read-only ist.",
126
- "error.shell_exec_rejected.fix": "Wenn der Befehl read-only war (yf projects active, git status, ls), nutzen Sie das aequivalente native Verb. Wenn er notwendig war und Sie irrtuemlich abgelehnt haben, rufen Sie ihn erneut auf.",
127
- "error.project_not_registered.what": "Kein Adopter-Projekt registriert.",
128
- "error.project_not_registered.why": "Das aufgerufene Verb benoetigt einen aktiven Project-Root, aber ~/.yujin-forge/projects.json hat keine Eintraege.",
129
- "error.project_not_registered.fix": "Erstellen Sie eines mit yujin.project.init oder registrieren Sie ein existierendes mit yf projects add.",
130
- "error.project_not_registered.cmd": "yf projects scan",
131
- "panel.button.agents": "Agenten",
132
- "panel.agents.title": "Agenten",
133
- "panel.agents.subtitle": "Director und Sub-Agenten registriert in diesem Projekt",
134
- "panel.agents.empty.title": "Noch keine Agenten",
135
- "panel.agents.empty.body": "Fuehre `yf agent install --defaults` aus, um den Director und seine 4 Sub-Agenten (Analyst, Coder, Tester, Scaffolder) zu registrieren.",
136
- "panel.agents.legend.eco": "Eco",
137
- "panel.agents.legend.managed": "Managed",
138
- "panel.agents.legend.frontier": "Frontier",
139
- "panel.agents.status.disabled": "Agent-Runtime nicht gestartet",
140
- "panel.agents.event.running": "Laeuft",
141
- "panel.agents.event.idle": "Inaktiv",
142
- "panel.agents.tick.live": "Verbunden",
143
- "panel.agents.tick.lost": "Verbindung verloren",
144
- "workflow.phase.i": "Triage und Intention",
145
- "workflow.phase.ii": "Klaerung (funktional + 4 NFR + Bloecke)",
146
- "workflow.phase.iii": "Spezifikationen (RFP + Arch + Design + Genehmigungen)",
147
- "workflow.phase.iv": "Bootstrap",
148
- "workflow.phase.v": "Blockentwicklung",
149
- "workflow.phase.vi": "Deploy + Post-Launch",
150
- "wizard.title": "Willkommen bei Yujin Forge",
151
- "wizard.close": "Schliessen",
152
- "wizard.intro": "Wahlen Sie zum Start, wie Forge mit Ihrem KI-Modell verbindet. Sie konnen das spater in Settings andern.",
153
- "wizard.back": "Zuruck",
154
- "wizard.start": "Starten",
155
- "wizard.plan.badge": "Empfohlen",
156
- "wizard.plan.title": "Claude Plan",
157
- "wizard.plan.desc": "Monatliches Claude Abonnement. Gunstigste Option fur Dauernutzung. Forge nutzt Ihre claude -p Sitzung.",
158
- "wizard.plan.price": "Fester Monatsbeitrag (Plan)",
159
- "wizard.plan.step.title": "Claude Plan verbinden",
160
- "wizard.plan.step.1": "Offnen Sie ein neues Terminal.",
161
- "wizard.plan.step.2": "Fuhren Sie den Befehl claude (ohne Argumente) aus und schliessen Sie den Browser-Login ab.",
162
- "wizard.plan.step.3": "Kommen Sie hierher zuruck und klicken Sie Ich bin eingeloggt zur Verifizierung.",
163
- "wizard.plan.done": "Ich bin eingeloggt",
164
- "wizard.byok.title": "Dein eigener API-Schlussel (BYOK)",
165
- "wizard.byok.desc": "Dein eigener Schlussel von jedem Anbieter (Anthropic, OpenAI, Google, DeepSeek...). Zahlung pro Nutzung auf deinem Konto.",
166
- "wizard.byok.price": "Pay-per-use (Console)",
167
- "wizard.byok.step.title": "Wahle deinen Anbieter und fuge deinen API-Schlussel ein",
168
- "wizard.byok.step.intro": "Wahle den Anbieter aus dem Menu und fuge seinen API-Schlussel ein. Forge speichert ihn verschlusselt im lokalen Vault; er verlasst nie deinen Rechner.",
169
- "wizard.byok.test": "Validieren und speichern",
170
- "wizard.skip.title": "Ich bin bereits eingerichtet",
171
- "wizard.skip.desc": "Assistent uberspringen. Sie konnen ihn spater in Settings offnen.",
172
- "wizard.done.kanji": "Fertig",
173
- "wizard.done.title": "Fertig",
174
- "wizard.done.msg": "Forge ist eingerichtet. Starten Sie das Gesprach.",
175
- "pizarron.button.read": "Vorlesen",
176
- "pizarron.button.copy": "Kopieren",
177
- "pizarron.button.edit": "Bearbeiten",
178
- "pizarron.graph.refresh": "Aktualisieren",
179
- "pizarron.graph.regenerating": "Wird neu erstellt...",
180
- "pizarron.graph.detail.hint": "Tippe auf einen Knoten fur Details.",
181
- "pizarron.graph.detail.empty": "Kein Detail fur diesen Knoten.",
1
+ {
2
+ "panel.brand": "Yujin Forge",
3
+ "panel.brand.kanji": "侑",
4
+ "panel.tagline": "Sprachgesteuerter Entwicklungsassistent",
5
+ "panel.input.placeholder": "Frag Yujin",
6
+ "panel.button.send": "Senden",
7
+ "panel.button.mic": "Sprechen (gedrueckt halten)",
8
+ "panel.button.mic.recording": "Druecken, um die Aufnahme zu stoppen",
9
+ "panel.button.tts": "Stimme aktiviert",
10
+ "panel.button.keys": "Schluessel",
11
+ "panel.button.minimise": "Verkleinern",
12
+ "panel.button.maximise": "Vergroessern",
13
+ "panel.button.close": "Schliessen",
14
+ "panel.button.language": "Sprache",
15
+ "panel.trace.title": "Aktionsprotokoll",
16
+ "panel.trace.count.one": "{n} Werkzeugaufruf",
17
+ "panel.trace.count.other": "{n} Werkzeugaufrufe",
18
+ "panel.trace.empty.kanji": "空",
19
+ "panel.trace.empty.body": "Yujin Forge zeigt hier jedes Werkzeug, das es aufruft, um zu antworten: Manifest lesen, SPEC durchsuchen, Komponenten bearbeiten, Dokumente lesen. Stelle eine Frage, die diese benoetigt.",
20
+ "panel.trace.badge.tool": "WERKZEUG",
21
+ "panel.trace.badge.voice": "STIMME",
22
+ "panel.trace.badge.error": "FEHLER",
23
+ "panel.stream.empty.kanji": "侑仁",
24
+ "panel.stream.empty.body": "Yujin Forge online. Bitte um Aenderungen am Projekt.",
25
+ "panel.status.no_audio": "Kein Audio aufgenommen. Das Mikrofon hat vermutlich nichts erfasst.",
26
+ "panel.status.did_not_catch": "Ich habe das nicht verstanden. Versuche es nochmal.",
27
+ "panel.status.mic_denied": "Mikrofonberechtigung verweigert oder nicht verfuegbar: {error}",
28
+ "panel.status.voice_failed": "Stimme fehlgeschlagen: {error}",
29
+ "panel.status.voice_reply_failed": "Konnte die Antwort nicht abspielen: {error}",
30
+ "panel.status.audio_play_error": "Konnte das Audio nicht abspielen: {error}",
31
+ "panel.status.reading": "Lese {filename}...",
32
+ "panel.status.ingest_failed": "Aufnahme fehlgeschlagen: {error}",
33
+ "panel.status.read_failed": "Konnte die Spezifikation nicht lesen: {error}",
34
+ "panel.drop.title": "Spezifikation hier ablegen",
35
+ "panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
36
+ "panel.ingest.spec_attached": "Spezifikation angehaengt: {filename}, {kb} KB",
37
+ "panel.ingest.read_label": "Gelesen.",
38
+ "panel.ingest.title_label": "Titel: {title}",
39
+ "panel.ingest.no_title": "(kein Titel)",
40
+ "panel.ingest.format_label": "Format: {format} / {sections} Abschnitt(e) / {kb} KB",
41
+ "panel.ingest.first_lines": "Erste Zeilen:",
42
+ "panel.ingest.action_done": "Aktion {tool} abgeschlossen.",
43
+ "vault.modal.title": "Zugangsdaten (Vault)",
44
+ "vault.modal.aria.close": "Zugangsdaten-Modal schliessen",
45
+ "vault.tab.list": "Geladene Slots",
46
+ "vault.tab.add": "Hinzufuegen",
47
+ "vault.list.loading": "Laedt...",
48
+ "vault.list.empty": "Du hast noch keinen Schluessel geladen. Klicke auf \"Hinzufuegen\" um zu beginnen.",
49
+ "vault.add.slot_label": "Slot-Name",
50
+ "vault.add.slot_hint": "Kleinbuchstaben, Ziffern, Unterstrich, Bindestrich. Muss mit einem Buchstaben beginnen.",
51
+ "vault.add.value_label": "Klartextwert (maskiert)",
52
+ "vault.add.value_hint": "Wird nur einmal beim Speichern angezeigt. Danach nur ersetzbar, nicht lesbar.",
53
+ "vault.add.button_save": "Speichern",
54
+ "vault.add.button_cancel": "Abbrechen",
55
+ "vault.add.success": "Slot {slot} gespeichert.",
56
+ "vault.add.overwrite": "Slot {slot} ueberschrieben.",
57
+ "manual.intro": "Yujin Forge -- Benutzerhandbuch",
58
+ "manual.section.welcome": "Willkommen",
59
+ "manual.section.install": "Installation",
60
+ "manual.section.first_run": "Erste Ausfuehrung",
61
+ "manual.section.voice": "Sprachbefehle",
62
+ "manual.section.spec_ingest": "Spezifikations-Ingestion",
63
+ "manual.section.troubleshooting": "Fehlerbehebung",
64
+ "manual.section.support": "Support",
65
+ "lang.name.es": "Spanisch",
66
+ "lang.name.en": "Englisch",
67
+ "lang.name.pt": "Portugiesisch",
68
+ "lang.name.fr": "Franzoesisch",
69
+ "lang.name.ja": "Japanisch",
70
+ "lang.name.zh": "Chinesisch",
71
+ "lang.name.hi": "Hindi",
72
+ "lang.name.ar": "Arabisch",
73
+ "lang.name.de": "Deutsch",
74
+ "lang.name.it": "Italienisch",
75
+ "recap.fallback_period": ".",
76
+ "recap.empty": "Es gibt noch nichts zusammenzufassen.",
77
+ "error_ui.severity.info": "INFO",
78
+ "error_ui.severity.warning": "WARNUNG",
79
+ "error_ui.severity.error": "FEHLER",
80
+ "error_ui.severity.fatal": "FATAL",
81
+ "error_ui.label.what": "Was ist passiert",
82
+ "error_ui.label.why": "Warum",
83
+ "error_ui.label.fix": "Wie beheben",
84
+ "error_ui.label.cmd": "Befehl",
85
+ "error_ui.label.docs": "Lokale Docs",
86
+ "error_ui.label.retry": "Erneut versuchen in",
87
+ "error_ui.copy_btn": "Befehl kopieren",
88
+ "error_ui.unknown.what": "Forge hat einen internen Fehler gefunden (unbekannter Code).",
89
+ "error_ui.unknown.why": "Der Code {code} ist nicht im Katalog. Das ist ein Bug.",
90
+ "error_ui.unknown.fix": "Issue oeffnen auf https://github.com/yujinapp/yujin-forge/issues mit dem Code + Traceback.",
91
+ "error.cap_frontier_exhausted.what": "Monatliches Token-Cap des Frontier-Tier erschoepft (grosses Modell).",
92
+ "error.cap_frontier_exhausted.why": "Ihr Plan {plan} erlaubt bis zu {cap} Tokens/Monat auf Frontier. Sie haben {used} verwendet. Reset zum Anfang des naechsten UTC-Monats.",
93
+ "error.cap_frontier_exhausted.fix": "Wechseln Sie zu direktem Anthropic BYOK: umgeht das monatliche Worker-Cap. Ihre Kosten sind dann was Anthropic direkt berechnet.",
94
+ "error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
95
+ "error.cap_eco_exhausted.what": "Monatliches Token-Cap des Eco-Tier erschoepft (kleines Modell).",
96
+ "error.cap_eco_exhausted.why": "Ihr Plan {plan} erlaubt bis zu {cap} Tokens/Monat auf Eco. Sie haben {used} verwendet. Reset zum Anfang des naechsten UTC-Monats.",
97
+ "error.cap_eco_exhausted.fix": "Wechseln Sie zu direktem BYOK oder upgraden Sie Ihren Plan. BYOK umgeht das Worker-Cap.",
98
+ "error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
99
+ "error.tier_not_in_plan.what": "Tier {tier} ist in Ihrem Plan nicht aktiviert.",
100
+ "error.tier_not_in_plan.why": "Ihr Plan {plan} enthaelt den {tier}-Tier nicht. Sie sind wahrscheinlich auf free-public oder Ihre Lizenz ist abgelaufen.",
101
+ "error.tier_not_in_plan.fix": "Aktivieren Sie eine bezahlte Lizenz oder wechseln Sie zu direktem BYOK (Ihre Kosten, ohne Worker-Cap).",
102
+ "error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
103
+ "error.response_truncated.what": "Die Modellantwort wurde vor dem Ende abgeschnitten.",
104
+ "error.response_truncated.why": "Limit managed_max_tokens_per_turn = {limit} Tokens mitten im Turn erreicht. Das Modell hat aufgehoert zu generieren.",
105
+ "error.response_truncated.fix": "Erhoehen Sie das Limit via yf limits. Gilt fuer den naechsten Turn ohne Chat-Neustart.",
106
+ "error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
107
+ "error.response_truncated.banner": "[Antwort durch max_tokens={max} abgeschnitten. Limit erhoehen mit: yf limits set managed_max_tokens_per_turn {suggested}]",
108
+ "error.modal_trace_stale.what": "Das Approval-Modal ist abgelaufen oder verwaist.",
109
+ "error.modal_trace_stale.why": "Die trace_id {trace_id} hat keine pendente Approval im Dispatcher. Wahrscheinlich Race Condition zwischen Invoke und Panel-State, oder ein vorheriger Cancel hat den Trace als Zombie hinterlassen.",
110
+ "error.modal_trace_stale.fix": "Verb erneut aus dem Chat aufrufen: startet einen neuen sauberen Trace. Wenn es weiterhin passiert, fuehren Sie yf doctor aus, um das Panel zu pruefen.",
111
+ "error.modal_trace_stale.cmd": "yf doctor",
112
+ "error.byok_key_missing.what": "API-Key fuer Provider {provider} fehlt.",
113
+ "error.byok_key_missing.why": "Sie haben {provider} als Provider des {tier}-Tiers konfiguriert, aber der Slot byok_{slot} ist nicht im verschluesselten Vault.",
114
+ "error.byok_key_missing.fix": "Konfigurieren Sie den Key mit yf keys set (atomar, mode 0600, niemals geloggt).",
115
+ "error.byok_key_missing.cmd": "yf keys set {slot}",
116
+ "error.worker_unreachable.what": "Konnte den yujin.app-Worker nicht erreichen.",
117
+ "error.worker_unreachable.why": "Netzwerk-Timeout oder Worker ausgefallen (HTTP {status}). {attempts} mal wiederholt.",
118
+ "error.worker_unreachable.fix": "Pruefen Sie Ihr Internet. Falls OK, wechseln Sie temporaer zu direktem BYOK, um die Worker-Abhaengigkeit zu vermeiden.",
119
+ "error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
120
+ "error.vault_decrypt_failed.what": "Konnte einen Schluessel aus dem Vault nicht entschluesseln.",
121
+ "error.vault_decrypt_failed.why": "Der Master-Key ist falsch oder die Vault-Datei ist beschaedigt. Kann passieren, wenn Sie die Konfiguration zwischen Maschinen verschoben haben ohne den Master zu migrieren, oder durch Disk-Error.",
122
+ "error.vault_decrypt_failed.fix": "Holen Sie die Server-Kopie (verschluesselt mit Ihrem lokalen Master neu), falls Sie Server-Backup aktiv haben.",
123
+ "error.vault_decrypt_failed.cmd": "yf keys setup --pull",
124
+ "error.shell_exec_rejected.what": "Sie haben das R8-Modal von yujin.shell.exec abgelehnt.",
125
+ "error.shell_exec_rejected.why": "Der Befehl {command} wurde als {classification} klassifiziert. shell.exec verlangt immer Approval aus Sicherheit, auch wenn der Befehl read-only ist.",
126
+ "error.shell_exec_rejected.fix": "Wenn der Befehl read-only war (yf projects active, git status, ls), nutzen Sie das aequivalente native Verb. Wenn er notwendig war und Sie irrtuemlich abgelehnt haben, rufen Sie ihn erneut auf.",
127
+ "error.project_not_registered.what": "Kein Adopter-Projekt registriert.",
128
+ "error.project_not_registered.why": "Das aufgerufene Verb benoetigt einen aktiven Project-Root, aber ~/.yujin-forge/projects.json hat keine Eintraege.",
129
+ "error.project_not_registered.fix": "Erstellen Sie eines mit yujin.project.init oder registrieren Sie ein existierendes mit yf projects add.",
130
+ "error.project_not_registered.cmd": "yf projects scan",
131
+ "panel.button.agents": "Agenten",
132
+ "panel.agents.title": "Agenten",
133
+ "panel.agents.subtitle": "Director und Sub-Agenten registriert in diesem Projekt",
134
+ "panel.agents.empty.title": "Noch keine Agenten",
135
+ "panel.agents.empty.body": "Fuehre `yf agent install --defaults` aus, um den Director und seine 4 Sub-Agenten (Analyst, Coder, Tester, Scaffolder) zu registrieren.",
136
+ "panel.agents.legend.eco": "Eco",
137
+ "panel.agents.legend.managed": "Managed",
138
+ "panel.agents.legend.frontier": "Frontier",
139
+ "panel.agents.status.disabled": "Agent-Runtime nicht gestartet",
140
+ "panel.agents.event.running": "Laeuft",
141
+ "panel.agents.event.idle": "Inaktiv",
142
+ "panel.agents.tick.live": "Verbunden",
143
+ "panel.agents.tick.lost": "Verbindung verloren",
144
+ "workflow.phase.i": "Triage und Intention",
145
+ "workflow.phase.ii": "Klaerung (funktional + 4 NFR + Bloecke)",
146
+ "workflow.phase.iii": "Spezifikationen (RFP + Arch + Design + Genehmigungen)",
147
+ "workflow.phase.iv": "Bootstrap",
148
+ "workflow.phase.v": "Blockentwicklung",
149
+ "workflow.phase.vi": "Deploy + Post-Launch",
150
+ "wizard.title": "Willkommen bei Yujin Forge",
151
+ "wizard.close": "Schliessen",
152
+ "wizard.intro": "Wahlen Sie zum Start, wie Forge mit Ihrem KI-Modell verbindet. Sie konnen das spater in Settings andern.",
153
+ "wizard.back": "Zuruck",
154
+ "wizard.start": "Starten",
155
+ "wizard.plan.badge": "Empfohlen",
156
+ "wizard.plan.title": "Claude Plan",
157
+ "wizard.plan.desc": "Monatliches Claude Abonnement. Gunstigste Option fur Dauernutzung. Forge nutzt Ihre claude -p Sitzung.",
158
+ "wizard.plan.price": "Fester Monatsbeitrag (Plan)",
159
+ "wizard.plan.step.title": "Claude Plan verbinden",
160
+ "wizard.plan.step.1": "Offnen Sie ein neues Terminal.",
161
+ "wizard.plan.step.2": "Fuhren Sie den Befehl claude (ohne Argumente) aus und schliessen Sie den Browser-Login ab.",
162
+ "wizard.plan.step.3": "Kommen Sie hierher zuruck und klicken Sie Ich bin eingeloggt zur Verifizierung.",
163
+ "wizard.plan.done": "Ich bin eingeloggt",
164
+ "wizard.byok.title": "Dein eigener API-Schlussel (BYOK)",
165
+ "wizard.byok.desc": "Dein eigener Schlussel von jedem Anbieter (Anthropic, OpenAI, Google, DeepSeek...). Zahlung pro Nutzung auf deinem Konto.",
166
+ "wizard.byok.price": "Pay-per-use (Console)",
167
+ "wizard.byok.step.title": "Wahle deinen Anbieter und fuge deinen API-Schlussel ein",
168
+ "wizard.byok.step.intro": "Wahle den Anbieter aus dem Menu und fuge seinen API-Schlussel ein. Forge speichert ihn verschlusselt im lokalen Vault; er verlasst nie deinen Rechner.",
169
+ "wizard.byok.test": "Validieren und speichern",
170
+ "wizard.skip.title": "Ich bin bereits eingerichtet",
171
+ "wizard.skip.desc": "Assistent uberspringen. Sie konnen ihn spater in Settings offnen.",
172
+ "wizard.done.kanji": "Fertig",
173
+ "wizard.done.title": "Fertig",
174
+ "wizard.done.msg": "Forge ist eingerichtet. Starten Sie das Gesprach.",
175
+ "pizarron.button.read": "Vorlesen",
176
+ "pizarron.button.copy": "Kopieren",
177
+ "pizarron.button.edit": "Bearbeiten",
178
+ "pizarron.graph.refresh": "Aktualisieren",
179
+ "pizarron.graph.regenerating": "Wird neu erstellt...",
180
+ "pizarron.graph.detail.hint": "Tippe auf einen Knoten fur Details.",
181
+ "pizarron.graph.detail.empty": "Kein Detail fur diesen Knoten.",
182
182
  "pizarron.graph.detail.weight": "Gewicht",
183
183
  "pizarron.graph.orbit": "Orbit",
184
- "pizarron.graph.orbit.speed": "Orbitalgeschwindigkeit",
185
- "startup.tab.graph": "Visuelles Diagramm",
186
- "startup.tab.graphSem": "Semantischer Graph",
187
- "startup.tab.pendings": "Ausstehend",
188
- "startup.tab.workflow": "Workflow",
189
- "settings.startupTabs": "Tabs beim Start (Graph, ausstehend, Workflow)",
190
- "graph.term.nodes": "Knoten",
191
- "graph.term.edges": "Kanten",
192
- "coding.read": "Lese {x}",
193
- "coding.read_bare": "Lese eine Datei",
194
- "coding.edit": "Bearbeite {x}",
195
- "coding.edit_bare": "Bearbeite eine Datei",
196
- "coding.write": "Schreibe {x}",
197
- "coding.write_bare": "Schreibe eine Datei",
198
- "coding.notebook_bare": "Bearbeite Notebook",
199
- "coding.bash": "Fuehre aus: {x}",
200
- "coding.bash_bare": "Fuehre einen Befehl aus",
201
- "coding.grep": "Suche \"{x}\"",
202
- "coding.grep_bare": "Suche im Code",
203
- "coding.glob": "Liste {x}",
204
- "coding.glob_bare": "Liste Dateien",
205
- "coding.web_bare": "Lese das Web",
206
- "coding.websearch": "Web-Suche: {x}",
207
- "coding.websearch_bare": "Web-Suche",
208
- "coding.task": "Sub-Agent: {x}",
209
- "coding.task_bare": "Starte einen Sub-Agenten",
210
- "coding.todo": "Aktualisiere seine Aufgabenliste",
211
- "coding.verb_bare": "Fuehre ein yujin-Verb aus",
212
- "panel.button.stop": "Stopp",
213
- "panel.status.stopping": "Stoppe...",
214
- "panel.status.noActiveTurn": "Es lief kein Zug.",
215
- "panel.status.interruptFailed": "Unterbrechung konnte nicht gesendet werden.",
216
- "panel.status.turnInterrupted": "Zug unterbrochen.",
217
- "panel.label.interrupted": "(unterbrochen)",
218
- "panel.queue.label": "In Warteschlange",
219
- "panel.queue.remove": "Aus Warteschlange entfernen",
220
- "panel.project.switchHint": "Projekt wechseln",
221
- "panel.project.title": "Projekte",
222
- "panel.project.add": "Projekt hinzufuegen...",
223
- "panel.project.addPrompt": "Absoluter Pfad des hinzuzufuegenden Projekts:",
224
- "panel.project.switching": "Projekt wird gewechselt...",
225
- "startup.tab.files": "Dateien",
226
- "panel.project.remove": "Aus der Liste entfernen",
227
- "panel.project.removeConfirm": "Dieses Projekt aus der Liste entfernen? (löscht keine Dateien auf der Festplatte)",
228
- "panel.project.removed": "Projekt aus der Liste entfernt",
229
- "panel.files.refresh": "Aktualisieren",
230
- "panel.files.loading": "Wird geladen...",
231
- "panel.files.error": "Dateien konnten nicht gelesen werden.",
232
- "panel.files.empty": "(keine Dateien)",
233
- "panel.files.truncated": "(Liste gekürzt)",
234
- "panel.files.opened": "Geöffnet",
235
- "panel.files.openFailed": "Datei konnte nicht geöffnet werden.",
236
- "startup.tab.tasks": "Aufgaben",
237
- "settings.bridge.title": "Koordination zwischen Instanzen",
238
- "settings.bridge.accept": "Gerichtete Nachrichten anderer Instanzen akzeptieren (als Chat eingefugt)",
239
- "settings.bridge.composePlaceholder": "Nachricht an die anderen Instanzen...",
240
- "settings.voice.title": "Sprache",
241
- "settings.voice.mode": "Modus",
242
- "settings.voice.modeMic": "Mikrofonmodus",
243
- "settings.voice.stt": "STT",
244
- "settings.voice.sttBrowser": "STT Browser",
245
- "settings.voice.ttsEngine": "TTS-Engine",
246
- "settings.voice.ttsBrowser": "TTS Browser",
247
- "settings.voice.ttsVoice": "TTS-Stimme (nur Google)",
248
- "settings.vad.title": "VAD (Stilleerkennung)",
249
- "settings.vad.resetDefaults": "Standard zurucksetzen",
250
- "settings.vad.engine": "Engine",
251
- "settings.vad.engineAmplitude": "Amplitude (RMS)",
252
- "settings.vad.engineBand": "Band 80-400Hz",
253
- "settings.vad.baselineWindow": "Baseline-Fenster",
254
- "settings.vad.thresholdMult": "Schwellen-Mult. (Baseline x N)",
255
- "settings.vad.thresholdMin": "Mindestschwelle",
256
- "settings.vad.thresholdMax": "Maximalschwelle",
257
- "settings.vad.silence": "Stille zum Schliessen",
258
- "settings.vad.minVoiced": "Minimale Stimme (Anti-Blip)",
259
- "settings.vad.tick": "VAD-Tick",
260
- "settings.vad.bandLow": "Sprachband: low (Hz)",
261
- "settings.vad.bandHigh": "Sprachband: high (Hz)",
262
- "settings.vad.showOverlay": "Live-Overlay anzeigen",
263
- "settings.vad.logStats": "Statistiken pro Sitzung protokollieren",
264
- "settings.brain.anthropicMode": "Anthropic: Modus",
265
- "settings.brain.modePlan": "Plan (Claude-Abo)",
266
- "settings.brain.modeConsole": "Console (API key)",
267
- "settings.brain.modeNote": "Wird beim erneuten Offnen des Panels wirksam.",
268
- "settings.brain.ecoEnabled": "Eco-Modus aktiviert",
269
- "settings.brain.ecoHint": "aus = immer frontier",
270
- "settings.brain.modelEco": "Eco-Modell",
271
- "settings.brain.modelFrontier": "Frontier-Modell",
272
- "settings.brain.modelMultimodal": "Multimodal-Modell",
273
- "settings.brain.multimodalClearTitle": "Dediziertes multimodal Brain entfernen (zuruck zur automatischen Vision-Weiterleitung)",
274
- "settings.brain.auto": "Auto",
275
- "settings.brain.multimodalHint": "Dediziertes Brain fur Bild-Turns. Auto = automatische Vision-Weiterleitung (das frontier, wenn es sieht, sonst Hinweis).",
276
- "settings.brain.geminiCache": "Expliziter Gemini-Cache (CachedContent)",
277
- "settings.brain.geminiCacheHint": "Opt-in. Nutzlich bei langen Sitzungen mit Gemini Pro; bei kurzen Sitzungen reicht der kostenlose implizite Cache von 2.5.",
278
- "settings.federation.title": "Brain-Foderation",
279
- "settings.federation.intro": "Nutze das Brain eines anderen Forge (sein Key verlasst nie seine Maschine) oder verleihe deins. Dein Code lauft lokal; nur die Inferenz reist.",
280
- "settings.federation.connectedTo": "Verbunden mit",
281
- "settings.federation.disconnect": "Trennen",
282
- "settings.federation.connectMe": "Mich verbinden",
283
- "settings.federation.tokenPlaceholder": "Foderationscode einfugen",
284
- "settings.federation.connect": "Verbinden",
285
- "settings.federation.lendBrain": "Mein Brain verleihen",
286
- "settings.federation.generateCode": "Code generieren",
287
- "settings.federation.host": "Hosten (auf Kinder antworten)",
288
- "settings.federation.fedBrain": "Foderations-Brain",
289
- "settings.federation.fedBrainNote": "Das, was auf Kinder antwortet. Direkte API (DeepSeek standardmassig). Claude Plan kann nicht hosten; es braucht einen Key mit Guthaben.",
290
- "settings.federation.codeOnce": "Code (einmalig)",
291
- "settings.federation.copy": "Kopieren",
292
- "settings.keys.title": "API keys (BYOK)",
293
- "settings.keys.configure": "Konfigurieren",
294
- "settings.keys.remove": "Entfernen",
295
- "settings.keys.brainAnthropic": "Brain (Anthropic)",
296
- "settings.keys.brainOpenai": "Brain (OpenAI)",
297
- "settings.keys.brainGoogle": "Brain (Google KI)",
298
- "settings.keys.brainDeepseek": "Brain (DeepSeek)",
299
- "settings.keys.brainXai": "Brain (xAI / Grok)",
300
- "settings.keys.brainMistral": "Brain (Mistral)",
301
- "settings.keys.brainCohere": "Brain (Cohere)",
302
- "settings.keys.sttGoogle": "STT Google",
303
- "settings.keys.ttsGoogle": "TTS Google",
304
- "settings.keys.ttsElevenlabs": "TTS ElevenLabs",
305
- "settings.keys.sttWhisper": "STT Whisper",
306
- "settings.lang.title": "Sprache",
307
- "settings.lang.panelVoice": "Panel + Sprache",
308
- "settings.lang.changeButton": "Sprache andern",
309
- "settings.vault.title": "Vault (verschlusselt)",
310
- "settings.vault.slots": "Slots",
311
- "settings.vault.open": "Vault offnen",
312
- "settings.license.email": "E-Mail",
313
- "settings.license.validated": "Validiert",
314
- "settings.license.connectHint": "Verbinde dein Polar-Konto. Gib die E-Mail ein, mit der du bezahlt hast, und wir synchronisieren deinen Plan automatisch.",
315
- "settings.license.emailPlaceholder": "email@beispiel.com",
316
- "settings.license.connect": "Verbinden",
317
- "settings.license.sync": "Mit Polar synchronisieren",
318
- "settings.license.buy": "Plan kaufen / aktivieren",
319
- "settings.budget.title": "Budget diesen Monat",
320
- "settings.budget.renews": "Verlangert",
321
- "settings.budget.tokensEco": "Eco-Tokens",
322
- "settings.budget.tokensFrontier": "Frontier-Tokens",
323
- "settings.budget.buyExtension": "Token-Erweiterung kaufen",
324
- "settings.limits.title": "Limits (erweitert)",
325
- "settings.limits.editHint": "Beliebigen Wert bearbeiten + Tab/Blur speichert.",
326
- "settings.limits.reset": "Auf Standard zurucksetzen",
327
- "settings.bookmarks.title": "Reader-Lesezeichen",
328
- "settings.graph.title": "Projekt-Wissensgraph",
329
- "settings.pair.title": "Telefon verknupfen",
330
- "settings.pair.hint": "Offne Forge Mobile, tippe auf \"Verknupfen\" und scanne diesen QR. Fertig.",
331
- "settings.pair.generateQr": "QR generieren",
332
- "settings.pair.cantRead": "Kamera liest den QR nicht? Kopiere diesen Code und fuge ihn in Forge Mobile ein:",
333
- "settings.audit.viewFull": "Vollstandig anzeigen",
334
- "settings.audit.close": "Schliessen",
335
- "settings.audit.allKinds": "Alle Kinds",
336
- "settings.audit.allModes": "Alle Modes",
337
- "settings.audit.copyJson": "JSON kopieren",
338
- "settings.audit.closeDetail": "Detail schliessen",
339
- "settings.about.title": "Uber",
340
- "settings.danger.title": "Gefahrenzone",
341
- "settings.danger.warning": "Wenn ON, fuhrt Yujin JEDE Aktion ohne Bestatigung aus (einschliesslich shell.exec, rm, git push --force usw). Geschwindigkeit vor Sicherheit. Alles wird im Audit-Log aufgezeichnet.",
342
- "settings.keyEditor.placeholder": "Fuge hier deinen API key ein",
343
- "settings.license.title": "Lizenz",
344
- "settings.plan": "Tarif",
345
- "settings.audit.title": "Audit-Log",
346
- "settings.legal.title": "Rechtliches",
347
- "panel.status.projectSwitchFail": "Projektwechsel nicht moeglich.",
348
- "panel.status.projectRemoveFail": "Projekt konnte nicht entfernt werden.",
349
- "panel.status.projectAddFail": "Projekt konnte nicht hinzugefuegt werden.",
350
- "panel.status.cancelFail": "Abbruch nicht moeglich: {reason}",
351
- "panel.status.cancelNetError": "Netzwerkfehler beim Abbrechen der Shell.",
352
- "panel.status.notEditable": "Diese Art von Inhalt ist nicht bearbeitbar.",
353
- "panel.status.savedAsPicker": "Gespeichert als: {name} (am im Dialog gewaehlten Pfad).",
354
- "panel.status.saveAsFail": "Fehler bei Speichern unter: {error} -- Fallback wird verwendet.",
355
- "panel.status.saveFail": "Fehler beim Speichern: {error}",
356
- "panel.status.savedAs": "Gespeichert als: {path} ({bytes} Bytes)",
357
- "panel.status.netError": "Netzwerkfehler: {error}",
358
- "panel.status.savedTabOnly": "Aenderungen im Tab gespeichert (nicht auf der Festplatte -- ohne file_path).",
359
- "panel.status.saved": "Gespeichert: {path} ({bytes} Bytes)",
360
- "panel.status.copied": "In die Zwischenablage kopiert.",
361
- "panel.status.copyFail": "Kopieren nicht moeglich.",
362
- "panel.status.modeAvailable": "Verfuegbare Modi: didactico, tecnico. Verwendung: /modo tecnico",
363
- "panel.status.modeChangeFail": "Modus konnte nicht geaendert werden: {error}",
364
- "panel.status.modeChanged": "Modus auf {target} geaendert. Der naechste Zug verwendet bereits diesen Modus.",
365
- "panel.status.genericError": "Fehler: {error}",
366
- "panel.status.brainTierAuto": "Brain-Tier zurueck auf auto (der Router entscheidet nach Verb / Phase).",
367
- "panel.status.brainTierForced": "Brain-Tier fuer diese Sitzung auf \"{target}\" gesetzt. /auto kehrt zum Router zurueck.",
368
- "panel.confirm.tabUnsaved": "Der Tab \"{title}\" hat ungespeicherte Aenderungen. Trotzdem schliessen?",
369
- "panel.confirm.tabsUnsaved": "Es gibt Tabs mit ungespeicherten Aenderungen. Trotzdem alles schliessen?",
370
- "panel.confirm.discardChanges": "Ungespeicherte Aenderungen verwerfen?",
371
- "panel.confirm.removeSlot": "Slot \"{slot}\" entfernen? Dies kann nicht rueckgaengig gemacht werden.",
372
- "panel.confirm.removeKey": "Key fuer {slot} entfernen?",
373
- "panel.prompt.saveAs": "Speichern unter (Pfad relativ zum Projekt):",
374
- "panel.voice.sttFallback": "Browser-STT nicht verfuegbar; serverseitiger Fallback wird verwendet.",
375
- "panel.voice.noMicSupport": "Ihr Browser unterstuetzt keinen Mikrofonzugriff.",
376
- "panel.voice.recordingCountdown": "Aufnahme... Auto-Stopp in {n}s",
377
- "panel.voice.autoStopped": "Aufnahme nach 55s automatisch gestoppt (Google-STT-Limit von 1 Min). Versuchen Sie es kuerzer.",
378
- "panel.voice.noAudio": "Kein Audio aufgenommen. Versuchen Sie es erneut.",
379
- "panel.voice.audioTooLong": "Audio zu lang (>1 Min). Google-STT-Sync-Limit. Versuchen Sie es kuerzer.",
380
- "panel.voice.ttsUnavailable": "Browser-TTS nicht verfuegbar; wechseln Sie in den Einstellungen zurueck zu Google.",
381
- "panel.voice.micClosedHalfDuplex": "Mikrofon geschlossen, waehrend Yujin spricht (Halbduplex).",
382
- "panel.voice.micBlocked": "Mikrofon blockiert. Erlauben Sie das Mikrofon fuer diese App in den Browsereinstellungen und versuchen Sie es erneut.",
383
- "panel.voice.noMicDevice": "Kein Mikrofon auf diesem Geraet erkannt.",
384
- "panel.voice.micOpenFail": "Mikrofon konnte nicht geoeffnet werden: {error}",
385
- "panel.voice.micOpenListening": "Mikrofon offen, hoert zu...",
386
- "panel.voice.listening": "Ich hoere zu...",
387
- "panel.voice.listeningInterim": "Ich hoere zu... {text}",
388
- "panel.voice.micBlockedBrowser": "Mikrofon vom Browser blockiert. Klicken Sie auf das Schloss-Symbol in der URL-Leiste, erlauben Sie das Mikrofon und laden Sie die Seite neu. Oder wechseln Sie STT in den Einstellungen auf \"google\" / \"whisper\", wenn Sie die API key haben.",
389
- "panel.voice.noMicPhysical": "Kein physisches Mikrofon erkannt. Schliessen Sie eines an oder wechseln Sie STT in den Einstellungen auf \"google\" / \"whisper\".",
390
- "panel.voice.networkRequired": "Web Speech benoetigt eine Internetverbindung (Chrome nutzt im Hintergrund Google). Versuchen Sie es ohne instabile Verbindung oder wechseln Sie STT auf \"whisper\", wenn Sie die API key haben.",
391
- "panel.voice.langNotSupported": "Ihr Browser unterstuetzt diese Sprache fuer STT nicht. Aendern Sie die Panel-Sprache auf eine unterstuetzte (en, es, pt) oder wechseln Sie STT auf \"google\" / \"whisper\".",
392
- "panel.voice.micError": "Mikrofonfehler: {error}",
393
- "panel.voice.noAudioToRecognizer": "Kein Audio hat den Erkenner erreicht: Das Diktat des Browsers nimmt in dieser App nicht auf.",
394
- "panel.voice.micOpenNoVoice": "Mikrofon offen, aber keine Stimme erkannt. Gehen Sie naeher ans Mikrofon und sprechen Sie lauter; wenn es weiterhin auftritt, funktioniert das kostenlose Diktat in dieser PWA nicht.",
395
- "panel.voice.voiceNoText": "Stimme erkannt, aber der Browser hat keinen Text zurueckgegeben (kostenloses STT in dieser PWA nicht verfuegbar).",
396
- "panel.voice.startingDictation": "Diktat wird gestartet...",
397
- "panel.voice.couldNotStartMic": "Mikrofon konnte nicht gestartet werden: {error}",
398
- "panel.status.imageTooLarge": "Bild zu gross (>6MB): {name}",
399
- "panel.status.imageReady": "Bild bereit zum Senden: {name}",
400
- "panel.status.imageReadFail": "Bild konnte nicht gelesen werden: {error}",
401
- "panel.tip.attachFile": "Datei anhangen",
402
- "panel.tip.refreshDiscovery": "Discovery aktualisieren",
403
- "panel.tip.refreshNow": "Jetzt aktualisieren",
404
- "panel.tip.filterByProject": "Nach Projekt filtern",
405
- "panel.tip.concurrentRuns": "Gleichzeitige Laufe: globale / projektbezogene Limits",
406
- "panel.tip.mcpBridges": "MCP Bridges (F101)",
407
- "panel.tip.activity": "Agentenaktivitat + Bridge-Inspektor + Chat pro Agent",
408
- "panel.tip.settings": "Einstellungen (Sprachmodus, STT, TTS, Schlussel, Sprache)",
409
- "panel.tip.zoomOut": "Verkleinern (Ctrl -)",
410
- "panel.tip.zoomReset": "Zoom zurucksetzen (Ctrl 0)",
411
- "panel.tip.zoomIn": "Vergrossern (Ctrl +)",
412
- "panel.tip.maximize": "Maximieren / wiederherstellen (Vollbild)",
413
- "panel.tip.closeBoard": "Gesamtes Board schliessen",
414
- "panel.tip.openInEditor": "In meinem Editor offnen",
415
- "panel.tip.open": "Offnen",
416
- "panel.tip.saveAs": "Speichern unter -- neuen Pfad wahlen (relativ zum Projekt)",
417
- "panel.tip.codeModeDetail": "Detailliert: Dateien, Diffs und Befehle live",
418
- "panel.tip.codeModeZen": "Sumi-e: Kunst mit gelegentlichem Text",
419
- "panel.tip.cancelShell": "Shell-Befehl abbrechen",
420
- "panel.tip.closeTab": "Tab schliessen",
421
- "panel.tip.reopenNativeTabs": "Geschlossene native Tabs erneut offnen",
422
- "panel.tip.notTestedYet": "noch nicht getestet",
423
- "panel.aria.activity": "Aktivitat",
424
- "panel.aria.settings": "Einstellungen",
425
- "panel.aria.zoomOut": "Verkleinern",
426
- "panel.aria.zoomIn": "Vergrossern",
427
- "panel.aria.maximize": "Maximieren",
428
- "panel.aria.closeBoard": "alle schliessen",
429
- "panel.aria.thinking": "denkt nach",
430
- "panel.hint.boardEmpty": "Strukturierte Inhalte erscheinen hier: Code, Tabellen, Dokumente. Bitte Yujin, etwas zu schreiben oder zu bearbeiten.",
431
- "panel.hint.planMode": "Sie befinden sich im Plan-Modus (Abonnement). Das Board wird gezeichnet, wenn der Brain im API-Modus lauft: andern Sie es unter <strong>Einstellungen &gt; Brain &gt; Anthropic: Modus &gt; Console</strong> und offnen Sie das Panel erneut.",
432
- "panel.hint.bookmarksEmpty": "Keine Bookmarks. Bitte Yujin \"markiere diesen Punkt als ...\" beim Lesen eines Dokuments.",
433
- "panel.voice.replyFailed": "Sprachantwort fehlgeschlagen: {err}",
434
- "panel.voice.replyError": "Fehler bei der Sprachantwort: {err}",
435
- "panel.status.languageSwitchFailed": "Sprachwechsel fehlgeschlagen: {err}",
436
- "panel.status.languageListFailed": "Sprachliste konnte nicht geladen werden",
437
- "panel.legal.loading": "Wird geladen...",
438
- "panel.legal.loadError": "Fehler {status} beim Laden des Dokuments.",
439
- "panel.legal.networkError": "Netzwerkfehler: {err}",
440
- "panel.legal.defaultTitle": "Rechtliches",
441
- "panel.feedback.copied": "Kopiert",
442
- "panel.feedback.copyFailed": "Kopieren fehlgeschlagen",
443
- "panel.feedback.clipboardUnavailable": "Zwischenablage nicht verfugbar",
444
- "panel.feedback.saving": "Wird gespeichert...",
445
- "panel.feedback.saved": "Gespeichert.",
446
- "panel.feedback.saveError": "Fehler beim Speichern",
447
- "panel.feedback.netError": "Netzwerkfehler",
448
- "panel.feedback.netErrorSaving": "Netzwerkfehler beim Speichern",
449
- "panel.feedback.errorPrefix": "Fehler: {detail}",
450
- "panel.pair.generating": "Wird generiert...",
451
- "panel.pair.generateQr": "QR generieren",
452
- "panel.pair.copy": "Kopieren",
453
- "panel.pair.expiry": "Lauft in ~{mins} Min. ab. Bei Ablauf erneut generieren.",
454
- "panel.pair.qrNetError": "Netzwerkfehler beim Generieren des QR.",
455
- "panel.audit.copyJson": "JSON kopieren",
456
- "panel.limits.resetApplied": "Zurucksetzen auf Standardwerte angewendet",
457
- "panel.nac3.effects": "Auswirkungen: {list}",
458
- "panel.nac3.effectsUnknown": "unbekannt",
459
- "panel.nac3.cancel": "Abbrechen",
460
- "panel.nac3.reject": "Ablehnen",
461
- "panel.nac3.approve": "Genehmigen",
462
- "panel.nac3.approveDestructive": "Genehmigen (destruktiv)",
463
- "panel.nac3.executing": "Wird ausgefuhrt...",
464
- "panel.tts.providerBrowser": "TTS Browser",
465
- "panel.tts.providerGoogle": "TTS Google",
466
- "panel.tts.providerTitle": "Klicken, um zwischen Browser (natives SpeechSynthesis, OS-Stimmen) und Google Cloud TTS (serverseitig) zu wechseln.",
467
- "panel.stt.providerBrowser": "STT Browser",
468
- "panel.stt.providerGoogle": "STT Google",
469
- "panel.stt.providerWhisper": "STT Whisper",
470
- "panel.stt.providerTitle": "Klicken, um zwischen Browser (schnell + natives es-AR + kostenlos), Google Cloud STT (serverseitig, BYOK) oder Whisper (serverseitig, BYOK) zu wechseln.",
471
- "panel.tts.voiceTitle": "Aktuelle Stimme: {id} / {persona} ({gender}) -- {style}. Klicken zum Durchschalten. Studio = artikuliert s deutlich; Neural2 = naturliches Spanisch (haucht finales s).",
472
- "panel.license.lendNeedsLicense": "aktiviere deine Lizenz, um deinen Brain zu verleihen",
473
- "panel.license.emailInvalid": "Gib eine gultige E-Mail ein (mit @).",
474
- "panel.license.connecting": "Verbindung...",
475
- "panel.license.savingEmail": "E-Mail wird gespeichert + Synchronisierung mit Polar...",
476
- "panel.license.syncFailedRetry": "E-Mail gespeichert, aber Sync fehlgeschlagen: {err}{http}. Wenn du gerade bezahlt hast, warte 1-2 Min. und klicke auf \"Mit Polar synchronisieren\".",
477
- "panel.license.planOk": "OK -- Plan: {plan}.",
478
- "panel.license.netError": "Netzwerkfehler: {err}",
479
- "panel.license.syncing": "Synchronisierung...",
480
- "panel.license.querying": "Server wird abgefragt...",
481
- "panel.license.syncError": "Sync-Fehler: {err}{http}",
482
- "panel.license.planUnchanged": "Plan unverandert: {plan}",
483
- "panel.license.planUpdated": "Plan aktualisiert: {before} -> {after}",
484
- "panel.license.syncWithPolar": "Mit Polar synchronisieren",
485
- "panel.license.errorWithCode": "Fehler: {code}",
486
- "panel.keyEditor.keyTooShort": "Key zu kurz (min. 8 Zeichen).",
487
- "panel.bridge.coordUnavailable": "Koordination nicht verfugbar.",
488
- "panel.bridge.statusUnavailable": "nicht verfugbar",
489
- "panel.mcp.loadingBridges": "Bridges werden geladen...",
490
- "panel.tools.loading": "Tools werden geladen...",
491
- "panel.agentsChat.backPairs": "< Paare",
492
- "panel.agentsChat.noMessages": "Keine Nachrichten in diesem Paar.",
493
- "panel.agentsChat.noAgents": "keine Agenten",
494
- "panel.agentsChat.pickAgent": "Wahle einen Agenten + gib Text ein, bevor du sendest.",
495
- "panel.agentsChat.sending": "Wird gesendet...",
496
- "panel.agentsChat.errorGeneric": "Fehler: {err}",
497
- "panel.whatsNew.dismiss": "Schliessen",
498
- "panel.alert.noEditor": "Kein Editor im PATH. Kopieren Sie den Pfad: {path}",
499
- "panel.alert.pathRelative": "Der Pfad muss relativ zum Projekt sein (kein fuhrendes \"/\" oder \"..\").",
500
- "panel.tip.saveTo": "Speichern in {path}",
501
- "panel.tip.saveToMemory": "(Speicher)",
502
- "panel.button.saveAs": "Speichern unter...",
503
- "panel.aria.concurrentRuns": "Gleichzeitige Laufe",
504
- "panel.activity.allProjects": "Alle Projekte",
505
- "panel.activity.loadingFeed": "Feed wird geladen...",
506
- "panel.feedback.savedShort": "gespeichert",
507
- "panel.pair.qrFailed": "QR konnte nicht generiert werden.",
508
- "panel.brain.modePlan": "Plan (Abonnement)",
509
- "panel.brain.modeConsole": "Console (API-Key)",
510
- "panel.brain.applying": "{mode} wird angewendet...",
511
- "panel.brain.applied": "{mode} angewendet. Der nachste Zug verwendet bereits diesen Modus.",
512
- "panel.brain.reopenHint": "Wird beim erneuten Offnen des Panels angewendet.",
513
- "panel.brain.active": "{mode} aktiv",
514
- "panel.bridge.roleHost": "Host",
515
- "panel.bridge.roleClient": "Client",
516
- "panel.bridge.instanceOne": "Instanz",
517
- "panel.bridge.instanceMany": "Instanzen",
518
- "panel.bridge.you": "du",
519
- "panel.tip.deleteTask": "Aufgabe loschen",
520
- "panel.tasks.cmdPlaceholder": "Befehl (z. B. pnpm install)...",
521
- "panel.readAloud.code": "Code",
522
- "panel.readAloud.codeLang": "Code in {lang}",
523
- "panel.readAloud.file": "Datei {file}",
524
- "panel.readAloud.content": "Inhalt: {content}",
525
- "panel.pizarron.tabOne": "Tab",
526
- "panel.pizarron.tabMany": "Tabs"
527
- }
184
+ "pizarron.graph.orbit.speed": "Orbitalgeschwindigkeit",
185
+ "startup.tab.graph": "Visuelles Diagramm",
186
+ "startup.tab.graphSem": "Semantischer Graph",
187
+ "startup.tab.pendings": "Ausstehend",
188
+ "startup.tab.workflow": "Workflow",
189
+ "settings.startupTabs": "Tabs beim Start (Graph, ausstehend, Workflow)",
190
+ "graph.term.nodes": "Knoten",
191
+ "graph.term.edges": "Kanten",
192
+ "coding.read": "Lese {x}",
193
+ "coding.read_bare": "Lese eine Datei",
194
+ "coding.edit": "Bearbeite {x}",
195
+ "coding.edit_bare": "Bearbeite eine Datei",
196
+ "coding.write": "Schreibe {x}",
197
+ "coding.write_bare": "Schreibe eine Datei",
198
+ "coding.notebook_bare": "Bearbeite Notebook",
199
+ "coding.bash": "Fuehre aus: {x}",
200
+ "coding.bash_bare": "Fuehre einen Befehl aus",
201
+ "coding.grep": "Suche \"{x}\"",
202
+ "coding.grep_bare": "Suche im Code",
203
+ "coding.glob": "Liste {x}",
204
+ "coding.glob_bare": "Liste Dateien",
205
+ "coding.web_bare": "Lese das Web",
206
+ "coding.websearch": "Web-Suche: {x}",
207
+ "coding.websearch_bare": "Web-Suche",
208
+ "coding.task": "Sub-Agent: {x}",
209
+ "coding.task_bare": "Starte einen Sub-Agenten",
210
+ "coding.todo": "Aktualisiere seine Aufgabenliste",
211
+ "coding.verb_bare": "Fuehre ein yujin-Verb aus",
212
+ "panel.button.stop": "Stopp",
213
+ "panel.status.stopping": "Stoppe...",
214
+ "panel.status.noActiveTurn": "Es lief kein Zug.",
215
+ "panel.status.interruptFailed": "Unterbrechung konnte nicht gesendet werden.",
216
+ "panel.status.turnInterrupted": "Zug unterbrochen.",
217
+ "panel.label.interrupted": "(unterbrochen)",
218
+ "panel.queue.label": "In Warteschlange",
219
+ "panel.queue.remove": "Aus Warteschlange entfernen",
220
+ "panel.project.switchHint": "Projekt wechseln",
221
+ "panel.project.title": "Projekte",
222
+ "panel.project.add": "Projekt hinzufuegen...",
223
+ "panel.project.addPrompt": "Absoluter Pfad des hinzuzufuegenden Projekts:",
224
+ "panel.project.switching": "Projekt wird gewechselt...",
225
+ "startup.tab.files": "Dateien",
226
+ "panel.project.remove": "Aus der Liste entfernen",
227
+ "panel.project.removeConfirm": "Dieses Projekt aus der Liste entfernen? (löscht keine Dateien auf der Festplatte)",
228
+ "panel.project.removed": "Projekt aus der Liste entfernt",
229
+ "panel.files.refresh": "Aktualisieren",
230
+ "panel.files.loading": "Wird geladen...",
231
+ "panel.files.error": "Dateien konnten nicht gelesen werden.",
232
+ "panel.files.empty": "(keine Dateien)",
233
+ "panel.files.truncated": "(Liste gekürzt)",
234
+ "panel.files.opened": "Geöffnet",
235
+ "panel.files.openFailed": "Datei konnte nicht geöffnet werden.",
236
+ "panel.files.searchName": "Nach Name filtern",
237
+ "panel.files.searchType": "Typ (z. B. ts, png)",
238
+ "panel.files.matches": "{n} Treffer",
239
+ "panel.files.noMatches": "Keine Treffer",
240
+ "startup.tab.tasks": "Aufgaben",
241
+ "settings.bridge.title": "Koordination zwischen Instanzen",
242
+ "settings.bridge.accept": "Gerichtete Nachrichten anderer Instanzen akzeptieren (als Chat eingefugt)",
243
+ "settings.bridge.composePlaceholder": "Nachricht an die anderen Instanzen...",
244
+ "settings.voice.title": "Sprache",
245
+ "settings.voice.mode": "Modus",
246
+ "settings.voice.modeMic": "Mikrofonmodus",
247
+ "settings.voice.stt": "STT",
248
+ "settings.voice.sttBrowser": "STT Browser",
249
+ "settings.voice.ttsEngine": "TTS-Engine",
250
+ "settings.voice.ttsBrowser": "TTS Browser",
251
+ "settings.voice.ttsVoice": "TTS-Stimme (nur Google)",
252
+ "settings.vad.title": "VAD (Stilleerkennung)",
253
+ "settings.vad.resetDefaults": "Standard zurucksetzen",
254
+ "settings.vad.engine": "Engine",
255
+ "settings.vad.engineAmplitude": "Amplitude (RMS)",
256
+ "settings.vad.engineBand": "Band 80-400Hz",
257
+ "settings.vad.baselineWindow": "Baseline-Fenster",
258
+ "settings.vad.thresholdMult": "Schwellen-Mult. (Baseline x N)",
259
+ "settings.vad.thresholdMin": "Mindestschwelle",
260
+ "settings.vad.thresholdMax": "Maximalschwelle",
261
+ "settings.vad.silence": "Stille zum Schliessen",
262
+ "settings.vad.minVoiced": "Minimale Stimme (Anti-Blip)",
263
+ "settings.vad.tick": "VAD-Tick",
264
+ "settings.vad.bandLow": "Sprachband: low (Hz)",
265
+ "settings.vad.bandHigh": "Sprachband: high (Hz)",
266
+ "settings.vad.showOverlay": "Live-Overlay anzeigen",
267
+ "settings.vad.logStats": "Statistiken pro Sitzung protokollieren",
268
+ "settings.brain.anthropicMode": "Anthropic: Modus",
269
+ "settings.brain.modePlan": "Plan (Claude-Abo)",
270
+ "settings.brain.modeConsole": "Console (API key)",
271
+ "settings.brain.modeNote": "Wird beim erneuten Offnen des Panels wirksam.",
272
+ "settings.brain.ecoEnabled": "Eco-Modus aktiviert",
273
+ "settings.brain.ecoHint": "aus = immer frontier",
274
+ "settings.brain.modelEco": "Eco-Modell",
275
+ "settings.brain.modelFrontier": "Frontier-Modell",
276
+ "settings.brain.modelMultimodal": "Multimodal-Modell",
277
+ "settings.brain.multimodalClearTitle": "Dediziertes multimodal Brain entfernen (zuruck zur automatischen Vision-Weiterleitung)",
278
+ "settings.brain.auto": "Auto",
279
+ "settings.brain.multimodalHint": "Dediziertes Brain fur Bild-Turns. Auto = automatische Vision-Weiterleitung (das frontier, wenn es sieht, sonst Hinweis).",
280
+ "settings.brain.geminiCache": "Expliziter Gemini-Cache (CachedContent)",
281
+ "settings.brain.geminiCacheHint": "Opt-in. Nutzlich bei langen Sitzungen mit Gemini Pro; bei kurzen Sitzungen reicht der kostenlose implizite Cache von 2.5.",
282
+ "settings.federation.title": "Brain-Foderation",
283
+ "settings.federation.intro": "Nutze das Brain eines anderen Forge (sein Key verlasst nie seine Maschine) oder verleihe deins. Dein Code lauft lokal; nur die Inferenz reist.",
284
+ "settings.federation.connectedTo": "Verbunden mit",
285
+ "settings.federation.disconnect": "Trennen",
286
+ "settings.federation.connectMe": "Mich verbinden",
287
+ "settings.federation.tokenPlaceholder": "Foderationscode einfugen",
288
+ "settings.federation.connect": "Verbinden",
289
+ "settings.federation.lendBrain": "Mein Brain verleihen",
290
+ "settings.federation.generateCode": "Code generieren",
291
+ "settings.federation.host": "Hosten (auf Kinder antworten)",
292
+ "settings.federation.fedBrain": "Foderations-Brain",
293
+ "settings.federation.fedBrainNote": "Das, was auf Kinder antwortet. Direkte API (DeepSeek standardmassig). Claude Plan kann nicht hosten; es braucht einen Key mit Guthaben.",
294
+ "settings.federation.codeOnce": "Code (einmalig)",
295
+ "settings.federation.copy": "Kopieren",
296
+ "settings.keys.title": "API keys (BYOK)",
297
+ "settings.keys.configure": "Konfigurieren",
298
+ "settings.keys.remove": "Entfernen",
299
+ "settings.keys.brainAnthropic": "Brain (Anthropic)",
300
+ "settings.keys.brainOpenai": "Brain (OpenAI)",
301
+ "settings.keys.brainGoogle": "Brain (Google KI)",
302
+ "settings.keys.brainDeepseek": "Brain (DeepSeek)",
303
+ "settings.keys.brainXai": "Brain (xAI / Grok)",
304
+ "settings.keys.brainMistral": "Brain (Mistral)",
305
+ "settings.keys.brainCohere": "Brain (Cohere)",
306
+ "settings.keys.sttGoogle": "STT Google",
307
+ "settings.keys.ttsGoogle": "TTS Google",
308
+ "settings.keys.ttsElevenlabs": "TTS ElevenLabs",
309
+ "settings.keys.sttWhisper": "STT Whisper",
310
+ "settings.lang.title": "Sprache",
311
+ "settings.lang.panelVoice": "Panel + Sprache",
312
+ "settings.lang.changeButton": "Sprache andern",
313
+ "settings.vault.title": "Vault (verschlusselt)",
314
+ "settings.vault.slots": "Slots",
315
+ "settings.vault.open": "Vault offnen",
316
+ "settings.license.email": "E-Mail",
317
+ "settings.license.validated": "Validiert",
318
+ "settings.license.connectHint": "Verbinde dein Polar-Konto. Gib die E-Mail ein, mit der du bezahlt hast, und wir synchronisieren deinen Plan automatisch.",
319
+ "settings.license.emailPlaceholder": "email@beispiel.com",
320
+ "settings.license.connect": "Verbinden",
321
+ "settings.license.sync": "Mit Polar synchronisieren",
322
+ "settings.license.buy": "Plan kaufen / aktivieren",
323
+ "settings.budget.title": "Budget diesen Monat",
324
+ "settings.budget.renews": "Verlangert",
325
+ "settings.budget.tokensEco": "Eco-Tokens",
326
+ "settings.budget.tokensFrontier": "Frontier-Tokens",
327
+ "settings.budget.buyExtension": "Token-Erweiterung kaufen",
328
+ "settings.limits.title": "Limits (erweitert)",
329
+ "settings.limits.editHint": "Beliebigen Wert bearbeiten + Tab/Blur speichert.",
330
+ "settings.limits.reset": "Auf Standard zurucksetzen",
331
+ "settings.bookmarks.title": "Reader-Lesezeichen",
332
+ "settings.graph.title": "Projekt-Wissensgraph",
333
+ "settings.pair.title": "Telefon verknupfen",
334
+ "settings.pair.hint": "Offne Forge Mobile, tippe auf \"Verknupfen\" und scanne diesen QR. Fertig.",
335
+ "settings.pair.generateQr": "QR generieren",
336
+ "settings.pair.cantRead": "Kamera liest den QR nicht? Kopiere diesen Code und fuge ihn in Forge Mobile ein:",
337
+ "settings.audit.viewFull": "Vollstandig anzeigen",
338
+ "settings.audit.close": "Schliessen",
339
+ "settings.audit.allKinds": "Alle Kinds",
340
+ "settings.audit.allModes": "Alle Modes",
341
+ "settings.audit.copyJson": "JSON kopieren",
342
+ "settings.audit.closeDetail": "Detail schliessen",
343
+ "settings.about.title": "Uber",
344
+ "settings.danger.title": "Gefahrenzone",
345
+ "settings.danger.warning": "Wenn ON, fuhrt Yujin JEDE Aktion ohne Bestatigung aus (einschliesslich shell.exec, rm, git push --force usw). Geschwindigkeit vor Sicherheit. Alles wird im Audit-Log aufgezeichnet.",
346
+ "settings.keyEditor.placeholder": "Fuge hier deinen API key ein",
347
+ "settings.license.title": "Lizenz",
348
+ "settings.plan": "Tarif",
349
+ "settings.audit.title": "Audit-Log",
350
+ "settings.legal.title": "Rechtliches",
351
+ "panel.status.projectSwitchFail": "Projektwechsel nicht moeglich.",
352
+ "panel.status.projectRemoveFail": "Projekt konnte nicht entfernt werden.",
353
+ "panel.status.projectAddFail": "Projekt konnte nicht hinzugefuegt werden.",
354
+ "panel.status.cancelFail": "Abbruch nicht moeglich: {reason}",
355
+ "panel.status.cancelNetError": "Netzwerkfehler beim Abbrechen der Shell.",
356
+ "panel.status.notEditable": "Diese Art von Inhalt ist nicht bearbeitbar.",
357
+ "panel.status.savedAsPicker": "Gespeichert als: {name} (am im Dialog gewaehlten Pfad).",
358
+ "panel.status.saveAsFail": "Fehler bei Speichern unter: {error} -- Fallback wird verwendet.",
359
+ "panel.status.saveFail": "Fehler beim Speichern: {error}",
360
+ "panel.status.savedAs": "Gespeichert als: {path} ({bytes} Bytes)",
361
+ "panel.status.netError": "Netzwerkfehler: {error}",
362
+ "panel.status.savedTabOnly": "Aenderungen im Tab gespeichert (nicht auf der Festplatte -- ohne file_path).",
363
+ "panel.status.saved": "Gespeichert: {path} ({bytes} Bytes)",
364
+ "panel.status.copied": "In die Zwischenablage kopiert.",
365
+ "panel.status.copyFail": "Kopieren nicht moeglich.",
366
+ "panel.status.modeAvailable": "Verfuegbare Modi: didactico, tecnico. Verwendung: /modo tecnico",
367
+ "panel.status.modeChangeFail": "Modus konnte nicht geaendert werden: {error}",
368
+ "panel.status.modeChanged": "Modus auf {target} geaendert. Der naechste Zug verwendet bereits diesen Modus.",
369
+ "panel.status.genericError": "Fehler: {error}",
370
+ "panel.status.brainTierAuto": "Brain-Tier zurueck auf auto (der Router entscheidet nach Verb / Phase).",
371
+ "panel.status.brainTierForced": "Brain-Tier fuer diese Sitzung auf \"{target}\" gesetzt. /auto kehrt zum Router zurueck.",
372
+ "panel.confirm.tabUnsaved": "Der Tab \"{title}\" hat ungespeicherte Aenderungen. Trotzdem schliessen?",
373
+ "panel.confirm.tabsUnsaved": "Es gibt Tabs mit ungespeicherten Aenderungen. Trotzdem alles schliessen?",
374
+ "panel.confirm.discardChanges": "Ungespeicherte Aenderungen verwerfen?",
375
+ "panel.confirm.removeSlot": "Slot \"{slot}\" entfernen? Dies kann nicht rueckgaengig gemacht werden.",
376
+ "panel.confirm.removeKey": "Key fuer {slot} entfernen?",
377
+ "panel.prompt.saveAs": "Speichern unter (Pfad relativ zum Projekt):",
378
+ "panel.voice.sttFallback": "Browser-STT nicht verfuegbar; serverseitiger Fallback wird verwendet.",
379
+ "panel.voice.noMicSupport": "Ihr Browser unterstuetzt keinen Mikrofonzugriff.",
380
+ "panel.voice.recordingCountdown": "Aufnahme... Auto-Stopp in {n}s",
381
+ "panel.voice.autoStopped": "Aufnahme nach 55s automatisch gestoppt (Google-STT-Limit von 1 Min). Versuchen Sie es kuerzer.",
382
+ "panel.voice.noAudio": "Kein Audio aufgenommen. Versuchen Sie es erneut.",
383
+ "panel.voice.audioTooLong": "Audio zu lang (>1 Min). Google-STT-Sync-Limit. Versuchen Sie es kuerzer.",
384
+ "panel.voice.ttsUnavailable": "Browser-TTS nicht verfuegbar; wechseln Sie in den Einstellungen zurueck zu Google.",
385
+ "panel.voice.micClosedHalfDuplex": "Mikrofon geschlossen, waehrend Yujin spricht (Halbduplex).",
386
+ "panel.voice.micBlocked": "Mikrofon blockiert. Erlauben Sie das Mikrofon fuer diese App in den Browsereinstellungen und versuchen Sie es erneut.",
387
+ "panel.voice.noMicDevice": "Kein Mikrofon auf diesem Geraet erkannt.",
388
+ "panel.voice.micOpenFail": "Mikrofon konnte nicht geoeffnet werden: {error}",
389
+ "panel.voice.micOpenListening": "Mikrofon offen, hoert zu...",
390
+ "panel.voice.listening": "Ich hoere zu...",
391
+ "panel.voice.listeningInterim": "Ich hoere zu... {text}",
392
+ "panel.voice.micBlockedBrowser": "Mikrofon vom Browser blockiert. Klicken Sie auf das Schloss-Symbol in der URL-Leiste, erlauben Sie das Mikrofon und laden Sie die Seite neu. Oder wechseln Sie STT in den Einstellungen auf \"google\" / \"whisper\", wenn Sie die API key haben.",
393
+ "panel.voice.noMicPhysical": "Kein physisches Mikrofon erkannt. Schliessen Sie eines an oder wechseln Sie STT in den Einstellungen auf \"google\" / \"whisper\".",
394
+ "panel.voice.networkRequired": "Web Speech benoetigt eine Internetverbindung (Chrome nutzt im Hintergrund Google). Versuchen Sie es ohne instabile Verbindung oder wechseln Sie STT auf \"whisper\", wenn Sie die API key haben.",
395
+ "panel.voice.langNotSupported": "Ihr Browser unterstuetzt diese Sprache fuer STT nicht. Aendern Sie die Panel-Sprache auf eine unterstuetzte (en, es, pt) oder wechseln Sie STT auf \"google\" / \"whisper\".",
396
+ "panel.voice.micError": "Mikrofonfehler: {error}",
397
+ "panel.voice.noAudioToRecognizer": "Kein Audio hat den Erkenner erreicht: Das Diktat des Browsers nimmt in dieser App nicht auf.",
398
+ "panel.voice.micOpenNoVoice": "Mikrofon offen, aber keine Stimme erkannt. Gehen Sie naeher ans Mikrofon und sprechen Sie lauter; wenn es weiterhin auftritt, funktioniert das kostenlose Diktat in dieser PWA nicht.",
399
+ "panel.voice.voiceNoText": "Stimme erkannt, aber der Browser hat keinen Text zurueckgegeben (kostenloses STT in dieser PWA nicht verfuegbar).",
400
+ "panel.voice.startingDictation": "Diktat wird gestartet...",
401
+ "panel.voice.couldNotStartMic": "Mikrofon konnte nicht gestartet werden: {error}",
402
+ "panel.status.imageTooLarge": "Bild zu gross (>6MB): {name}",
403
+ "panel.status.imageReady": "Bild bereit zum Senden: {name}",
404
+ "panel.status.imageReadFail": "Bild konnte nicht gelesen werden: {error}",
405
+ "panel.tip.attachFile": "Datei anhangen",
406
+ "panel.tip.refreshDiscovery": "Discovery aktualisieren",
407
+ "panel.tip.refreshNow": "Jetzt aktualisieren",
408
+ "panel.tip.filterByProject": "Nach Projekt filtern",
409
+ "panel.tip.concurrentRuns": "Gleichzeitige Laufe: globale / projektbezogene Limits",
410
+ "panel.tip.mcpBridges": "MCP Bridges (F101)",
411
+ "panel.tip.activity": "Agentenaktivitat + Bridge-Inspektor + Chat pro Agent",
412
+ "panel.tip.settings": "Einstellungen (Sprachmodus, STT, TTS, Schlussel, Sprache)",
413
+ "panel.tip.zoomOut": "Verkleinern (Ctrl -)",
414
+ "panel.tip.zoomReset": "Zoom zurucksetzen (Ctrl 0)",
415
+ "panel.tip.zoomIn": "Vergrossern (Ctrl +)",
416
+ "panel.tip.maximize": "Maximieren / wiederherstellen (Vollbild)",
417
+ "panel.tip.closeBoard": "Gesamtes Board schliessen",
418
+ "panel.tip.openInEditor": "In meinem Editor offnen",
419
+ "panel.tip.open": "Offnen",
420
+ "panel.tip.saveAs": "Speichern unter -- neuen Pfad wahlen (relativ zum Projekt)",
421
+ "panel.tip.codeModeDetail": "Detailliert: Dateien, Diffs und Befehle live",
422
+ "panel.tip.codeModeZen": "Sumi-e: Kunst mit gelegentlichem Text",
423
+ "panel.tip.cancelShell": "Shell-Befehl abbrechen",
424
+ "panel.tip.closeTab": "Tab schliessen",
425
+ "panel.tip.reopenNativeTabs": "Geschlossene native Tabs erneut offnen",
426
+ "panel.tip.notTestedYet": "noch nicht getestet",
427
+ "panel.aria.activity": "Aktivitat",
428
+ "panel.aria.settings": "Einstellungen",
429
+ "panel.aria.zoomOut": "Verkleinern",
430
+ "panel.aria.zoomIn": "Vergrossern",
431
+ "panel.aria.maximize": "Maximieren",
432
+ "panel.aria.closeBoard": "alle schliessen",
433
+ "panel.aria.thinking": "denkt nach",
434
+ "panel.hint.boardEmpty": "Strukturierte Inhalte erscheinen hier: Code, Tabellen, Dokumente. Bitte Yujin, etwas zu schreiben oder zu bearbeiten.",
435
+ "panel.hint.planMode": "Sie befinden sich im Plan-Modus (Abonnement). Das Board wird gezeichnet, wenn der Brain im API-Modus lauft: andern Sie es unter <strong>Einstellungen &gt; Brain &gt; Anthropic: Modus &gt; Console</strong> und offnen Sie das Panel erneut.",
436
+ "panel.hint.bookmarksEmpty": "Keine Bookmarks. Bitte Yujin \"markiere diesen Punkt als ...\" beim Lesen eines Dokuments.",
437
+ "panel.voice.replyFailed": "Sprachantwort fehlgeschlagen: {err}",
438
+ "panel.voice.replyError": "Fehler bei der Sprachantwort: {err}",
439
+ "panel.status.languageSwitchFailed": "Sprachwechsel fehlgeschlagen: {err}",
440
+ "panel.status.languageListFailed": "Sprachliste konnte nicht geladen werden",
441
+ "panel.legal.loading": "Wird geladen...",
442
+ "panel.legal.loadError": "Fehler {status} beim Laden des Dokuments.",
443
+ "panel.legal.networkError": "Netzwerkfehler: {err}",
444
+ "panel.legal.defaultTitle": "Rechtliches",
445
+ "panel.feedback.copied": "Kopiert",
446
+ "panel.feedback.copyFailed": "Kopieren fehlgeschlagen",
447
+ "panel.feedback.clipboardUnavailable": "Zwischenablage nicht verfugbar",
448
+ "panel.feedback.saving": "Wird gespeichert...",
449
+ "panel.feedback.saved": "Gespeichert.",
450
+ "panel.feedback.saveError": "Fehler beim Speichern",
451
+ "panel.feedback.netError": "Netzwerkfehler",
452
+ "panel.feedback.netErrorSaving": "Netzwerkfehler beim Speichern",
453
+ "panel.feedback.errorPrefix": "Fehler: {detail}",
454
+ "panel.pair.generating": "Wird generiert...",
455
+ "panel.pair.generateQr": "QR generieren",
456
+ "panel.pair.copy": "Kopieren",
457
+ "panel.pair.expiry": "Lauft in ~{mins} Min. ab. Bei Ablauf erneut generieren.",
458
+ "panel.pair.qrNetError": "Netzwerkfehler beim Generieren des QR.",
459
+ "panel.audit.copyJson": "JSON kopieren",
460
+ "panel.limits.resetApplied": "Zurucksetzen auf Standardwerte angewendet",
461
+ "panel.nac3.effects": "Auswirkungen: {list}",
462
+ "panel.nac3.effectsUnknown": "unbekannt",
463
+ "panel.nac3.cancel": "Abbrechen",
464
+ "panel.nac3.reject": "Ablehnen",
465
+ "panel.nac3.approve": "Genehmigen",
466
+ "panel.nac3.approveDestructive": "Genehmigen (destruktiv)",
467
+ "panel.nac3.executing": "Wird ausgefuhrt...",
468
+ "panel.tts.providerBrowser": "TTS Browser",
469
+ "panel.tts.providerGoogle": "TTS Google",
470
+ "panel.tts.providerTitle": "Klicken, um zwischen Browser (natives SpeechSynthesis, OS-Stimmen) und Google Cloud TTS (serverseitig) zu wechseln.",
471
+ "panel.stt.providerBrowser": "STT Browser",
472
+ "panel.stt.providerGoogle": "STT Google",
473
+ "panel.stt.providerWhisper": "STT Whisper",
474
+ "panel.stt.providerTitle": "Klicken, um zwischen Browser (schnell + natives es-AR + kostenlos), Google Cloud STT (serverseitig, BYOK) oder Whisper (serverseitig, BYOK) zu wechseln.",
475
+ "panel.tts.voiceTitle": "Aktuelle Stimme: {id} / {persona} ({gender}) -- {style}. Klicken zum Durchschalten. Studio = artikuliert s deutlich; Neural2 = naturliches Spanisch (haucht finales s).",
476
+ "panel.license.lendNeedsLicense": "aktiviere deine Lizenz, um deinen Brain zu verleihen",
477
+ "panel.license.emailInvalid": "Gib eine gultige E-Mail ein (mit @).",
478
+ "panel.license.connecting": "Verbindung...",
479
+ "panel.license.savingEmail": "E-Mail wird gespeichert + Synchronisierung mit Polar...",
480
+ "panel.license.syncFailedRetry": "E-Mail gespeichert, aber Sync fehlgeschlagen: {err}{http}. Wenn du gerade bezahlt hast, warte 1-2 Min. und klicke auf \"Mit Polar synchronisieren\".",
481
+ "panel.license.planOk": "OK -- Plan: {plan}.",
482
+ "panel.license.netError": "Netzwerkfehler: {err}",
483
+ "panel.license.syncing": "Synchronisierung...",
484
+ "panel.license.querying": "Server wird abgefragt...",
485
+ "panel.license.syncError": "Sync-Fehler: {err}{http}",
486
+ "panel.license.planUnchanged": "Plan unverandert: {plan}",
487
+ "panel.license.planUpdated": "Plan aktualisiert: {before} -> {after}",
488
+ "panel.license.syncWithPolar": "Mit Polar synchronisieren",
489
+ "panel.license.errorWithCode": "Fehler: {code}",
490
+ "panel.keyEditor.keyTooShort": "Key zu kurz (min. 8 Zeichen).",
491
+ "panel.bridge.coordUnavailable": "Koordination nicht verfugbar.",
492
+ "panel.bridge.statusUnavailable": "nicht verfugbar",
493
+ "panel.mcp.loadingBridges": "Bridges werden geladen...",
494
+ "panel.tools.loading": "Tools werden geladen...",
495
+ "panel.agentsChat.backPairs": "< Paare",
496
+ "panel.agentsChat.noMessages": "Keine Nachrichten in diesem Paar.",
497
+ "panel.agentsChat.noAgents": "keine Agenten",
498
+ "panel.agentsChat.pickAgent": "Wahle einen Agenten + gib Text ein, bevor du sendest.",
499
+ "panel.agentsChat.sending": "Wird gesendet...",
500
+ "panel.agentsChat.errorGeneric": "Fehler: {err}",
501
+ "panel.whatsNew.dismiss": "Schliessen",
502
+ "panel.alert.noEditor": "Kein Editor im PATH. Kopieren Sie den Pfad: {path}",
503
+ "panel.alert.pathRelative": "Der Pfad muss relativ zum Projekt sein (kein fuhrendes \"/\" oder \"..\").",
504
+ "panel.tip.saveTo": "Speichern in {path}",
505
+ "panel.tip.saveToMemory": "(Speicher)",
506
+ "panel.button.saveAs": "Speichern unter...",
507
+ "panel.aria.concurrentRuns": "Gleichzeitige Laufe",
508
+ "panel.activity.allProjects": "Alle Projekte",
509
+ "panel.activity.loadingFeed": "Feed wird geladen...",
510
+ "panel.feedback.savedShort": "gespeichert",
511
+ "panel.pair.qrFailed": "QR konnte nicht generiert werden.",
512
+ "panel.brain.modePlan": "Plan (Abonnement)",
513
+ "panel.brain.modeConsole": "Console (API-Key)",
514
+ "panel.brain.applying": "{mode} wird angewendet...",
515
+ "panel.brain.applied": "{mode} angewendet. Der nachste Zug verwendet bereits diesen Modus.",
516
+ "panel.brain.reopenHint": "Wird beim erneuten Offnen des Panels angewendet.",
517
+ "panel.brain.active": "{mode} aktiv",
518
+ "panel.bridge.roleHost": "Host",
519
+ "panel.bridge.roleClient": "Client",
520
+ "panel.bridge.instanceOne": "Instanz",
521
+ "panel.bridge.instanceMany": "Instanzen",
522
+ "panel.bridge.you": "du",
523
+ "panel.tip.deleteTask": "Aufgabe loschen",
524
+ "panel.tasks.cmdPlaceholder": "Befehl (z. B. pnpm install)...",
525
+ "panel.readAloud.code": "Code",
526
+ "panel.readAloud.codeLang": "Code in {lang}",
527
+ "panel.readAloud.file": "Datei {file}",
528
+ "panel.readAloud.content": "Inhalt: {content}",
529
+ "panel.pizarron.tabOne": "Tab",
530
+ "panel.pizarron.tabMany": "Tabs"
531
+ }