@moraya/core 0.1.0 → 0.3.1

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.
@@ -0,0 +1,3873 @@
1
+ {
2
+ "admin": {
3
+ "__mt": true,
4
+ "title": "Team Admin",
5
+ "tab_members": "Members",
6
+ "tab_kbs": "Knowledge Bases",
7
+ "tab_usage": "Usage",
8
+ "members": "Members",
9
+ "knowledge_bases": "Knowledge Bases",
10
+ "invite_member": "Invite Member",
11
+ "remove_member": "Remove",
12
+ "create_kb": "Create KB",
13
+ "no_members": "No members yet.",
14
+ "no_kbs": "No knowledge bases yet.",
15
+ "col_name": "Name",
16
+ "col_email": "Email",
17
+ "col_role": "Role",
18
+ "col_joined": "Joined",
19
+ "e2e": "E2E",
20
+ "ai": "AI",
21
+ "usage_summary": "Usage Summary",
22
+ "storage": "Storage",
23
+ "notes": "Notes",
24
+ "ai_queries": "AI Queries",
25
+ "active_members": "Active Members",
26
+ "this_month": "this month"
27
+ },
28
+ "agent": {
29
+ "__mt": true,
30
+ "title": "AI Agent",
31
+ "subtitle": "Let AI handle multi-step tasks across your knowledge base",
32
+ "query_placeholder": "Describe a task for the agent to complete...",
33
+ "run": "Run",
34
+ "pause": "Pause",
35
+ "resume": "Resume",
36
+ "cancel": "Cancel",
37
+ "new_task": "New Task",
38
+ "final_answer": "Final Answer",
39
+ "upgrade_required": "AI Agent is available on Personal and above plans.",
40
+ "mode": {
41
+ "react": "ReAct (Adaptive)",
42
+ "plan_execute": "Plan & Execute"
43
+ },
44
+ "history": {
45
+ "title": "Agent History",
46
+ "search_placeholder": "Search tasks...",
47
+ "no_results": "No tasks match your search.",
48
+ "empty": "No agent tasks yet. Start your first task!",
49
+ "steps": "steps"
50
+ },
51
+ "market": {
52
+ "title": "Agent Templates",
53
+ "subtitle": "Browse ready-to-use agent templates",
54
+ "search_placeholder": "Search templates...",
55
+ "no_results": "No templates match your search.",
56
+ "all_tags": "All",
57
+ "use": "Use Template"
58
+ }
59
+ },
60
+ "ai": {
61
+ "title": "AI",
62
+ "rules_active": "MORAYA.md-Regeln aktiv ({count} Abschnitte)",
63
+ "clear_chat": "Chat löschen",
64
+ "unconfigured": "KI ist nicht konfiguriert.",
65
+ "unconfigured_hint": "Öffnen Sie die Einstellungen ({shortcut}) und konfigurieren Sie Ihren API-Schlüssel, um KI-Funktionen zu aktivieren.",
66
+ "open_settings": "KI-Einstellungen öffnen",
67
+ "open_image_settings": "AIGC-Einstellungen öffnen",
68
+ "text_ai_label": "Text-KI (Prompt-Generierung)",
69
+ "image_ai_label": "Bild-KI (Bildgenerierung)",
70
+ "welcome_title": "Wie kann ich helfen?",
71
+ "welcome_hint": "Geben Sie eine Nachricht ein oder verwenden Sie {kbd} für Befehle",
72
+ "you": "Sie",
73
+ "assistant": "KI",
74
+ "typing": "tippt...",
75
+ "placeholder": "Fragen Sie die KI...",
76
+ "placeholder_selection": "Fragen zur Auswahl...",
77
+ "send": "Senden (⌘↵)",
78
+ "stop": "Stoppen (Esc)",
79
+ "retry": "Wiederholen",
80
+ "interrupted": "Unterbrochen",
81
+ "insert_to_editor": "In den Editor einfügen",
82
+ "replace_selection": "Auswahl ersetzen",
83
+ "attach_image": "Bild anhängen",
84
+ "attach_image_max": "Maximal {max} Bilder",
85
+ "remove_image": "Bild entfernen",
86
+ "close_preview": "Vorschau schließen",
87
+ "more_actions": "Weitere Aktionen",
88
+ "voice_transcription": "KI-Sprachtranskription",
89
+ "config": {
90
+ "title": "KI-Konfiguration",
91
+ "provider": "Anbieter",
92
+ "api_key": "API-Schlüssel",
93
+ "api_key_placeholder": "{provider}-API-Schlüssel eingeben",
94
+ "api_key_not_required": "Für Ollama nicht erforderlich",
95
+ "base_url": "Basis-URL",
96
+ "model": "Modell",
97
+ "model_placeholder": "Modellnamen eingeben",
98
+ "max_tokens": "Max. Token",
99
+ "temperature": "Temperatur",
100
+ "test_connection": "Verbindung testen",
101
+ "testing": "Teste...",
102
+ "connected": "Verbunden!",
103
+ "failed": "Fehlgeschlagen",
104
+ "test_failed": "Verbindungstest fehlgeschlagen"
105
+ },
106
+ "providers": {
107
+ "claude": "Anthropic Claude",
108
+ "openai": "OpenAI",
109
+ "gemini": "Google Gemini",
110
+ "deepseek": "DeepSeek",
111
+ "ollama": "Ollama (Lokal)",
112
+ "custom": "Benutzerdefinierte API",
113
+ "grok": "xAI Grok",
114
+ "mistral": "Mistral AI",
115
+ "glm": "Zhipu GLM",
116
+ "minimax": "MiniMax",
117
+ "doubao": "Doubao (ByteDance)"
118
+ },
119
+ "multi_model": {
120
+ "add_model": "+ Modell hinzufügen",
121
+ "default": "Standard",
122
+ "set_default": "Als Standard festlegen",
123
+ "no_models": "Keine KI-Modelle konfiguriert",
124
+ "no_models_hint": "Fügen Sie ein KI-Modell hinzu, um KI-Funktionen zu nutzen.",
125
+ "no_image_models": "Keine Bildmodelle konfiguriert",
126
+ "no_image_models_hint": "Fügen Sie ein Bildgenerierungsmodell hinzu, um KI-Bildfunktionen zu nutzen."
127
+ },
128
+ "image_config": {
129
+ "title": "Bildgenerierungs-KI",
130
+ "provider": "Anbieter",
131
+ "provider_openai": "OpenAI DALL-E",
132
+ "provider_grok": "Grok (xAI)",
133
+ "provider_custom": "Benutzerdefiniert (OpenAI-kompatibel)",
134
+ "api_key": "API-Schlüssel",
135
+ "api_key_placeholder": "Bild-API-Schlüssel eingeben",
136
+ "base_url": "Basis-URL",
137
+ "model": "Modell",
138
+ "model_placeholder": "Modellnamen eingeben",
139
+ "default_size": "Standardgröße",
140
+ "ratio": "Seitenverhältnis",
141
+ "size_level": "Größe",
142
+ "size_large": "Groß",
143
+ "size_medium": "Mittel",
144
+ "size_small": "Klein",
145
+ "provider_gemini": "Google Gemini Imagen",
146
+ "provider_qwen": "Qwen (Alibaba)",
147
+ "provider_doubao": "Doubao (ByteDance)"
148
+ },
149
+ "commands": {
150
+ "write": "Schreiben",
151
+ "write_desc": "Inhalte basierend auf Ihrer Eingabe erstellen",
152
+ "continue": "Weiterschreiben",
153
+ "continue_desc": "Dort fortfahren, wo der Text aufgehört hat",
154
+ "summarize": "Zusammenfassen",
155
+ "summarize_desc": "Den ausgewählten Text zusammenfassen",
156
+ "translate": "Übersetzen",
157
+ "translate_desc": "Text in eine andere Sprache übersetzen",
158
+ "improve": "Verbessern",
159
+ "improve_desc": "Schreibqualität verbessern",
160
+ "fix_grammar": "Grammatik korrigieren",
161
+ "fix_grammar_desc": "Grammatik- und Rechtschreibfehler beheben",
162
+ "simplify": "Vereinfachen",
163
+ "simplify_desc": "Komplexen Text vereinfachen",
164
+ "expand": "Erweitern",
165
+ "expand_desc": "Das Thema ausführlicher behandeln",
166
+ "outline": "Gliederung erstellen",
167
+ "outline_desc": "Eine Artikelgliederung erstellen",
168
+ "explain": "Erklären",
169
+ "explain_desc": "Den ausgewählten Text erklären"
170
+ },
171
+ "prompts": {
172
+ "empty_response": "Sie haben eine leere Antwort zurückgegeben. Bitte fahren Sie mit der Aufgabe fort: Führen Sie entweder die erforderlichen Tool-Aufrufe durch oder fassen Sie zusammen, was abgeschlossen wurde, und listen Sie verbleibende Punkte auf. Senden Sie keine leere Nachricht.",
173
+ "empty_response_continue": "\n\nIhre letzte Nachricht war: \"{lastMessage}\"\nBitte fahren Sie von dort fort.",
174
+ "truncation_continue": "Ihre vorherige Antwort wurde aufgrund von Ausgabelängenbeschränkungen abgeschnitten. Der obige Text wurde gespeichert. Bitte schließen Sie nun die Aufgabe ab, indem Sie die erforderlichen Tool-Aufrufe durchführen. Wiederholen Sie den Inhalt nicht — verwenden Sie ihn direkt in den Tool-Argumenten.",
175
+ "continuation_prompt": "Bitte fahren Sie fort und führen Sie die erforderlichen Tool-Aufrufe durch, um die Aufgabe abzuschließen. Wiederholen Sie nicht, was bereits gesagt wurde — fahren Sie direkt mit den Tool-Aufrufen fort.",
176
+ "mcp_tool_prompt": "Verwenden Sie das Tool {toolName} (von {serverName})",
177
+ "review_context": "---\nThis document has {count} pending review comments:\n{items}\n---",
178
+ "review_context_item": "[Line {line}] @{author}: \"{text}\"",
179
+ "review_context_item_unanchored": "[Position lost] @{author}: \"{text}\"",
180
+ "ai_review_request": "Please review the current document and identify issues across four dimensions: logic, expression, fact, and structure. Use the write_ai_reviews tool to return up to 10 structured review comments. For each, provide markedText (an exact text fragment from the document being reviewed), comment (your review), and dimension (one of: logic, expression, fact, structure). If your model does not support tool calls, return the same data as a JSON code block.",
181
+ "ai_improve_request": "The document has {count} pending review comments:\n{items}\n\nPlease apply these reviews and improve the document. Use the update_editor_content tool to write the improved full document. Preserve formatting and original structure where possible.",
182
+ "ai_summary_request": "The document has {count} review comments (including resolved):\n{items}\n\nPlease summarize them across four dimensions (logic / expression / fact / structure), and rate the priority (high / medium / low) for each dimension.",
183
+ "ai_respond_request": "The document contains this text:\n\"{markedText}\"\n\nThe reviewer commented:\n\"{commentText}\"\n\nPlease provide specific suggestions for revision. Do NOT modify the document — give suggestions only."
184
+ },
185
+ "detection": {
186
+ "intent_prefixes": "Ich werde|Ich muss|Ich sollte|Lass mich|Zuerst|Jetzt|Als nächstes",
187
+ "action_verbs": "erstellen|schreiben|lesen|aktualisieren|hochladen|generieren|abrufen|prüfen|testen|verwenden|ausführen|senden|suchen|finden|speichern|löschen|bearbeiten|konfigurieren|exportieren|anzeigen",
188
+ "continuation_phrases": "Zuerst|Als Nächstes|Dann|Jetzt",
189
+ "remaining_phrases": "verbleibend|nächste|Schritt \\d+",
190
+ "unfinished_phrases": "noch zu tun|TODO|nächster Schritt|noch nicht|ausstehend"
191
+ },
192
+ "sections": {
193
+ "image_ai": "Bild-KI",
194
+ "image_aihint": "Konfigurationen für KI-Bildgenerierungsmodelle."
195
+ },
196
+ "generating": "Wird generiert…",
197
+ "not_configured": "KI-Anbieter nicht konfiguriert"
198
+ },
199
+ "ai_budget": {
200
+ "__mt": true,
201
+ "title": "AI Budget",
202
+ "description": "Set monthly and per-call spending limits for AI requests routed through Moraya.",
203
+ "monthly_spend": "Monthly Spend",
204
+ "monthly_limit": "Monthly Limit",
205
+ "per_call_limit": "Per-Call Limit",
206
+ "hard_stop": "Hard Stop",
207
+ "hard_stop_hint": "Block all AI calls once the monthly limit is reached.",
208
+ "zero_unlimited": "0 = unlimited",
209
+ "limit_reached": "Monthly budget limit reached. AI calls are blocked.",
210
+ "near_limit": "You have used {pct}% of your monthly budget.",
211
+ "saved": "Settings saved.",
212
+ "save": "Save",
213
+ "reset": "Reset Month",
214
+ "how_it_works": "How It Works",
215
+ "info1": "The router tracks estimated and actual costs per API call.",
216
+ "info2": "Hard stop blocks new calls; soft limit shows warnings only.",
217
+ "info3": "Monthly counters reset on the 1st of each month automatically."
218
+ },
219
+ "ai_history": {
220
+ "__mt": true,
221
+ "title": "AI Call History",
222
+ "total_calls": "Total Calls",
223
+ "month_cost": "This Month",
224
+ "success_rate": "Success Rate",
225
+ "tab_list": "Calls",
226
+ "tab_provider": "By Provider",
227
+ "tab_daily": "By Day",
228
+ "no_records": "No call records yet.",
229
+ "failed": "Failed",
230
+ "provider": "Provider",
231
+ "calls": "Calls",
232
+ "cost": "Cost",
233
+ "share": "Share"
234
+ },
235
+ "app": {
236
+ "__mt": true,
237
+ "name": "Moraya Web",
238
+ "tagline": "Your AI, your data, your cloud."
239
+ },
240
+ "audit": {
241
+ "report_title": "Document Audit Report: {filename}",
242
+ "generated_at": "Generated at",
243
+ "knowledge_base": "Knowledge base",
244
+ "git_repo": "Git repository",
245
+ "branch": "branch",
246
+ "commit_history": "Commit History",
247
+ "col_time": "Time",
248
+ "col_author": "Author",
249
+ "col_summary": "Summary",
250
+ "review_summary": "Review Summary",
251
+ "summary_stats": "Total {total} review(s); {resolved} resolved, {wontfix} won't fix, {open} open",
252
+ "resolved_section": "Resolved ({count})",
253
+ "wontfix_section": "Won't Fix ({count})",
254
+ "open_section": "Open ({count})",
255
+ "resolved_note": "resolved at {date} by {user}",
256
+ "wontfix_note": "marked won't fix at {date} by {user}",
257
+ "no_reviews": "No reviews recorded",
258
+ "showing_last_commits": "(Showing only the last {count} commits)",
259
+ "not_git_bound": "Not linked to a Git repository",
260
+ "line_n": "Line {n}",
261
+ "unanchored_label": "Position lost",
262
+ "export_dialog_title": "Export Audit Report",
263
+ "export_filename": "Filename",
264
+ "export_format": "Format",
265
+ "format_markdown": "Markdown (.md)",
266
+ "include_history": "Commit history (last {count} commits)",
267
+ "include_reviews": "Review summary ({total} reviews, {resolved} resolved)",
268
+ "anonymize_authors": "Anonymize authors (@{name} → @reviewer-1)",
269
+ "include_full_discussion": "Include full review discussion (default: summary only)",
270
+ "privacy_notice": "The report will be saved locally. No data is sent to any external service.",
271
+ "cancel": "Cancel",
272
+ "save": "Save…",
273
+ "title": "Audit Log",
274
+ "events": "events",
275
+ "verify_integrity": "Verify Integrity",
276
+ "chain_valid": "Chain Valid",
277
+ "chain_invalid": "Chain Broken",
278
+ "no_events": "No audit events found.",
279
+ "loading": "Loading audit log…"
280
+ },
281
+ "auth": {
282
+ "__mt": true,
283
+ "login": "Sign in with Picora",
284
+ "logout": "Sign out",
285
+ "logging_in": "Signing in...",
286
+ "login_title": "Welcome to Moraya Web",
287
+ "login_subtitle": "Sign in with your Picora account to access your knowledge base.",
288
+ "continue_offline": "Continue offline (no sync)",
289
+ "connect_picora": "Connect Picora to sync",
290
+ "connected_to_picora": "Connected to Picora",
291
+ "disconnect": "Disconnect",
292
+ "local_only_notice": "You are working locally. Notes are stored on this device only."
293
+ },
294
+ "billing": {
295
+ "__mt": true,
296
+ "title": "Billing",
297
+ "current_plan": "Current Plan",
298
+ "upgrade_title": "Upgrade Your Plan",
299
+ "upgrade_subtitle": "Get more AI calls, unlimited storage, and premium features.",
300
+ "downgrade_title": "Downgrade Plan",
301
+ "downgrade_subtitle": "You can choose to downgrade effective immediately or at the end of your billing period.",
302
+ "cancel_title": "Cancel Subscription",
303
+ "cancel_subtitle": "We're sorry to see you go. You can cancel effective immediately or at the end of your billing period.",
304
+ "plan_personal": "Personal",
305
+ "plan_team": "Team",
306
+ "plan_enterprise": "Enterprise",
307
+ "plan_connect": "Connect (Free)",
308
+ "monthly": "Monthly",
309
+ "yearly": "Yearly",
310
+ "yearly_savings": "Save 2 months",
311
+ "per_seat": "/seat",
312
+ "pay_with_stripe": "Pay with Card (Stripe)",
313
+ "pay_with_alipay": "Pay with Alipay",
314
+ "seats_label": "Number of seats",
315
+ "seats_hint": "Minimum 1 seat",
316
+ "effective_immediate": "Effective immediately",
317
+ "effective_period_end": "At the end of the billing period",
318
+ "cancel_confirm": "I understand my subscription will end",
319
+ "downgrade_confirm": "I understand I may lose access to some features",
320
+ "confirm_cancel": "Cancel Subscription",
321
+ "confirm_downgrade": "Confirm Downgrade",
322
+ "refund_title": "Request Refund",
323
+ "refund_14day": "As a first-time subscriber within 14 days, you qualify for an automatic refund.",
324
+ "refund_request": "Request Refund",
325
+ "refund_pending": "Refund request submitted. Our team will review it.",
326
+ "back_to_billing": "Back to Billing",
327
+ "loading": "Loading...",
328
+ "error": "Something went wrong. Please try again.",
329
+ "checkout_redirect": "Redirecting to checkout...",
330
+ "alipay_scan": "Scan with Alipay app to complete payment",
331
+ "devices_title": "Manage Devices",
332
+ "devices_subtitle": "Devices signed into your account.",
333
+ "device_current": "This device",
334
+ "device_revoke": "Sign out",
335
+ "device_revoke_confirm": "Sign out this device?",
336
+ "device_last_active": "Last active",
337
+ "devices_limit_reached": "You've reached the device limit for your plan.",
338
+ "usage_ai_calls": "AI Calls",
339
+ "usage_kbs": "Knowledge Bases",
340
+ "usage_devices": "Devices",
341
+ "usage_of": "{used} of {limit}",
342
+ "upgrade_prompt_ai": "You've used {used}/{limit} AI calls this month.",
343
+ "upgrade_prompt_kb": "You've reached your KB limit ({limit}).",
344
+ "upgrade_now": "Upgrade Now",
345
+ "plan_features_personal": "Unlimited KBs, 2000 AI calls/month, BYO API key, E2E encryption, BYOC storage",
346
+ "plan_features_team": "Everything in Personal, team collaboration, 5000 AI calls/month, Cloud KMS",
347
+ "currency_usd": "USD ($)",
348
+ "currency_cny": "CNY (¥)",
349
+ "currency_eur": "EUR (€)",
350
+ "change_currency": "Change currency"
351
+ },
352
+ "cloud_picker": {
353
+ "title_image": "Cloud-Bild einfügen",
354
+ "title_audio": "Cloud-Audio einfügen",
355
+ "title_video": "Cloud-Video einfügen",
356
+ "no_targets": "Kein Picora-Ziel konfiguriert. Bitte fügen Sie eines unter Einstellungen → Wissensdatenbank hinzu.",
357
+ "scope_this_kb": "Diese Wissensdatenbank",
358
+ "scope_all": "Alle Dateien",
359
+ "scope_no_kb": "Keine Wissensdatenbank",
360
+ "tab_recent": "Zuletzt",
361
+ "tab_all": "Alle",
362
+ "tab_favorites": "Favoriten",
363
+ "search_placeholder": "Suchen…",
364
+ "grid_view": "Rasteransicht",
365
+ "list_view": "Listenansicht",
366
+ "error_title": "Laden fehlgeschlagen",
367
+ "last_cache": "Zuletzt geladen",
368
+ "empty_title": "Keine Dateien gefunden",
369
+ "empty_sub": "Filter anpassen oder Dateien zu Picora hochladen.",
370
+ "loading_more": "Wird geladen…",
371
+ "selected_count": "{n} ausgewählt",
372
+ "insert_as_html": "Als HTML einfügen",
373
+ "insert_btn": "Einfügen",
374
+ "processing": "Wird verarbeitet",
375
+ "public": "Öffentlich",
376
+ "private": "Privat",
377
+ "favorite": "Favorit",
378
+ "copy_url": "URL kopieren",
379
+ "privacy_title": "Private Dateien ausgewählt",
380
+ "privacy_desc": "{n} Datei(en) sind privat und möglicherweise nicht öffentlich sichtbar.",
381
+ "privacy_warn": "Öffentliche Dateien können von jedem mit dem Link angesehen werden.",
382
+ "suppress_privacy": "Nicht mehr warnen",
383
+ "make_public_insert": "Öffentlich machen & einfügen",
384
+ "insert_anyway": "Trotzdem einfügen",
385
+ "copy_markdown": "Markdown kopieren",
386
+ "empty_kb_scoped_sub": "Keine Dateien in der aktuellen KB. Frühere Uploads sind möglicherweise nicht mit dieser KB verknüpft.",
387
+ "switch_scope_all": "Alle Konto-Dateien anzeigen",
388
+ "url_missing": "Medien-URL fehlt — das Element ist möglicherweise noch nicht bereit."
389
+ },
390
+ "command_palette": {
391
+ "placeholder": "Dateien, Befehle oder Wissensdatenbank durchsuchen...",
392
+ "files": "Dateien",
393
+ "commands": "Befehle",
394
+ "semantic_search": "Semantische Suche",
395
+ "keyword_search": "Stichwortsuche",
396
+ "no_results": "Keine Ergebnisse gefunden"
397
+ },
398
+ "commands": {
399
+ "__mt": true,
400
+ "palette_title": "Command Palette",
401
+ "placeholder": "Search commands...",
402
+ "no_results": "No commands found",
403
+ "type_to_search": "Type to search commands",
404
+ "go_home": "Go to Home",
405
+ "open_settings": "Open Settings",
406
+ "open_workflows": "Open Workflows",
407
+ "toggle_sidebar": "Toggle Sidebar",
408
+ "sidebar_kb": "Sidebar: Knowledge Bases",
409
+ "sidebar_explorer": "Sidebar: Files",
410
+ "sidebar_outline": "Sidebar: Outline"
411
+ },
412
+ "common": {
413
+ "save": "Speichern",
414
+ "cancel": "Abbrechen",
415
+ "close": "Schließen",
416
+ "add": "Hinzufügen",
417
+ "remove": "Entfernen",
418
+ "connect": "Verbinden",
419
+ "disconnect": "Trennen",
420
+ "insert": "Einfügen",
421
+ "replace": "Ersetzen",
422
+ "copy": "Kopieren",
423
+ "edit": "Bearbeiten",
424
+ "delete": "Löschen",
425
+ "browse": "Ändern",
426
+ "clear": "Zurücksetzen",
427
+ "play": "Abspielen",
428
+ "stop": "Stoppen",
429
+ "start": "Starten",
430
+ "untitled": "Unbenannt",
431
+ "retry": "Erneut versuchen",
432
+ "refresh": "Aktualisieren",
433
+ "new": "Neu"
434
+ },
435
+ "compose": {
436
+ "__mt": true,
437
+ "title": "Compose article",
438
+ "start_over": "Start over",
439
+ "stepper_label": "Compose stages",
440
+ "step": {
441
+ "topic": "Topic",
442
+ "article": "Article",
443
+ "cover": "Cover",
444
+ "review": "Review"
445
+ },
446
+ "topic": {
447
+ "title": "What's the article about?",
448
+ "hint": "Describe the topic, audience, key points — the more specific, the better.",
449
+ "placeholder": "e.g. A deep dive on why Rust's async model handles backpressure better than Go's…",
450
+ "next": "Next: write article →"
451
+ },
452
+ "tone": {
453
+ "title": "Tone",
454
+ "general": "General",
455
+ "marketing": "Marketing",
456
+ "technical": "Technical",
457
+ "story": "Story"
458
+ },
459
+ "length": {
460
+ "title": "Length",
461
+ "short": "Short",
462
+ "medium": "Medium",
463
+ "long": "Long"
464
+ },
465
+ "article": {
466
+ "title": "Write the article",
467
+ "ready": "Ready to generate. Tap below to stream the article.",
468
+ "generate": "Generate article",
469
+ "generating": "Streaming from the model…",
470
+ "cancel": "Stop",
471
+ "regenerate": "Regenerate",
472
+ "next": "Next: cover image →",
473
+ "no_provider": "No AI provider configured. Set one up to generate articles.",
474
+ "configure": "Configure AI provider"
475
+ },
476
+ "cover": {
477
+ "title": "Cover image",
478
+ "prompt_hint": "This prompt was auto-derived from your article. Edit if you want a specific look.",
479
+ "prompt_placeholder": "Cover illustration for: ...",
480
+ "generate": "Generate cover",
481
+ "generating": "Generating…",
482
+ "next": "Next: review →",
483
+ "preview_alt": "Cover image preview",
484
+ "no_provider": "No image generation provider configured. Set one up to make cover images.",
485
+ "configure": "Configure image-gen provider",
486
+ "style": "Style"
487
+ },
488
+ "review": {
489
+ "title": "Review & publish",
490
+ "publish_hint": "Insert into a note, or set up an MCP publish target to send this article to WeChat / RSS / custom platforms.",
491
+ "insert": "Insert into note",
492
+ "configure_publish": "Configure publish target",
493
+ "uploading": "Uploading cover…",
494
+ "cover_upload_failed": "Cover upload failed — inserting without it.",
495
+ "insert_failed": "Insert failed: {err}"
496
+ },
497
+ "publish": {
498
+ "send": "Send to…",
499
+ "opening": "Preparing…",
500
+ "picker_title": "Where to publish?",
501
+ "empty": "No publish targets configured yet.",
502
+ "configure": "Configure publish targets",
503
+ "success": "Published to {target}",
504
+ "failed": "{target} failed: {err}"
505
+ },
506
+ "drafts": {
507
+ "title": "Drafts",
508
+ "new": "New draft",
509
+ "new_sub": "Archive current and start fresh",
510
+ "active": "Active",
511
+ "untitled": "Untitled draft",
512
+ "delete": "Delete draft"
513
+ }
514
+ },
515
+ "conflict": {
516
+ "__mt": true,
517
+ "title": "Conflict Detected",
518
+ "description": "This note was edited on another device.",
519
+ "keep_server": "Keep server version",
520
+ "keep_local": "Keep my version",
521
+ "merge": "Merge manually"
522
+ },
523
+ "context_menu": {
524
+ "cut": "Ausschneiden",
525
+ "copy": "Kopieren",
526
+ "paste": "Einfügen",
527
+ "upload_all_images": "Alle Bilder zum Bildhosting hochladen",
528
+ "upload_starting": "Bilder werden zum Bildhosting hochgeladen...",
529
+ "upload_image_success": "Hochgeladen: {name}",
530
+ "upload_image_failed": "Fehlgeschlagen: {name} — {error}",
531
+ "upload_all_complete": "Upload abgeschlossen: {success}/{total} erfolgreich",
532
+ "upload_no_config": "Bitte konfigurieren Sie zuerst einen Bildhoster in den Einstellungen",
533
+ "insert_cloud_image": "Cloud-Bild einfügen…",
534
+ "insert_cloud_audio": "Cloud-Audio einfügen…",
535
+ "insert_cloud_video": "Cloud-Video einfügen…"
536
+ },
537
+ "diff": {
538
+ "title": "{filename} · {hash1} ↔ {hash2}",
539
+ "back_to_edit": "← Back to Edit",
540
+ "no_changes": "The two versions are identical — no differences",
541
+ "binary_file": "This version contains binary content and cannot be displayed as text diff",
542
+ "added_line": "Added line",
543
+ "deleted_line": "Deleted line",
544
+ "stats_line": "+{added} added · -{deleted} deleted",
545
+ "left_label": "Old",
546
+ "right_label": "New"
547
+ },
548
+ "editor": {
549
+ "source_mode": "Source",
550
+ "visual_mode": "Visual",
551
+ "split_mode": "Split",
552
+ "unsaved_title": "Ungespeicherte Änderungen",
553
+ "unsaved_new_doc_msg": "Sie haben ungespeicherte Inhalte, die verloren gehen. Möchten Sie zuerst speichern?",
554
+ "save_first": "Speichern",
555
+ "discard_changes": "Nicht speichern",
556
+ "loading": {
557
+ "parsing": "Markdown wird analysiert…",
558
+ "rendering": "Wird gerendert…"
559
+ },
560
+ "saving": "Saving...",
561
+ "saved": "Saved",
562
+ "offline_cached": "Saved offline",
563
+ "conflict": "Conflict detected",
564
+ "unsaved_changes": "You have unsaved changes. Discard?",
565
+ "discard": "Discard",
566
+ "cancel": "Cancel",
567
+ "words": "words",
568
+ "chars": "chars",
569
+ "new_note": "New note"
570
+ },
571
+ "enterprise": {
572
+ "__mt": true,
573
+ "hsm": {
574
+ "title": "Hardware Security Module (HSM)",
575
+ "subtitle": "Connect your HSM provider for FIPS 140-2 Level 3+ key operations",
576
+ "upgrade_required": "HSM integration requires the Enterprise plan.",
577
+ "providers": {
578
+ "aws": "AWS CloudHSM",
579
+ "aliyun": "Aliyun HSM",
580
+ "pkcs11": "PKCS#11 (Generic)"
581
+ },
582
+ "aws": {
583
+ "cluster_id": "Cluster ID",
584
+ "region": "AWS Region"
585
+ },
586
+ "aliyun": {
587
+ "instance_id": "Instance ID",
588
+ "region": "Region"
589
+ },
590
+ "pkcs11": {
591
+ "lib_path": "Library Path (.so / .dll / .dylib)",
592
+ "slot": "Slot ID",
593
+ "supported_mechanisms": "Supported Mechanisms"
594
+ }
595
+ },
596
+ "orgs": {
597
+ "title": "Multi-Organization Management",
598
+ "subtitle": "Manage seat allocation and cross-org knowledge sharing",
599
+ "upgrade_required": "Multi-org management requires the Enterprise plan.",
600
+ "seat_allocation": "Seat Allocation",
601
+ "total_seats": "Total Seats",
602
+ "allocated": "Allocated",
603
+ "unallocated": "Unallocated",
604
+ "org_list": "Organizations",
605
+ "members": "Members",
606
+ "cross_org_sharing": "Cross-Org Sharing",
607
+ "shares_to": "shares KBs to",
608
+ "kb_ids_placeholder": "kb-1, kb-2, ...",
609
+ "request_share": "Request Share"
610
+ },
611
+ "compliance": {
612
+ "title": "Compliance & Archiving",
613
+ "subtitle": "GDPR, HIPAA, SOC2, ISO 27001 compliance exports and WORM archiving",
614
+ "upgrade_required": "Compliance archiving requires the Enterprise plan.",
615
+ "tabs": {
616
+ "retention": "Retention",
617
+ "worm": "WORM",
618
+ "export": "Export"
619
+ },
620
+ "retention": {
621
+ "title": "7-Year Retention",
622
+ "hint": "Records are retained for 7 years and cannot be deleted during this period.",
623
+ "days_left": "days left",
624
+ "years": "years"
625
+ },
626
+ "worm": {
627
+ "title": "WORM Records",
628
+ "description": "Write-Once-Read-Many records are immutable once created.",
629
+ "immutable_label": "Immutable",
630
+ "immutable_desc": "Records cannot be modified or deleted after creation.",
631
+ "retention_years": "Retention Period"
632
+ },
633
+ "export": {
634
+ "title": "Compliance Export",
635
+ "standard": "Standard",
636
+ "format": "Format",
637
+ "generate": "Generate Export",
638
+ "applicable_events": "Applicable audit events"
639
+ }
640
+ },
641
+ "custom_domain": {
642
+ "title": "Custom Domain",
643
+ "subtitle": "Use your own domain name for the Moraya workspace.",
644
+ "upgrade_required": "Custom domain requires the Enterprise plan.",
645
+ "hostname": "Your Domain",
646
+ "cname_target": "CNAME Target",
647
+ "dns_record": "DNS Record to Add",
648
+ "dns_hint": "Add this CNAME record to your DNS provider and wait for propagation (up to 48h).",
649
+ "save": "Save & Verify",
650
+ "verifying_hint": "Verification in progress. DNS propagation may take up to 48 hours."
651
+ },
652
+ "custom_ai": {
653
+ "title": "Custom AI Endpoint",
654
+ "subtitle": "Connect your own OpenAI-compatible LLM endpoint.",
655
+ "upgrade_required": "Custom AI endpoints require the Enterprise plan.",
656
+ "add_provider": "Add Provider",
657
+ "provider_name": "Provider Name",
658
+ "base_url": "Base URL",
659
+ "api_key_ref": "API Key Reference (Keychain ID)",
660
+ "models_csv": "Models (comma-separated)",
661
+ "add": "Add Provider",
662
+ "saved_providers": "Saved Providers",
663
+ "context_window": "Context window",
664
+ "models": "models",
665
+ "openai_compatible": "OpenAI-compatible",
666
+ "custom_format": "Custom format"
667
+ },
668
+ "data_residency": {
669
+ "title": "Data Residency",
670
+ "subtitle": "Control where your organization's data is stored and processed.",
671
+ "upgrade_required": "Data residency control requires the Enterprise plan.",
672
+ "primary_region": "Primary Region",
673
+ "allowed_regions": "Allowed Regions",
674
+ "restrict_cross_region": "Restrict cross-region data transfers",
675
+ "filter_by_compliance": "Filter by Compliance Standard",
676
+ "all": "All",
677
+ "requirements": "Legal Requirements",
678
+ "save_policy": "Save Policy",
679
+ "policy_saved": "Policy saved"
680
+ }
681
+ },
682
+ "entitlement": {
683
+ "__mt": true,
684
+ "connect": "Connect",
685
+ "personal": "Personal",
686
+ "team": "Team",
687
+ "enterprise": "Enterprise",
688
+ "current_plan": "Current plan",
689
+ "upgrade": "Upgrade"
690
+ },
691
+ "errors": {
692
+ "ai_not_configured": "KI ist nicht konfiguriert.",
693
+ "ai_request_failed": "KI-Anfrage fehlgeschlagen",
694
+ "chat_request_failed": "Chat-Anfrage fehlgeschlagen",
695
+ "unknown_command": "Unbekannter KI-Befehl: {command}",
696
+ "auth": {
697
+ "picora_token_expired": "Session expired. Please sign in again.",
698
+ "picora_plan_expired": "Your Picora plan has expired. Please renew or upgrade.",
699
+ "oauth_state_missing": "Login session not found. Please try again.",
700
+ "csrf_state_mismatch": "Security check failed. Please try again."
701
+ },
702
+ "storage": {
703
+ "network_offline": "You're offline. Changes saved locally.",
704
+ "conflict_detected": "Someone else edited this note. Please resolve the conflict.",
705
+ "not_found": "Note not found.",
706
+ "access_denied": "Access denied.",
707
+ "too_large": "File is too large.",
708
+ "quota_exceeded": "Storage quota exceeded.",
709
+ "rate_limited": "Too many requests. Please wait.",
710
+ "server_error": "Server error. Please try again."
711
+ },
712
+ "editor": {
713
+ "mount_failed": "Editor failed to load. Please refresh the page."
714
+ },
715
+ "browser": {
716
+ "unsupported": "Your browser is not supported. Please use Chrome 96+, Firefox 95+, or Safari 14+."
717
+ },
718
+ "internal": {
719
+ "unknown": "An unexpected error occurred."
720
+ },
721
+ "ai": {
722
+ "e2e_proxy_blocked": "Moraya proxy AI is not available in E2E mode. Please use your own API key.",
723
+ "e2e_rag_blocked": "Server-side RAG requires Cloud KMS mode."
724
+ },
725
+ "kms": {
726
+ "gcp_not_implemented": "GCP KMS is not yet supported."
727
+ }
728
+ },
729
+ "explorer": {
730
+ "__mt": true,
731
+ "title": "Files",
732
+ "filter_placeholder": "Filter notes...",
733
+ "empty": "No notes yet",
734
+ "no_results": "No matching notes",
735
+ "new_note": "New note",
736
+ "new_folder": "New folder",
737
+ "rename": "Rename",
738
+ "delete": "Delete",
739
+ "favorite": "Add to favorites",
740
+ "unfavorite": "Remove from favorites",
741
+ "context_menu": "File options",
742
+ "tags": "Tags",
743
+ "no_tags": "No tags found",
744
+ "untagged": "Untagged"
745
+ },
746
+ "export": {
747
+ "export_as": "Exportieren als {format}",
748
+ "pdf": "PDF",
749
+ "html": "HTML (mit Stilen)",
750
+ "html_plain": "HTML (ohne Stile)",
751
+ "image": "Bild (PNG)",
752
+ "doc": "Word (.doc)",
753
+ "rtf": "RTF",
754
+ "epub": "Epub",
755
+ "latex": "LaTeX",
756
+ "mediawiki": "MediaWiki",
757
+ "rst": "reStructuredText",
758
+ "textile": "Textile",
759
+ "opml": "OPML",
760
+ "progress": {
761
+ "preparing": "Vorbereiten...",
762
+ "rendering": "Rendern...",
763
+ "paginating": "Seitenumbruch ({current}/{total})",
764
+ "writing": "Schreiben...",
765
+ "done": "Fertig"
766
+ },
767
+ "fallback": {
768
+ "notice": "Kompat-Modus"
769
+ },
770
+ "error": {
771
+ "generic": "Export fehlgeschlagen",
772
+ "timeout": "Export-Zeitüberschreitung",
773
+ "subprocess_failed": "Unterprozess fehlgeschlagen",
774
+ "native_api_failed": "Nativer Druck fehlgeschlagen"
775
+ }
776
+ },
777
+ "fulltext_search": {
778
+ "__mt": true,
779
+ "title": "Hybrid Search",
780
+ "placeholder": "Search notes, memories, workflows...",
781
+ "clear": "Clear",
782
+ "filters": "Filters",
783
+ "filter_time": "Time",
784
+ "filter_source": "Source",
785
+ "filter_tags": "Tags",
786
+ "time_all": "All time",
787
+ "time_today": "Today",
788
+ "time_7d": "Last 7 days",
789
+ "time_30d": "Last 30 days",
790
+ "time_90d": "Last 90 days",
791
+ "source_all": "All sources",
792
+ "source_note": "Notes",
793
+ "source_memory": "Memory",
794
+ "source_workflow": "Workflows",
795
+ "cross_kb_hint": "Upgrade for cross-KB search",
796
+ "tab_results": "Results",
797
+ "tab_history": "History",
798
+ "tab_saved": "Saved",
799
+ "save_search": "Save search",
800
+ "save_name_prompt": "Name this saved search",
801
+ "searching": "Searching...",
802
+ "no_results": "No results found",
803
+ "start_typing": "Type to search",
804
+ "history_empty": "No search history",
805
+ "saved_empty": "No saved searches",
806
+ "clear_history": "Clear history",
807
+ "hint_navigate": "Navigate",
808
+ "hint_open": "Open",
809
+ "hint_close": "Close"
810
+ },
811
+ "git": {
812
+ "bind_title": "Git-Repository verknüpfen",
813
+ "repo_url": "Repository-URL",
814
+ "branch": "Branch",
815
+ "token": "Persönlicher Zugriffstoken",
816
+ "token_hint": "Persönliches Zugriffstoken oder API-Schlüssel. Sicher im OS-Schlüsselbund gespeichert.",
817
+ "auth_method": "Authentifizierungsmethode",
818
+ "auth_token": "Zugriffstoken",
819
+ "auth_password": "Benutzername & Passwort",
820
+ "auth_ssh": "SSH-Schlüssel",
821
+ "username": "Benutzername",
822
+ "password": "Passwort",
823
+ "ssh_key_path": "Pfad zum privaten SSH-Schlüssel",
824
+ "ssh_passphrase": "SSH-Schlüsselpassphrase",
825
+ "ssh_key_path_hint": "Absoluter Pfad zum privaten SSH-Schlüssel (z.B. ~/.ssh/id_ed25519)",
826
+ "ssh_passphrase_hint": "Leer lassen, wenn der Schlüssel keine Passphrase hat",
827
+ "error_username_required": "Benutzername ist erforderlich",
828
+ "error_password_required": "Passwort ist erforderlich",
829
+ "error_ssh_key_required": "SSH-Schlüsselpfad ist erforderlich",
830
+ "mode_clone": "In lokales Verzeichnis klonen",
831
+ "mode_push": "Lokale Inhalte zum Remote pushen",
832
+ "mode_connect": "Mit vorhandenem Repository verbinden",
833
+ "detecting": "Erkennung...",
834
+ "auto_commit": "Beim Speichern automatisch committen",
835
+ "auto_sync": "Hintergrund-Autosync",
836
+ "sync_interval": "Sync-Intervall",
837
+ "minutes": "Min.",
838
+ "confirm_bind": "Repository verknüpfen",
839
+ "error_url_required": "Repository-URL ist erforderlich",
840
+ "error_token_required": "Zugriffstoken ist erforderlich",
841
+ "bind": "Git-Repository verknüpfen",
842
+ "unbind": "Git-Verknüpfung lösen",
843
+ "unbind_title": "Git-Repository-Verknüpfung lösen",
844
+ "unbind_confirm": "Git-Verknüpfung von \"{name}\" lösen? Die lokalen Dateien bleiben erhalten.",
845
+ "synced": "Synchronisiert",
846
+ "ahead": "zu pushen",
847
+ "behind": "zu pullen",
848
+ "syncing": "Synchronisiere...",
849
+ "committing": "Committe...",
850
+ "sync_error": "Sync fehlgeschlagen",
851
+ "sync_now": "Jetzt synchronisieren",
852
+ "not_installed": "Git nicht installiert"
853
+ },
854
+ "history": {
855
+ "tab_label": "History",
856
+ "title": "Commit history of {filename}",
857
+ "export_btn": "Export",
858
+ "view_snapshot": "View Snapshot",
859
+ "compare_with_current": "Compare with Current",
860
+ "compare_with_prev": "Compare with Previous",
861
+ "back_to_list": "← Back to History",
862
+ "blame_toggle": "Show Author Tracking",
863
+ "blame_not_supported_visual": "Blame is only available in Source Mode. Press ⌘/ to switch.",
864
+ "blame_uncommitted": "uncommitted",
865
+ "loading": "Loading…",
866
+ "showing_last": "Showing the last {count} commits",
867
+ "renamed_from": "↪ from {oldPath}",
868
+ "empty": {
869
+ "no_git": "This knowledge base is not linked to Git",
870
+ "no_git_hint": "History requires Git sync support",
871
+ "no_git_action": "Link a Git repository",
872
+ "no_commits": "This file has no commit history yet",
873
+ "no_commits_hint": "Save and sync to Git to view history",
874
+ "no_commits_action": "Save and commit now",
875
+ "error": "Failed to load Git history",
876
+ "error_hint": "Please check repository status",
877
+ "error_retry": "Retry"
878
+ },
879
+ "snapshot": {
880
+ "label": "Snapshot @ {hash}",
881
+ "notice": "This is a historical snapshot (read-only)",
882
+ "copy": "Copy snapshot",
883
+ "compare": "Compare with Current",
884
+ "restore": "Restore this version",
885
+ "confirm_restore": "Restoring will replace the editor content with this snapshot. After saving, a new commit will be created. Continue?"
886
+ },
887
+ "dirty_confirm": "The current document has unsaved changes. Continue anyway?",
888
+ "continue_anyway": "Continue",
889
+ "save_first": "Save first",
890
+ "cancel": "Cancel",
891
+ "merge_blocked": "Repository is in the middle of a merge. Resolve conflicts first."
892
+ },
893
+ "image_ctx": {
894
+ "__mt": true,
895
+ "copy_url": "Copy URL",
896
+ "replace": "Replace Image",
897
+ "edit_alt": "Edit Alt Text",
898
+ "resize": "Resize",
899
+ "delete": "Delete Image",
900
+ "alt_label": "Alt Text",
901
+ "alt_placeholder": "Describe the image...",
902
+ "alt_hint": "Improves accessibility and SEO",
903
+ "save_alt": "Save"
904
+ },
905
+ "image_dialog": {
906
+ "title": "Bild einfügen",
907
+ "url_tab": "URL",
908
+ "file_tab": "Lokale Datei",
909
+ "url_placeholder": "https://beispiel.de/bild.png",
910
+ "alt_placeholder": "Bildbeschreibung (optional)",
911
+ "select_file": "Bild auswählen...",
912
+ "no_file_selected": "Keine Datei ausgewählt",
913
+ "insert": "Einfügen",
914
+ "cancel": "Abbrechen"
915
+ },
916
+ "image_gen": {
917
+ "title": "KI-Bildgenerierung",
918
+ "step1_title": "Bildmodus",
919
+ "step2_title": "Bilder generieren",
920
+ "step3_title": "In Artikel einfügen",
921
+ "generating_prompts": "Generiere Prompts...",
922
+ "content_too_short": "Der Artikelinhalt ist zu kurz für die Bildgenerierung.",
923
+ "style_label": "Stil",
924
+ "count_label": "Anzahl",
925
+ "style_auto": "Automatisch",
926
+ "style_photo": "Foto",
927
+ "style_illustration": "Illustration",
928
+ "style_flat": "Flach",
929
+ "style_ink": "Tuschmalerei",
930
+ "style_watercolor": "Aquarell",
931
+ "style_isometric": "Isometrisch",
932
+ "style_infographic": "Infografik",
933
+ "style_editorial": "Redaktionell",
934
+ "style_cartoon": "Cartoon",
935
+ "style_render": "3D-Rendering",
936
+ "style_sketch": "Skizze",
937
+ "style_blueprint": "Bauplan",
938
+ "style_clay": "Tonmodell",
939
+ "style_wireframe": "Wireframe",
940
+ "style_exploded": "Explosionsansicht",
941
+ "style_section": "Querschnitt",
942
+ "style_cad": "CAD-Zeichnung",
943
+ "style_prototype": "Prototyp",
944
+ "style_anime": "Anime",
945
+ "style_comic": "Comic",
946
+ "style_cinematic": "Filmisch",
947
+ "style_pixel": "Pixel Art",
948
+ "style_noir": "Film Noir",
949
+ "style_manga": "Manga",
950
+ "style_realistic": "Realistisch",
951
+ "style_studio": "Studio",
952
+ "style_lifestyle": "Lifestyle",
953
+ "style_flatlay": "Flat Lay",
954
+ "style_macro": "Makro",
955
+ "style_minimalist": "Minimalistisch",
956
+ "style_packaging": "Verpackung",
957
+ "style_outdoor": "Outdoor",
958
+ "style_mood": "Stimmung",
959
+ "style_abstract": "Abstrakt",
960
+ "style_texture": "Textur",
961
+ "style_gradient": "Farbverlauf",
962
+ "style_collage": "Collage",
963
+ "style_vintage": "Vintage",
964
+ "style_botanical": "Botanisch",
965
+ "style_geometric": "Geometrisch",
966
+ "style_ethereal": "Ätherisch",
967
+ "style_brutalist": "Brutalistisch",
968
+ "generate": "Generieren",
969
+ "next": "Weiter",
970
+ "back": "Zurück",
971
+ "insert_confirm": "Einfügen",
972
+ "insert_paragraph": "Nach dem entsprechenden Absatz einfügen (empfohlen)",
973
+ "insert_end": "Am Ende des Artikels einfügen",
974
+ "insert_replace": "Bilder im Artikel ersetzen",
975
+ "insert_clipboard": "Markdown in die Zwischenablage kopieren",
976
+ "selected": "{count} ausgewählt",
977
+ "completed": "Bilder generiert",
978
+ "step_description": "Artikelillustrationen generieren",
979
+ "mode_article": "Artikel",
980
+ "mode_design": "Design",
981
+ "mode_storyboard": "Storyboard",
982
+ "mode_product": "Produkt",
983
+ "mode_moodboard": "Moodboard",
984
+ "mode_portrait": "Porträt",
985
+ "style_portrait": "Porträt",
986
+ "style_headshot": "Porträtaufnahme",
987
+ "style_fullbody": "Ganzkörper",
988
+ "style_fashion": "Mode",
989
+ "style_street": "Straße",
990
+ "style_glamour": "Glamour",
991
+ "style_environmental": "Umgebung",
992
+ "style_candid": "Schnappschuss",
993
+ "style_group": "Gruppe",
994
+ "pre_defined_detected": "{count} vordefinierte(r) Prompt(s) im Dokument erkannt",
995
+ "use_predefined": "Vordefinierte Prompts verwenden"
996
+ },
997
+ "image_host": {
998
+ "title": "Bild-Hosting",
999
+ "provider": "Anbieter",
1000
+ "smms": "SM.MS",
1001
+ "imgur": "Imgur",
1002
+ "github": "GitHub-Repository",
1003
+ "custom": "Benutzerdefinierte API",
1004
+ "api_token": "API-Token",
1005
+ "api_token_placeholder": "API-Token eingeben",
1006
+ "custom_endpoint": "Upload-Endpunkt",
1007
+ "custom_endpoint_placeholder": "https://ihre-api.de/upload",
1008
+ "custom_headers": "Benutzerdefinierte Header (JSON)",
1009
+ "custom_url_template": "Ergebnis-URL-Vorlage",
1010
+ "custom_url_template_placeholder": "https://example.com/i/{id}",
1011
+ "custom_url_template_hint": "Platzhalter: {id}, {storageKey}, {filename}, {url}. Leer lassen, um URL-Felder automatisch zu erkennen.",
1012
+ "github_repo_url": "Repository-URL",
1013
+ "github_repo_url_placeholder": "https://github.com/benutzer/bilder",
1014
+ "github_branch": "Branch",
1015
+ "github_dir": "Bilderverzeichnis",
1016
+ "github_token": "Personal Access Token",
1017
+ "github_token_placeholder": "ghp_xxxxxxxxxxxx",
1018
+ "github_cdn": "URL-Format",
1019
+ "github_cdn_raw": "raw.githubusercontent.com",
1020
+ "github_cdn_jsdelivr": "jsDelivr CDN",
1021
+ "import_from_publish": "Vom Veröffentlichungsziel importieren",
1022
+ "auto_upload": "Bilder beim Einfügen/Ablegen automatisch hochladen",
1023
+ "test_upload": "Test-Upload",
1024
+ "test": "Testen",
1025
+ "testing": "Teste...",
1026
+ "success": "Upload erfolgreich!",
1027
+ "failed": "Upload fehlgeschlagen",
1028
+ "add_target": "Bild-Host hinzufügen",
1029
+ "target_name": "Name",
1030
+ "target_name_placeholder": "z. B. Mein Blog CDN",
1031
+ "settings_empty": "Keine Bild-Hosting-Ziele konfiguriert",
1032
+ "settings_hint": "Fügen Sie einen Bild-Hosting-Dienst hinzu, um den automatischen Upload zu aktivieren.",
1033
+ "default": "Standard",
1034
+ "set_default": "Als Standard festlegen",
1035
+ "gitlab": "GitLab-Repository",
1036
+ "git_custom": "Benutzerdefiniertes Git (Gitea/Forgejo)",
1037
+ "qiniu": "Qiniu Kodo",
1038
+ "aliyun_oss": "Aliyun OSS",
1039
+ "tencent_cos": "Tencent COS",
1040
+ "aws_s3": "AWS S3",
1041
+ "google_gcs": "Google Cloud Storage",
1042
+ "group_api": "API-Hosting",
1043
+ "group_git": "Git-Repository",
1044
+ "group_oss": "Objektspeicher",
1045
+ "gitlab_repo_url": "Repository-URL",
1046
+ "gitlab_branch": "Branch",
1047
+ "gitlab_dir": "Bilderverzeichnis",
1048
+ "gitlab_token": "Personal Access Token",
1049
+ "gitlab_token_placeholder": "glpat-xxxxxxxxxxxx",
1050
+ "git_custom_repo_url": "Repository-URL",
1051
+ "git_custom_branch": "Branch",
1052
+ "git_custom_dir": "Bilderverzeichnis",
1053
+ "git_custom_token": "Access Token",
1054
+ "git_custom_token_placeholder": "Token eingeben",
1055
+ "oss_access_key": "Access Key",
1056
+ "oss_access_key_placeholder": "Access Key ID eingeben",
1057
+ "oss_secret_key": "Secret Key",
1058
+ "oss_secret_key_placeholder": "Secret Key eingeben",
1059
+ "oss_bucket": "Bucket",
1060
+ "oss_bucket_placeholder": "z. B. meine-bilder-bucket",
1061
+ "oss_region": "Region",
1062
+ "oss_region_placeholder": "z. B. cn-east-1, us-east-1",
1063
+ "select_region": "Region auswählen",
1064
+ "oss_endpoint": "Benutzerdefinierter Endpunkt (optional)",
1065
+ "oss_endpoint_placeholder": "z. B. https://s3.custom.com",
1066
+ "oss_cdn_domain": "CDN-Domain (optional)",
1067
+ "oss_cdn_domain_placeholder": "z. B. https://cdn.beispiel.de",
1068
+ "oss_path_prefix": "Pfad-Präfix (optional)",
1069
+ "oss_path_prefix_placeholder": "z. B. bilder/blog/",
1070
+ "required": "Erforderlich",
1071
+ "qiniu_cdn_required": "Qiniu benötigt eine CDN-Domain, um zugängliche Bild-URLs zu generieren.",
1072
+ "picora": "Picora",
1073
+ "picora_one_click": "Ein-Klick-Import",
1074
+ "picora_import_title": "Aus Picora importieren",
1075
+ "picora_import_hint": "Öffnen Sie die Picora-Konsole und klicken Sie bei einem API-Key auf „In Moraya importieren\". Oder geben Sie den Key unten manuell ein.",
1076
+ "picora_open_console": "Picora-Konsole öffnen",
1077
+ "picora_manual_entry": "Ich habe bereits einen API-Key – manuell eingeben",
1078
+ "picora_verifying": "Verifizierung bei Picora…",
1079
+ "picora_verify_failed": "Verifizierung fehlgeschlagen. Bitte Token prüfen und erneut versuchen.",
1080
+ "picora_import_success": "Picora importiert ({email})",
1081
+ "picora_featured_badge": "Empfohlen",
1082
+ "picora_api_url": "Picora-Endpunkt",
1083
+ "picora_api_url_placeholder": "https://api.picora.me/v1/images",
1084
+ "picora_img_domain": "CDN-Domain",
1085
+ "picora_img_domain_placeholder": "https://media.picora.me",
1086
+ "picora_api_key": "API-Key",
1087
+ "picora_api_key_placeholder": "sk_live_...",
1088
+ "picora_user_email": "Picora-Konto",
1089
+ "picora_token_preview": "Token-Vorschau",
1090
+ "picora_confirm_import": "Import bestätigen",
1091
+ "picora_import_invalid": "Ungültiger Import-Link – bitte erneut aus der Picora-Konsole versuchen.",
1092
+ "picora_verify": "Verifizieren",
1093
+ "picora_hero_desc": "Unser SaaS-Bildhoster · Einrichtung per Klick in 5 Minuten",
1094
+ "other_providers": "Weitere Anbieter",
1095
+ "picora_api_key_keychain": "Im System-Schlüsselbund gespeichert · neuen Schlüssel eingeben zum Ersetzen",
1096
+ "picora_key_migrated_toast": "{count} Picora-API-Schlüssel in den System-Schlüsselbund migriert."
1097
+ },
1098
+ "image_menu": {
1099
+ "resize": "Größe ändern",
1100
+ "upload": "Zum Bild-Host hochladen",
1101
+ "edit_alt": "Beschreibung bearbeiten",
1102
+ "copy_url": "Bild-URL kopieren",
1103
+ "copy_image": "Bild kopieren",
1104
+ "open_in_browser": "Bild im Browser öffnen",
1105
+ "save_as": "Bild speichern unter...",
1106
+ "delete": "Bild löschen",
1107
+ "original_size": "Originalgröße"
1108
+ },
1109
+ "kb": {
1110
+ "index_all": "Alle Dokumente indexieren",
1111
+ "index_file": "Datei indexieren",
1112
+ "indexing": "Indizierung...",
1113
+ "index_complete": "Indexierung abgeschlossen",
1114
+ "search_placeholder": "Wissensdatenbank durchsuchen...",
1115
+ "no_index": "Kein Index gefunden. Klicken Sie mit der rechten Maustaste auf die Wissensdatenbank, um einen Index zu erstellen.",
1116
+ "stale_index": "Index ist veraltet. {count} Dateien wurden seit der letzten Indexierung geändert.",
1117
+ "dimensions": "Dimensionen",
1118
+ "auto_index": "Beim Speichern automatisch indexieren",
1119
+ "provider": "Embedding-Anbieter",
1120
+ "model": "Embedding-Modell",
1121
+ "delete_index": "Index löschen",
1122
+ "reindex_all": "Alles neu indexieren",
1123
+ "delete_confirm": "Möchten Sie den Index wirklich löschen?",
1124
+ "use_same_as_ai": "Gleiche Einstellungen wie AI-Chat verwenden",
1125
+ "online_model": "Online-Modell",
1126
+ "dimension_warning": "Maximum für dieses Modell: {max}. Verwendet: {actual}.",
1127
+ "status": {
1128
+ "indexed": "Indexiert ({chunks} Chunks, {files} Dateien)",
1129
+ "not_indexed": "Nicht indexiert",
1130
+ "stale": "{count} Dateien geändert"
1131
+ },
1132
+ "progress": {
1133
+ "scanning": "Dateien werden gescannt...",
1134
+ "chunking": "Dokumente werden aufgeteilt... ({current}/{total})",
1135
+ "embedding": "Embeddings werden generiert... ({current}/{total})",
1136
+ "indexing": "Index wird aufgebaut...",
1137
+ "done": "Fertig"
1138
+ },
1139
+ "provider_no_embedding": "Der aktuelle AI-Chat-Anbieter unterstützt kein Embedding. Bitte wählen Sie oben einen Embedding-Anbieter aus.",
1140
+ "local_models": "Lokale Modelle",
1141
+ "download_model": "Herunterladen",
1142
+ "delete_model": "Modell löschen",
1143
+ "select_local_model": "Heruntergeladenes Modell auswählen",
1144
+ "no_local_models": "Keine Modelle heruntergeladen. Laden Sie unten eines herunter.",
1145
+ "loading": "Loading knowledge base...",
1146
+ "empty": "No knowledge base found.",
1147
+ "create_in_picora": "Create a KB in Picora",
1148
+ "select_note": "Select a note to edit",
1149
+ "untitled": "Untitled"
1150
+ },
1151
+ "kb_sync": {
1152
+ "card": {
1153
+ "bind": "☁ Picora Sync",
1154
+ "settings": "☁ Bound · Settings"
1155
+ },
1156
+ "bind_dialog": {
1157
+ "title": "Bind Picora Sync — {name}",
1158
+ "step": "Step {current} / {total}",
1159
+ "step1_title": "Select Picora account",
1160
+ "step2_title": "Link or create cloud KB",
1161
+ "step3_title": "Sync strategy",
1162
+ "step4_title": "Preview first sync (dry-run)",
1163
+ "no_picora": "No Picora accounts found. Please add one in Settings → Hosting first.",
1164
+ "loading_kbs": "Loading cloud KBs…",
1165
+ "create_new": "Create new cloud KB",
1166
+ "link_existing": "Link to existing cloud KB",
1167
+ "kb_name": "Name",
1168
+ "kb_slug": "Slug (URL-friendly ID)",
1169
+ "select_kb": "Select a cloud KB…",
1170
+ "back": "← Back",
1171
+ "next": "Next →",
1172
+ "start_sync": "Start Sync ✓",
1173
+ "binding": "Binding…",
1174
+ "previewing": "Scanning local files…",
1175
+ "will_upload": "↑ Upload to cloud ({n} items)",
1176
+ "will_download": "↓ Download to local ({n} items)",
1177
+ "will_delete": "⊘ Delete ({n} items)",
1178
+ "skipped": "⚠ Skipped — exceeds size limit ({n} items)",
1179
+ "first_bind_hint": "No conflicts detected. All local files will be uploaded.",
1180
+ "confirm_label": "I understand — my local KB will be the initial authority",
1181
+ "link_existing_instead": "Stattdessen vorhandene KB verknüpfen"
1182
+ },
1183
+ "strategy": {
1184
+ "mode": "Trigger",
1185
+ "mode_manual": "Manual only",
1186
+ "mode_on_save": "On save (3s delay)",
1187
+ "mode_interval": "Scheduled",
1188
+ "mode_startup": "On startup & close",
1189
+ "interval60": "Every 1 minute",
1190
+ "interval300": "Every 5 minutes",
1191
+ "interval900": "Every 15 minutes",
1192
+ "interval1800": "Every 30 minutes",
1193
+ "scope": "Scope",
1194
+ "scope_md_only": "Markdown files only (.md / .markdown)",
1195
+ "scope_md_rules": "Markdown + rule files (MORAYA.md / CLAUDE.md / .mdx)",
1196
+ "scope_all": "All text files including hidden directories",
1197
+ "conflict": "Conflict policy",
1198
+ "conflict_prompt": "Prompt me (recommended)",
1199
+ "conflict_local": "Prefer local",
1200
+ "conflict_remote": "Prefer remote"
1201
+ },
1202
+ "settings": {
1203
+ "global_switch": "Enable KB auto-sync on this machine",
1204
+ "global_switch_hint": "When off, all scheduled syncs are paused. Manual \"Sync Now\" still works.",
1205
+ "last_sync": "Last sync",
1206
+ "never": "Never",
1207
+ "unbound": "Not bound to Picora",
1208
+ "sync_now": "Sync Now",
1209
+ "syncing": "Syncing…",
1210
+ "edit_strategy": "Edit strategy",
1211
+ "unbind": "Unbind",
1212
+ "unbind_title": "Unbind Picora Sync",
1213
+ "unbind_confirm": "Remove Picora sync binding for \"{name}\"? Cloud data is preserved.",
1214
+ "view_conflicts": "Conflicts",
1215
+ "bind": "Bind to Picora",
1216
+ "no_kbs": "No knowledge bases added yet."
1217
+ },
1218
+ "conflict": {
1219
+ "title": "Conflict Resolution — {name} ({n} items)",
1220
+ "no_conflicts": "No conflicts to resolve.",
1221
+ "local": "Local version",
1222
+ "remote": "Cloud version",
1223
+ "no_preview": "(no preview)",
1224
+ "keep_local": "Keep local (overwrite cloud)",
1225
+ "keep_remote": "Pull cloud (overwrite local)",
1226
+ "keep_both": "Keep both (cloud copy saved as .conflict.md)",
1227
+ "skip": "Skip",
1228
+ "apply_one": "Apply this",
1229
+ "apply_all": "Apply all selected ({n})"
1230
+ },
1231
+ "statusbar": {
1232
+ "tooltip": "KB Sync status — click for details",
1233
+ "error_label": "Synchronisierungsfehler:"
1234
+ },
1235
+ "sync_now": "Jetzt synchronisieren",
1236
+ "error": {
1237
+ "target_missing": "Picora-Konto nicht gefunden — bitte diese Wissensdatenbank neu verknüpfen oder das Konto in den Einstellungen wiederherstellen."
1238
+ },
1239
+ "trash": {
1240
+ "title": "Papierkorb",
1241
+ "toast_deleted": "Picora hat {count} Datei(en) gelöscht. In den Papierkorb verschoben.",
1242
+ "view": "Anzeigen",
1243
+ "restore_all": "Alle wiederherstellen",
1244
+ "restore_success": "{count} Datei(en) wiederhergestellt.",
1245
+ "restore_failed": "Einige Dateien konnten nicht wiederhergestellt werden.",
1246
+ "restore_conflict_title": "Datei existiert bereits",
1247
+ "restore_conflict_body": "{path} existiert bereits. Überschreiben?",
1248
+ "overwrite": "Überschreiben",
1249
+ "cancel": "Abbrechen",
1250
+ "filter_kb_all": "Alle KBs",
1251
+ "filter_time7d": "Letzte 7 Tage",
1252
+ "filter_time30d": "Letzte 30 Tage",
1253
+ "filter_time_all": "Gesamte Zeit",
1254
+ "empty_state": "Der Papierkorb ist leer.",
1255
+ "loading": "Laden…",
1256
+ "restore": "Wiederherstellen",
1257
+ "delete_forever": "Endgültig löschen",
1258
+ "delete_forever_confirm": "{path} endgültig löschen? Kann nicht rückgängig gemacht werden.",
1259
+ "purge_all": "Papierkorb leeren",
1260
+ "purge_all_confirm": "Alle Einträge älter als {days} Tage löschen?",
1261
+ "purge_result": "{files} Datei(en) bereinigt, {size} freigegeben.",
1262
+ "auto_purge_hint": "Einträge älter als 7 Tage werden automatisch gelöscht.",
1263
+ "entry_deleted_at": "Gelöscht am {date}",
1264
+ "kb_unknown": "Unbekannte KB"
1265
+ }
1266
+ },
1267
+ "knowledge_base": {
1268
+ "title": "Wissensbasis",
1269
+ "add": "Wissensbasis hinzufügen",
1270
+ "remove": "Entfernen",
1271
+ "rename": "Umbenennen",
1272
+ "manage": "Wissensbasen verwalten...",
1273
+ "empty": "Keine Wissensbasen konfiguriert",
1274
+ "empty_hint": "Fügen Sie einen Ordner als Wissensbasis zum schnellen Wechseln hinzu.",
1275
+ "delete_confirm": "\"{name}\" aus den Wissensbasen entfernen? Der Ordner selbst wird nicht gelöscht.",
1276
+ "switch_to": "Wissensbasis wechseln",
1277
+ "save_hint": "Dieser Ordner ist nicht in Ihren Wissensbasen.",
1278
+ "save_as_kb": "Als Wissensbasis speichern"
1279
+ },
1280
+ "link": {
1281
+ "open": "Link öffnen",
1282
+ "remove": "Link entfernen"
1283
+ },
1284
+ "mcp": {
1285
+ "title": "MCP servers",
1286
+ "tabs": {
1287
+ "servers": "Server",
1288
+ "publish": "Veröffentlichen",
1289
+ "sync": "Synchronisieren",
1290
+ "marketplace": "Marktplatz"
1291
+ },
1292
+ "ai_services": {
1293
+ "empty": "Keine KI-erstellten Dienste",
1294
+ "hint": "Die KI kann während des Chats MCP-Dienste erstellen. Bitten Sie sie, mit einer API zu interagieren!",
1295
+ "node_required": "Node.js 18+ erforderlich",
1296
+ "checking_node": "Prüfe Node.js...",
1297
+ "temp": "Temporär",
1298
+ "saved": "Gespeichert",
1299
+ "view_code": "Code",
1300
+ "tools": "{count} Tools",
1301
+ "service_created": "KI hat den Dienst \"{name}\" mit {count} Tools erstellt",
1302
+ "service_saved": "Dienst \"{name}\" gespeichert",
1303
+ "service_removed": "Dienst \"{name}\" entfernt",
1304
+ "launch_confirm_title": "KI-Dienst-Sicherheitswarnung",
1305
+ "launch_confirm_msg": "Die KI hat einen MCP-Dienst generiert, der automatisch generierten Code ausführen muss:\n Dienst: {name}\n Tools: {tools}\n\nDieser Code wird in einem lokalen Node.js-Prozess ausgeführt.\nBitte bestätigen Sie, dass Sie diesem KI-generierten Dienstcode vertrauen.",
1306
+ "launch_confirm_ok": "Ausführen",
1307
+ "launch_confirm_cancel": "Abbrechen"
1308
+ },
1309
+ "servers": {
1310
+ "empty": "Keine MCP-Server konfiguriert",
1311
+ "local_mcp": "Lokaler MCP",
1312
+ "add_server": "Server hinzufügen",
1313
+ "add_server_plus": "+ Server hinzufügen",
1314
+ "connected": "Verbunden",
1315
+ "disconnected": "Getrennt",
1316
+ "server_name": "Servername",
1317
+ "server_url": "Server-URL (z. B. http://localhost:3000/mcp)",
1318
+ "http": "HTTP",
1319
+ "sse": "SSE (Server-Sent Events)",
1320
+ "stdio": "stdio (Lokaler Prozess)",
1321
+ "command": "Befehl",
1322
+ "command_placeholder": "Befehl (z. B. npx, node, python)",
1323
+ "args_placeholder": "Argumente (z. B. -y @modelcontextprotocol/server-filesystem /pfad)",
1324
+ "env_placeholder": "ENV_KEY=Wert (eine pro Zeile)",
1325
+ "presets": "Remote-MCP",
1326
+ "presets_hint": "Beliebte MCP-Server mit einem Klick hinzufügen",
1327
+ "preset_desc": {
1328
+ "filesystem": "Lokale Dateien lesen, durchsuchen und verwalten",
1329
+ "fetch": "Webseiten abrufen und in Markdown konvertieren",
1330
+ "git": "Git-Repositories lesen und durchsuchen",
1331
+ "memory": "Persistenter Wissensgraph für KI-Gedächtnis",
1332
+ "puppeteer": "Browser-Automatisierung und Web-Scraping",
1333
+ "sqlite": "SQLite-Datenbanken abfragen und verwalten",
1334
+ "slack": "Slack-Kanäle und Nachrichten lesen und durchsuchen",
1335
+ "google_maps": "Geokodierung, Routenplanung und Ortssuche",
1336
+ "sequential_thinking": "Schrittweises Denken und Problemlösung",
1337
+ "everything": "Windows-Dateisuche über Everything"
1338
+ },
1339
+ "preset_env_title": "Umgebungsvariablen",
1340
+ "preset_env_desc": {
1341
+ "slack_bot_token": "Slack Bot OAuth Token (xoxb-...)",
1342
+ "slack_team_id": "Slack Team-/Workspace-ID (optional)",
1343
+ "google_maps_api_key": "Google Maps API-Schlüssel"
1344
+ },
1345
+ "preset_add": "Hinzufügen & Verbinden",
1346
+ "form_mode": "Formular",
1347
+ "json_mode": "JSON",
1348
+ "json_placeholder": "JSON-Konfiguration einfügen, z. B.:\n{\n \"mcpServers\": {\n \"name\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \"@.../server-xxx\"]\n }\n }\n}",
1349
+ "json_no_config": "Keine gültige MCP-Server-Konfiguration gefunden",
1350
+ "json_parse_error": "Analysefehler",
1351
+ "launch_confirm_title": "Sicherheitswarnung",
1352
+ "launch_confirm_msg": "Externes Programm wird gestartet:\n Befehl: {command}\n Argumente: {args}\n\nDieser MCP-Server wird mit Ihren Benutzerberechtigungen ausgeführt und kann auf lokale Dateien und das Netzwerk zugreifen.\nBitte bestätigen Sie, dass dieser MCP-Server aus einer vertrauenswürdigen Quelle stammt.",
1353
+ "launch_confirm_ok": "Starten",
1354
+ "launch_confirm_cancel": "Abbrechen",
1355
+ "auto_approve": "MCP-Start automatisch genehmigen",
1356
+ "auto_approve_hint": "Sicherheitsbestätigung beim Verbinden von MCP-Servern und Starten KI-generierter Dienste überspringen. Nicht empfohlen für nicht vertrauenswürdige Quellen.",
1357
+ "error_name_required": "Servername ist erforderlich",
1358
+ "error_command_required": "Befehl ist erforderlich",
1359
+ "error_url_required": "URL ist erforderlich"
1360
+ },
1361
+ "publish": {
1362
+ "empty": "Keine Veröffentlichungsziele konfiguriert",
1363
+ "hint": "Verbinden Sie zuerst einen MCP-Server mit Veröffentlichungsfunktionen.",
1364
+ "button": "Veröffentlichen",
1365
+ "publishing": "Veröffentliche...",
1366
+ "published": "Veröffentlicht! {info}",
1367
+ "failed": "Fehlgeschlagen: {message}",
1368
+ "error": "Fehler: {message}"
1369
+ },
1370
+ "sync": {
1371
+ "empty": "Keine Synchronisierungskonfigurationen",
1372
+ "hint": "Verbinden Sie zuerst einen MCP-Server und fügen Sie dann eine Synchronisierungskonfiguration hinzu.",
1373
+ "sync_now": "Jetzt synchronisieren",
1374
+ "add_sync": "+ Synchronisierung hinzufügen",
1375
+ "name": "Konfigurationsname",
1376
+ "server": "MCP-Server",
1377
+ "remote_path": "Remote-Pfad",
1378
+ "local_path": "Lokaler Pfad",
1379
+ "direction": "Richtung",
1380
+ "push": "Push (lokal → remote)",
1381
+ "pull": "Pull (remote → lokal)",
1382
+ "bidirectional": "Bidirektional",
1383
+ "last_sync": "Letzte Synchronisierung: {time}",
1384
+ "syncing": "Synchronisiere...",
1385
+ "success": "Synchronisierung abgeschlossen",
1386
+ "error": "Synchronisierungsfehler: {message}"
1387
+ },
1388
+ "marketplace": {
1389
+ "title": "Marktplatz",
1390
+ "search": "MCP-Server suchen...",
1391
+ "source": "Quelle",
1392
+ "source_official": "Offiziell",
1393
+ "source_lobehub": "LobeHub",
1394
+ "source_smithery": "Smithery",
1395
+ "install": "Installieren",
1396
+ "install_and_connect": "Installieren & Verbinden",
1397
+ "installing": "Installiere...",
1398
+ "installed": "Installiert",
1399
+ "view_details": "Details",
1400
+ "load_more": "Mehr laden",
1401
+ "no_results": "Keine MCP-Server gefunden",
1402
+ "network_error": "Laden fehlgeschlagen, Netzwerk prüfen",
1403
+ "retry": "Erneut versuchen",
1404
+ "env_vars": "Umgebungsvariablen",
1405
+ "env_required": "(erforderlich)",
1406
+ "popularity": "Nutzungen",
1407
+ "installs": "Installationen / Nutzungen",
1408
+ "verified": "Verifiziert",
1409
+ "cancel": "Abbrechen"
1410
+ },
1411
+ "subtitle": "Connect to Model Context Protocol servers to give the AI agent tools and resources.",
1412
+ "settings_card_label": "MCP servers",
1413
+ "empty_state": {
1414
+ "title": "No MCP servers configured",
1415
+ "body": "Add a remote SSE or HTTP MCP server URL. Mobile builds intentionally do not spawn local processes — see the bridging guide below for how to expose a local MCP server (e.g. via Tailscale tailnet or an SSH tunnel) as a remote URL.",
1416
+ "cta": "Add server"
1417
+ },
1418
+ "list": {
1419
+ "add_button": "Add server",
1420
+ "status": {
1421
+ "connected": "Connected",
1422
+ "connecting": "Connecting…",
1423
+ "disconnected": "Disconnected",
1424
+ "error": "Error"
1425
+ },
1426
+ "tool_count": "{count} tools",
1427
+ "resource_count": "{count} resources",
1428
+ "last_connected": "Last connected {when}",
1429
+ "help_button": "How do I connect?"
1430
+ },
1431
+ "edit": {
1432
+ "title_new": "Add MCP server",
1433
+ "title_edit": "Edit MCP server",
1434
+ "name_label": "Name",
1435
+ "name_placeholder": "e.g. WeChat publisher",
1436
+ "transport_label": "Transport",
1437
+ "transport_sse": "SSE (Server-Sent Events)",
1438
+ "transport_http": "HTTP (Streamable)",
1439
+ "url_label": "URL",
1440
+ "url_placeholder_sse": "https://example.com/mcp/sse",
1441
+ "url_placeholder_http": "https://example.com/mcp",
1442
+ "headers_label": "HTTP headers (optional)",
1443
+ "headers_add": "Add header",
1444
+ "header_key_placeholder": "Authorization",
1445
+ "header_value_placeholder": "Bearer …",
1446
+ "enabled_label": "Enable on startup",
1447
+ "save_button": "Save",
1448
+ "cancel_button": "Cancel",
1449
+ "delete_button": "Delete server",
1450
+ "delete_confirm": "Remove this MCP server? Saved tools and any open connection will be cleared.",
1451
+ "validation": {
1452
+ "name_required": "Name is required.",
1453
+ "url_required": "URL is required.",
1454
+ "url_invalid": "URL must start with http:// or https://"
1455
+ }
1456
+ },
1457
+ "detail": {
1458
+ "title": "Server details",
1459
+ "reconnect_button": "Reconnect",
1460
+ "disconnect_button": "Disconnect",
1461
+ "edit_button": "Edit",
1462
+ "tools_heading": "Tools ({count})",
1463
+ "resources_heading": "Resources ({count})",
1464
+ "no_tools": "No tools exposed yet. Connect first.",
1465
+ "no_resources": "No resources exposed.",
1466
+ "error_heading": "Last error",
1467
+ "transport_label": "Transport: {transport}",
1468
+ "url_label": "URL: {url}"
1469
+ },
1470
+ "help": {
1471
+ "title": "How to bridge a local MCP server",
1472
+ "intro": "Mobile builds only speak to remote MCP servers over SSE or HTTP. Local stdio servers must be exposed via an external bridge — Moraya does not embed Tailscale, an SSH tunnel, or any other bridging tool.",
1473
+ "tailscale": {
1474
+ "heading": "Via your own LAN (e.g. Tailscale tailnet)",
1475
+ "body": "Run your stdio MCP server on a laptop with a public-from-your-device hostname, then add a server here with a URL like http://laptop-name.your-tailnet.ts.net:3030/sse. The hostname is whatever your VPN / LAN provides — Moraya does not detect it for you."
1476
+ },
1477
+ "tunnel": {
1478
+ "heading": "Via a remote tunnel (e.g. SSH or Termex)",
1479
+ "body": "Forward a remote server's MCP port to a URL you can reach from the phone, then paste that URL here. Same shape as a local LAN URL — Moraya treats every remote endpoint identically."
1480
+ },
1481
+ "security": {
1482
+ "heading": "Security",
1483
+ "body": "URLs and headers are stored locally on this device. Headers are sent on every request — use a short-lived token if you connect to anything outside your private network. Plain http:// URLs may require an NSAppTransportSecurity exception on iOS; HTTPS is recommended whenever possible."
1484
+ },
1485
+ "close_button": "Got it"
1486
+ },
1487
+ "errors": {
1488
+ "connect_failed": "Failed to connect to {name}: {message}",
1489
+ "tool_call_failed": "Tool call failed: {message}",
1490
+ "server_not_connected": "Server is not connected.",
1491
+ "tool_not_found": "Tool not found on any connected server."
1492
+ }
1493
+ },
1494
+ "media": {
1495
+ "__mt": true,
1496
+ "upload_title": "Media Uploads",
1497
+ "uploading": "Uploading",
1498
+ "upload_done": "Uploaded",
1499
+ "upload_error": "Upload failed",
1500
+ "compressed_from": "Compressed",
1501
+ "compress_auto": "Auto-compress images > 1MB",
1502
+ "size_limit_exceeded": "File exceeds size limit for your plan",
1503
+ "mime_not_allowed": "File type not supported",
1504
+ "quota_warn": "This note has over 10MB of media",
1505
+ "quota_hard": "Media quota exceeded (100MB per note)",
1506
+ "quota_title": "Media Usage",
1507
+ "paste_title": "Paste Media"
1508
+ },
1509
+ "memory": {
1510
+ "__mt": true,
1511
+ "title": "Long-Term Memory",
1512
+ "upgrade_required": "Long-term memory requires Personal plan or above.",
1513
+ "health_title": "Memory Health",
1514
+ "settings_title": "Memory Settings",
1515
+ "half_life_label": "Memory half-life",
1516
+ "half_life_never": "Never (no decay)",
1517
+ "days": "days",
1518
+ "export_import": "Export / Import",
1519
+ "memories_title": "Memories",
1520
+ "search_placeholder": "Search memories...",
1521
+ "filter_all": "All types",
1522
+ "kind_preference": "Preference",
1523
+ "kind_project": "Project",
1524
+ "kind_fact": "Fact",
1525
+ "no_memories": "No memories yet. Use /memorize in chat to add one.",
1526
+ "edit": "Edit",
1527
+ "delete": "Delete",
1528
+ "enable": "Enable",
1529
+ "disable": "Disable",
1530
+ "save": "Save",
1531
+ "cancel": "Cancel",
1532
+ "weight": "Weight",
1533
+ "danger_zone": "Danger Zone",
1534
+ "reset_all": "Reset all memories",
1535
+ "reset_confirm_instruction": "Type RESET to confirm deleting all memories. This cannot be undone.",
1536
+ "confirm_reset": "Delete all memories",
1537
+ "export_title": "Export Memories",
1538
+ "export_hint": "Download all your memories as a JSON file for backup or migration.",
1539
+ "export_btn": "Export memories",
1540
+ "export_invalid_format": "Invalid memory export format.",
1541
+ "import_title": "Import Memories",
1542
+ "import_hint": "Import memories from a previously exported JSON file.",
1543
+ "choose_file": "Choose file (.json)",
1544
+ "import_placeholder": "Or paste JSON here...",
1545
+ "import_btn": "Import",
1546
+ "import_success": "Memories imported successfully.",
1547
+ "memorize_ack": "Memory saved.",
1548
+ "forget_ack": "Memory forgotten.",
1549
+ "forget_not_found": "No matching memories found.",
1550
+ "private_mode_on": "Private mode on — this conversation will not be extracted.",
1551
+ "extract_queued": "{n} memory/memories pending your review.",
1552
+ "conflict_detected": "Conflict detected with existing memory.",
1553
+ "upgrade_memory": "Upgrade to Personal to unlock long-term memory."
1554
+ },
1555
+ "menu": {
1556
+ "file": "Datei",
1557
+ "edit": "Bearbeiten",
1558
+ "paragraph": "Absatz",
1559
+ "format": "Format",
1560
+ "view": "Ansicht",
1561
+ "window": "Fenster",
1562
+ "help": "Hilfe",
1563
+ "new": "Neu",
1564
+ "new_window": "Neues Fenster",
1565
+ "open": "Öffnen...",
1566
+ "save": "Speichern",
1567
+ "save_as": "Speichern unter...",
1568
+ "export": "Exportieren",
1569
+ "export_html": "HTML",
1570
+ "export_pdf": "PDF",
1571
+ "export_image": "Bild (PNG)",
1572
+ "export_doc": "Word (.doc)",
1573
+ "heading1": "Überschrift 1",
1574
+ "heading2": "Überschrift 2",
1575
+ "heading3": "Überschrift 3",
1576
+ "heading4": "Überschrift 4",
1577
+ "heading5": "Überschrift 5",
1578
+ "heading6": "Überschrift 6",
1579
+ "table": "Tabelle",
1580
+ "code_block": "Codeblock",
1581
+ "math_block": "Matheblock",
1582
+ "quote": "Zitat",
1583
+ "bullet_list": "Aufzählungsliste",
1584
+ "ordered_list": "Nummerierte Liste",
1585
+ "task_list": "Aufgabenliste",
1586
+ "horizontal_rule": "Horizontale Linie",
1587
+ "bold": "Fett",
1588
+ "italic": "Kursiv",
1589
+ "strikethrough": "Durchgestrichen",
1590
+ "code": "Code",
1591
+ "link": "Link",
1592
+ "image": "Bild",
1593
+ "visual_mode": "Visueller Modus",
1594
+ "source_mode": "Quellmodus",
1595
+ "split_mode": "Geteilter Modus",
1596
+ "toggle_sidebar": "Seitenleiste umschalten",
1597
+ "toggle_aipanel": "KI-Panel umschalten",
1598
+ "toggle_outline": "Gliederung umschalten",
1599
+ "zoom_in": "Vergrößern",
1600
+ "zoom_out": "Verkleinern",
1601
+ "actual_size": "Tatsächliche Größe",
1602
+ "find": "Suchen",
1603
+ "replace": "Ersetzen",
1604
+ "changelog": "Änderungsprotokoll",
1605
+ "privacy_policy": "Datenschutzrichtlinie",
1606
+ "official_website": "Offizielle Website",
1607
+ "about_moraya": "Über Moraya",
1608
+ "feedback": "Feedback",
1609
+ "settings": "Einstellungen...",
1610
+ "version_info": "Versionsinformationen",
1611
+ "workflow": "Workflow",
1612
+ "seo_optimization": "SEO-Optimierung",
1613
+ "ai_image_generation": "KI-Bildgenerierung",
1614
+ "publish": "Veröffentlichen",
1615
+ "mcp_tools": "MCP-Werkzeuge",
1616
+ "no_mcptools": "Keine MCP-Werkzeuge verbunden"
1617
+ },
1618
+ "mermaid": {
1619
+ "loading": "Diagramm wird geladen...",
1620
+ "error": "Diagramm-Darstellung fehlgeschlagen",
1621
+ "edit": "Bearbeiten",
1622
+ "preview": "Vorschau",
1623
+ "empty": "Leeres Diagramm"
1624
+ },
1625
+ "mfa": {
1626
+ "__mt": true,
1627
+ "title": "Multi-Factor Authentication",
1628
+ "description": "Configure MFA requirements for team members.",
1629
+ "policy": "MFA Policy",
1630
+ "allowed_types": "Allowed MFA Methods",
1631
+ "grace_period": "Grace Period",
1632
+ "grace_period_hint": "Hours new members have to enroll in MFA after joining.",
1633
+ "hours": "hours",
1634
+ "required_banner": "MFA is required. All members must enroll before accessing team resources.",
1635
+ "save": "Save MFA Settings",
1636
+ "saved_success": "MFA settings saved."
1637
+ },
1638
+ "migration": {
1639
+ "__mt": true,
1640
+ "title": "KB Migration",
1641
+ "subtitle": "Move your knowledge base to a different storage provider",
1642
+ "new_migration": "New Migration",
1643
+ "wizard_title": "New Migration Wizard",
1644
+ "kb_id": "KB ID",
1645
+ "kb_name": "KB Name",
1646
+ "provider": "Provider",
1647
+ "bucket": "Bucket",
1648
+ "prefix": "Prefix",
1649
+ "source": "Source",
1650
+ "target": "Target",
1651
+ "encryption_mode": "Encryption Mode",
1652
+ "dry_run_label": "Dry run (simulate only, no files copied)",
1653
+ "dry_run_badge": "Dry Run",
1654
+ "dry_run_start": "Start Dry Run",
1655
+ "start_migration": "Start Migration",
1656
+ "cancel": "Cancel",
1657
+ "files": "files",
1658
+ "errors": "Errors",
1659
+ "started": "Started",
1660
+ "rollback_deadline": "Rollback deadline",
1661
+ "rollback": "Rollback",
1662
+ "download_log": "Download Log",
1663
+ "history_title": "Migration History",
1664
+ "history_empty": "No migrations yet",
1665
+ "loading": "Loading...",
1666
+ "confirm_delete": "Delete this migration session?"
1667
+ },
1668
+ "mobile": {
1669
+ "__mt": true,
1670
+ "tab": {
1671
+ "nav_label": "Primary navigation",
1672
+ "edit": "Edit",
1673
+ "ai": "AI",
1674
+ "files": "Knowledge Base",
1675
+ "settings": "Settings"
1676
+ },
1677
+ "appbar": {
1678
+ "menu": "Open sidebar",
1679
+ "more": "More actions",
1680
+ "toggle_ai_pane": "Toggle AI pane",
1681
+ "untitled": "Untitled"
1682
+ },
1683
+ "overflow": {
1684
+ "mode_label": "Mode",
1685
+ "mode_visual": "Visual",
1686
+ "mode_source": "Source",
1687
+ "search": "Find & Replace",
1688
+ "outline": "Outline",
1689
+ "export": "Export",
1690
+ "share": "Share"
1691
+ },
1692
+ "format": {
1693
+ "bold": "Bold",
1694
+ "italic": "Italic",
1695
+ "heading": "Heading",
1696
+ "list": "List",
1697
+ "code": "Code",
1698
+ "link": "Link",
1699
+ "link_prompt": "Enter URL",
1700
+ "image": "Image"
1701
+ },
1702
+ "ai": {
1703
+ "title": "AI",
1704
+ "placeholder": "Ask anything or describe what you want to write…",
1705
+ "send": "Send",
1706
+ "voice": "Voice",
1707
+ "model": "Model",
1708
+ "empty_state": "Your AI conversations will appear here.",
1709
+ "thinking": "Thinking…",
1710
+ "clear": "Clear conversation",
1711
+ "clear_confirm": "Clear all messages?",
1712
+ "cleared": "Unterhaltung gelöscht",
1713
+ "clear_undone": "Nachrichten wiederhergestellt",
1714
+ "stub_response": "Hi! I'm a placeholder response. The real AI provider will be wired up in v0.68.",
1715
+ "not_configured_title": "AI is not configured yet",
1716
+ "not_configured_text": "Add an API key or pick a local model in Settings → AI to start chatting.",
1717
+ "not_configured": "AI is not configured. Open Settings to set up an AI model?",
1718
+ "configure_now": "Set up",
1719
+ "stop": "Stop",
1720
+ "error_prefix": "Error",
1721
+ "pick_model": "Switch AI model",
1722
+ "no_providers": "No AI providers configured yet. Tap “Set up” to add one.",
1723
+ "conversations": "Conversations",
1724
+ "new_chat": "New chat",
1725
+ "no_conversations": "No conversations yet. Tap “New chat” to start.",
1726
+ "no_matches": "No conversations match your search.",
1727
+ "search_placeholder": "Search conversations…",
1728
+ "attach_image": "Attach image",
1729
+ "remove_attachment": "Remove attachment",
1730
+ "attached_image": "Attached image",
1731
+ "compressing": "Compressing…",
1732
+ "copy": "Copy",
1733
+ "sync_syncing": "Syncing with Picora…",
1734
+ "sync_idle": "Synced with Picora",
1735
+ "sync_offline": "Offline (will retry)",
1736
+ "sync_error": "Sync error — check connection",
1737
+ "sync_disabled": "Sync disabled",
1738
+ "mention_title": "Mention a note",
1739
+ "mention_search": "Search your notes…",
1740
+ "no_notes": "No notes yet — open one from the Files tab.",
1741
+ "insert_action": "Insert",
1742
+ "insert_title": "Insert into note",
1743
+ "insert_append": "Append to current note",
1744
+ "insert_append_sub": "Add this AI reply to the doc you have open in the Edit tab.",
1745
+ "insert_new": "Create new note",
1746
+ "insert_new_sub": "Make a new doc from this AI reply and open it.",
1747
+ "insert_no_active": "No document is open in the Edit tab.",
1748
+ "insert_failed": "Could not write the note — check storage permissions.",
1749
+ "insert_append_ok": "Appended to current note.",
1750
+ "insert_new_ok": "New note created.",
1751
+ "export": "Export / Share",
1752
+ "export_failed": "Could not export this conversation.",
1753
+ "export_ok": "Conversation exported.",
1754
+ "rag_used": "Referenced {n} past message(s)",
1755
+ "rag_on_title": "History RAG enabled — past conversations may be used as context",
1756
+ "citations_title": "{n} reference(s)",
1757
+ "citations_empty": "No citations attached to this message.",
1758
+ "params_title": "Generation parameters",
1759
+ "params_hint": "Override AI generation settings for this conversation only. Leave blank to use the provider default.",
1760
+ "params_save": "Save",
1761
+ "params_reset": "Reset to defaults",
1762
+ "param_temperature": "Temperature",
1763
+ "param_temperature_sub": "0 = deterministic · 1 = balanced · 2 = creative",
1764
+ "param_max_tokens": "Max output tokens",
1765
+ "param_max_tokens_sub": "Hard cap on the model's reply length",
1766
+ "param_top_p": "Top-P",
1767
+ "param_top_p_sub": "Nucleus sampling threshold (0–1)",
1768
+ "param_stop": "Stop sequences",
1769
+ "param_stop_sub": "Model halts when about to emit any of these. Comma-separated; use \\n for newline.",
1770
+ "param_stop_placeholder": "\\n\\n###, END",
1771
+ "presets_label": "Presets",
1772
+ "preset_save_as": "Save current as preset",
1773
+ "preset_save_prompt": "Name this preset:",
1774
+ "preset_delete_confirm": "Delete preset \"{name}\"?",
1775
+ "preset_delete_aria": "Delete preset",
1776
+ "preset_deleted": "Voreinstellung „{name}\" gelöscht",
1777
+ "preset_restored": "Voreinstellung wiederhergestellt",
1778
+ "preset_picker_title": "Pick a preset",
1779
+ "preset_picker_hint": "Switch tone for this conversation. For fine-tuning, use the ⚙ gear.",
1780
+ "preset_picker_custom_note": "Currently using custom values — open ⚙ to view or save them as a preset.",
1781
+ "preset_custom_label": "Custom",
1782
+ "retry_title": "Retry this reply",
1783
+ "retry_action": "Retry",
1784
+ "retry_as_is": "Retry with current params",
1785
+ "retry_with_preset": "Or try a different preset",
1786
+ "retry_done": "Reply regenerating",
1787
+ "retry_undone": "Original reply restored",
1788
+ "undo": "Undo",
1789
+ "presets": {
1790
+ "default": {
1791
+ "label": "Default"
1792
+ },
1793
+ "precise": {
1794
+ "label": "Precise"
1795
+ },
1796
+ "balanced": {
1797
+ "label": "Balanced"
1798
+ },
1799
+ "creative": {
1800
+ "label": "Creative"
1801
+ }
1802
+ },
1803
+ "default": "Default",
1804
+ "quick_actions_header": "Start with",
1805
+ "workflows_header": "Workflows",
1806
+ "wf_steps": "steps",
1807
+ "wf": {
1808
+ "summarize-then-translate": {
1809
+ "name": "Summarize → Translate",
1810
+ "desc": "TL;DR the input, then translate the summary."
1811
+ },
1812
+ "translate-then-polish": {
1813
+ "name": "Translate → Polish",
1814
+ "desc": "Translate input, then smooth the translation."
1815
+ },
1816
+ "step": {
1817
+ "summarize": "Summarizing",
1818
+ "translate": "Translating",
1819
+ "polish": "Polishing",
1820
+ "tone": "Tone",
1821
+ "length": "Length",
1822
+ "article": "Writing article",
1823
+ "cover": "Cover image",
1824
+ "target_lang": "Target language",
1825
+ "dictate": "Dictation",
1826
+ "structurize": "Structuring"
1827
+ },
1828
+ "write-article": {
1829
+ "name": "Write article + cover",
1830
+ "desc": "Topic → tone/length → article → AI cover",
1831
+ "ask_tone": "What tone should the article take?",
1832
+ "ask_length": "How long should it be?",
1833
+ "cover_hint": "Generating a cover image…"
1834
+ },
1835
+ "translate": {
1836
+ "name": "Translate",
1837
+ "desc": "Translate text into a target language",
1838
+ "ask_lang": "Translate into which language?"
1839
+ },
1840
+ "voice-transcribe": {
1841
+ "name": "Voice → note",
1842
+ "desc": "Dictate, then structure into a note",
1843
+ "hint": "Tap done when you finish speaking."
1844
+ },
1845
+ "tone": {
1846
+ "general": "General",
1847
+ "marketing": "Marketing",
1848
+ "technical": "Technical",
1849
+ "story": "Story"
1850
+ },
1851
+ "length": {
1852
+ "short": "Short (~500)",
1853
+ "medium": "Medium (~1500)",
1854
+ "long": "Long (~3000)"
1855
+ },
1856
+ "lang": {
1857
+ "en": "English",
1858
+ "zh": "Chinese",
1859
+ "ja": "Japanese",
1860
+ "ko": "Korean"
1861
+ },
1862
+ "cancel": "Cancel",
1863
+ "listening": "Listening…",
1864
+ "stt_done": "Done",
1865
+ "generating_cover": "Generating cover…",
1866
+ "cover_failed": "Cover generation failed",
1867
+ "skip_cover": "Skip cover",
1868
+ "regenerate": "Regenerate",
1869
+ "insert_with_cover": "Insert article + cover",
1870
+ "no_image_provider": "No image provider — set one up in Settings → Image generation."
1871
+ },
1872
+ "tpl": {
1873
+ "screenshot-to-md": {
1874
+ "name": "Image → Markdown",
1875
+ "desc": "Convert a screenshot, photo, or chart to clean Markdown.",
1876
+ "input": "Add a caption or leave empty — the model uses your image."
1877
+ },
1878
+ "summarize-current": {
1879
+ "name": "Summarize note",
1880
+ "desc": "TL;DR + key terms of the doc open in the Edit tab.",
1881
+ "input": "Optional focus: “key claims only”, “as bullet list”…"
1882
+ },
1883
+ "continue-writing": {
1884
+ "name": "Continue writing",
1885
+ "desc": "Pick up where you left off in the current doc.",
1886
+ "input": "Optional steering: tone, length, next section…"
1887
+ },
1888
+ "translate-zh-en": {
1889
+ "name": "Translate ZH ↔ EN",
1890
+ "desc": "Auto-detects source language. Preserves Markdown.",
1891
+ "input": "Paste the text to translate."
1892
+ }
1893
+ },
1894
+ "rename": "Rename",
1895
+ "rename_prompt": "New title",
1896
+ "delete_confirm": "Delete “{title}”? This cannot be undone.",
1897
+ "conv_deleted": "Deleted “{title}”",
1898
+ "conv_restored": "Conversation restored",
1899
+ "usage_tooltip": "Prompt tokens ↑ Completion tokens ↓",
1900
+ "budget_warn_confirm": "You are nearing your monthly AI budget. Send anyway?",
1901
+ "budget_over_confirm": "You are OVER your monthly AI budget. Send anyway?",
1902
+ "bulk_import": "Import all",
1903
+ "bulk_export": "Export all",
1904
+ "import_ok": "Imported {n} conversation(s).",
1905
+ "import_empty": "No conversations in that file.",
1906
+ "import_failed": "Import failed: {err}",
1907
+ "compose": "Compose article",
1908
+ "commands_title": "Commands",
1909
+ "more_actions": "More actions",
1910
+ "commands_empty": "No matching commands.",
1911
+ "voice_dictate": "Voice input",
1912
+ "voice_stop": "Stop",
1913
+ "voice_read_aloud": "Read aloud",
1914
+ "voice_local_badge": "On-device",
1915
+ "voice_permission_denied": "Microphone or speech permission denied. Enable it in Settings to use voice.",
1916
+ "voice_start_failed": "Could not start voice input.",
1917
+ "voice_speak_failed": "Could not read this message aloud."
1918
+ },
1919
+ "files": {
1920
+ "title": "Knowledge Base",
1921
+ "kb": "Knowledge Bases",
1922
+ "tree": "All Notes",
1923
+ "recent": "Recent",
1924
+ "favorites": "Favorites",
1925
+ "open_local": "Open from device",
1926
+ "open_local_failed": "Could not open this file. Make sure it's a text or Markdown file.",
1927
+ "new": "New document",
1928
+ "no_recent": "No recently opened documents.",
1929
+ "no_favorites": "No favorites yet. Star a document from the editor to add it here.",
1930
+ "empty": "No notes yet. Tap “New document” or “Open from device” to start.",
1931
+ "loading": "Loading…",
1932
+ "new_kb": "New knowledge base",
1933
+ "kb_name_placeholder": "Knowledge base name",
1934
+ "create": "Create",
1935
+ "cancel": "Cancel",
1936
+ "kb_create_failed": "Could not create the knowledge base."
1937
+ },
1938
+ "media": {
1939
+ "title": "Cloud images",
1940
+ "search": "Search images",
1941
+ "loading": "Loading…",
1942
+ "empty": "No cloud images yet.",
1943
+ "insert": "Insert cloud image"
1944
+ }
1945
+ },
1946
+ "notifications": {
1947
+ "__mt": true,
1948
+ "title": "Push Notifications",
1949
+ "subtitle": "Receive alerts when your AI tasks finish or collaborators @ you.",
1950
+ "unsupported": "This browser does not support push notifications.",
1951
+ "permission_status": "Permission",
1952
+ "permission_denied": "Notification permission denied.",
1953
+ "denied_hint": "Open your browser settings to re-enable notifications.",
1954
+ "enable": "Enable",
1955
+ "disable": "Disable",
1956
+ "no_token": "Failed to obtain a device token.",
1957
+ "device_registered": "This device is registered:",
1958
+ "registered_devices": "Registered devices",
1959
+ "no_devices": "No devices registered yet.",
1960
+ "revoke": "Revoke",
1961
+ "revoke_confirm": "Revoke this device? It will stop receiving push notifications immediately.",
1962
+ "platform": {
1963
+ "web": "Web",
1964
+ "ios": "iOS",
1965
+ "android": "Android",
1966
+ "desktop": "Desktop",
1967
+ "unknown": "Unknown"
1968
+ },
1969
+ "registered_at": "Registered {date}",
1970
+ "last_seen": "Last seen {date}",
1971
+ "error_register": "Could not register this device.",
1972
+ "error_list": "Could not load device list."
1973
+ },
1974
+ "offline": {
1975
+ "__mt": true,
1976
+ "cache_enabled": "Offline cache enabled",
1977
+ "cache_disabled": "Offline cache disabled",
1978
+ "cache_size": "{size} cached",
1979
+ "cache_note_count": "{count} notes cached",
1980
+ "cache_expired": "Cache expired",
1981
+ "note_cached": "Note cached for offline",
1982
+ "note_evicted": "Note evicted from cache",
1983
+ "offline_banner": "You are offline. Showing cached content.",
1984
+ "cache_settings": "Offline Cache Settings",
1985
+ "max_notes": "Max cached notes"
1986
+ },
1987
+ "outline": {
1988
+ "empty": "No headings found",
1989
+ "title": "Outline",
1990
+ "expand": "Expand",
1991
+ "collapse": "Collapse"
1992
+ },
1993
+ "perf": {
1994
+ "__mt": true,
1995
+ "memory_warning": "High memory usage detected ({percent}%)",
1996
+ "memory_critical": "Critical memory usage ({percent}%)",
1997
+ "memory_trend_growing": "Memory growing",
1998
+ "memory_trend_stable": "Memory stable",
1999
+ "memory_trend_shrinking": "Memory shrinking",
2000
+ "vitals_score": "Performance score: {score}",
2001
+ "vitals_good": "Good",
2002
+ "vitals_needs_improvement": "Needs improvement",
2003
+ "vitals_poor": "Poor"
2004
+ },
2005
+ "permissions": {
2006
+ "__mt": true,
2007
+ "paste_title": "Allow Clipboard Access?",
2008
+ "paste_desc": "Moraya wants to read image data from your clipboard. This is used only when you paste an image.",
2009
+ "allow_once": "Allow Once",
2010
+ "allow_always": "Always Allow",
2011
+ "deny": "Deny",
2012
+ "granted": "Clipboard access granted",
2013
+ "denied": "Clipboard access denied",
2014
+ "revoke": "Revoke Permission"
2015
+ },
2016
+ "plugin_action": {
2017
+ "title": "Plugin ausführen",
2018
+ "run_action": "Ausführen",
2019
+ "invoking": "Wird ausgeführt...",
2020
+ "success": "Plugin angewendet",
2021
+ "no_changes": "Keine Änderungen",
2022
+ "no_plugins": "Keine laufenden Plugins"
2023
+ },
2024
+ "plugins": {
2025
+ "tabs": {
2026
+ "preset": "Integriert",
2027
+ "installed": "Installiert",
2028
+ "market": "Marktplatz"
2029
+ },
2030
+ "installed": {
2031
+ "empty": "Noch keine Plugins installiert."
2032
+ },
2033
+ "sandbox": {
2034
+ "label": "Sandbox-Stufe",
2035
+ "sandbox": "Sandbox (JS)",
2036
+ "local": "Lokal (kein Netzwerk)",
2037
+ "system": "System (Netzwerkzugriff)"
2038
+ },
2039
+ "permissions": {
2040
+ "label": "Berechtigungen"
2041
+ },
2042
+ "market": {
2043
+ "search": "Plugins suchen...",
2044
+ "refresh": "Aktualisieren",
2045
+ "cat_all": "Alle",
2046
+ "cached": "Zeige zwischengespeicherte Ergebnisse",
2047
+ "loading": "Marktplatz wird geladen...",
2048
+ "empty": "Keine Plugins gefunden",
2049
+ "install": "Installieren",
2050
+ "installed": "Installiert",
2051
+ "installing": "Installiere..."
2052
+ },
2053
+ "install": {
2054
+ "from_file": "Aus .zip installieren",
2055
+ "url_placeholder": "GitHub-Repository-URL (https://github.com/…)",
2056
+ "validate": "Importieren",
2057
+ "confirm_url": "Plugin von URL installieren?",
2058
+ "author": "Autor",
2059
+ "permissions": "Berechtigungen",
2060
+ "no_permissions": "Keine Berechtigungen",
2061
+ "fetching_release": "Versionsinformationen werden abgerufen...",
2062
+ "downloading": "Wird heruntergeladen..."
2063
+ },
2064
+ "verified": "Verifiziert",
2065
+ "enable": "Aktivieren",
2066
+ "disable": "Deaktivieren",
2067
+ "uninstall": "Deinstallieren",
2068
+ "changelog": "Änderungsprotokoll",
2069
+ "view_source": "Quelle",
2070
+ "blacklisted": "Gesperrt",
2071
+ "blacklist_warning": "Dieses Plugin wurde aufgrund eines Sicherheitsproblems gesperrt. Bitte deinstallieren Sie es.",
2072
+ "process_error": "Plugin-Prozess abgestürzt. Umschalten zum Neustart.",
2073
+ "error": {
2074
+ "platform_not_supported": "Kein Download für Ihre Plattform verfügbar."
2075
+ },
2076
+ "preset": {
2077
+ "initializing": "Wird geladen...",
2078
+ "download": "Herunterladen",
2079
+ "retry": "Wiederholen",
2080
+ "ready": "Aktiviert",
2081
+ "downloading": "Wird heruntergeladen...",
2082
+ "loading": "Wird geladen...",
2083
+ "error": "Fehler",
2084
+ "large_bundle": "Großes Paket (>500 KB) – der Download kann einen Moment dauern",
2085
+ "cancel": "Abbrechen",
2086
+ "delete": "Löschen"
2087
+ }
2088
+ },
2089
+ "publish": {
2090
+ "settings_empty": "Keine Veröffentlichungsziele konfiguriert",
2091
+ "settings_hint": "Fügen Sie ein GitHub-Repository oder einen benutzerdefinierten API-Endpunkt hinzu, um Ihre Artikel zu veröffentlichen.",
2092
+ "add_target": "Ziel hinzufügen",
2093
+ "edit_target": "Bearbeiten",
2094
+ "delete_target": "Löschen",
2095
+ "test_connection": "Verbindung testen",
2096
+ "github": "GitHub-Repository",
2097
+ "custom_api": "Benutzerdefinierte API",
2098
+ "target_name": "Name",
2099
+ "target_name_placeholder": "z. B. Mein Blog",
2100
+ "repo_url": "Repository-URL",
2101
+ "repo_url_placeholder": "https://github.com/benutzer/blog",
2102
+ "branch": "Branch",
2103
+ "articles_dir": "Artikelverzeichnis",
2104
+ "articles_dir_placeholder": "content/posts/",
2105
+ "images_dir": "Bilderverzeichnis",
2106
+ "images_dir_placeholder": "static/images/",
2107
+ "token": "Personal Access Token",
2108
+ "token_placeholder": "ghp_xxxxxxxxxxxx",
2109
+ "front_matter_template": "Front-Matter-Vorlage",
2110
+ "endpoint": "API-Endpunkt",
2111
+ "endpoint_placeholder": "https://api.beispiel.de/articles",
2112
+ "method": "HTTP-Methode",
2113
+ "headers": "Header (JSON)",
2114
+ "body_template": "Body-Vorlage",
2115
+ "template_presets": "Vorlagenvoreinstellungen",
2116
+ "preset_hugo": "Hugo",
2117
+ "preset_hexo": "Hexo",
2118
+ "preset_astro": "Astro",
2119
+ "preset_custom": "Benutzerdefiniert",
2120
+ "file_name_pattern": "Dateinamenmuster",
2121
+ "file_name_preset": "Namensvoreinstellung",
2122
+ "file_name_preview": "Vorschau",
2123
+ "preset_simple": "Einfach (Dateiname)",
2124
+ "preset_date_slug": "Datum + Slug",
2125
+ "preset_date_filename": "Datum + Dateiname",
2126
+ "preset_year_month": "Jahr/Monat/Slug",
2127
+ "file_name_variables": "Variablen: {{date}}, {{year}}, {{month}}, {{day}}, {{slug}}, {{filename}}, {{title}}",
2128
+ "rss_section": "RSS-Feed",
2129
+ "rss_enable": "RSS-Feed generieren",
2130
+ "rss_enable_hint": "feed.xml beim Veröffentlichen automatisch aktualisieren",
2131
+ "rss_feed_path": "Feed-Dateipfad",
2132
+ "rss_feed_path_placeholder": "feed.xml",
2133
+ "rss_site_url": "Website-URL",
2134
+ "rss_site_url_placeholder": "https://meinblog.de",
2135
+ "rss_feed_title": "Feed-Titel",
2136
+ "rss_feed_title_placeholder": "Mein Blog",
2137
+ "rss_feed_description": "Feed-Beschreibung",
2138
+ "rss_feed_description_placeholder": "Artikel über...",
2139
+ "rss_language": "Sprache",
2140
+ "rss_author_name": "Autor",
2141
+ "rss_author_name_placeholder": "Max Mustermann",
2142
+ "rss_max_items": "Maximale Einträge im Feed",
2143
+ "rss_include_full_content": "Vollständigen Artikelinhalt im Feed einschließen",
2144
+ "rss_feed_endpoint": "RSS-Feed-Endpunkt",
2145
+ "rss_feed_endpoint_placeholder": "https://api.beispiel.de/rss",
2146
+ "rss_update_failed": "RSS-Feed-Aktualisierung fehlgeschlagen",
2147
+ "progress_title": "Veröffentliche...",
2148
+ "progress_publishing": "Lade hoch...",
2149
+ "progress_rss": "Aktualisiere RSS...",
2150
+ "progress_done": "Fertig",
2151
+ "progress_failed": "Fehlgeschlagen",
2152
+ "enable_seo": "SEO-Optimierung",
2153
+ "enable_seohint": "Titel, Auszug, Tags und Meta-Beschreibung vor der Veröffentlichung generieren",
2154
+ "next_seo": "Weiter: SEO →",
2155
+ "back_to_targets": "Zurück",
2156
+ "seo_no_provider": "Kein KI-Anbieter konfiguriert. Bitte konfigurieren Sie einen KI-Anbieter in den Einstellungen."
2157
+ },
2158
+ "pwa": {
2159
+ "__mt": true,
2160
+ "install_prompt": "Install Moraya Web for a better experience.",
2161
+ "install": "Install",
2162
+ "dismiss": "Not now",
2163
+ "update_available": "A new version is available.",
2164
+ "refresh": "Refresh"
2165
+ },
2166
+ "quickopen": {
2167
+ "__mt": true,
2168
+ "title": "Quick Open",
2169
+ "placeholder": "Search notes...",
2170
+ "no_results": "No notes found",
2171
+ "hint_enter": "↵ Open",
2172
+ "hint_cmd_enter": "⌘↵ Open in new tab"
2173
+ },
2174
+ "rag": {
2175
+ "__mt": true,
2176
+ "title": "AI Knowledge Search (RAG)",
2177
+ "mode_label": "Search Mode",
2178
+ "mode_disabled": "Disabled",
2179
+ "mode_client": "Client-side (E2E compatible)",
2180
+ "mode_server": "Server-side (faster, KMS required)",
2181
+ "index_status": "Index Status",
2182
+ "indexed_notes": "Indexed notes",
2183
+ "rebuild_index": "Rebuild Full Index",
2184
+ "pause_rebuild": "Pause",
2185
+ "rebuilding": "Rebuilding index...",
2186
+ "search_settings": "Search Settings",
2187
+ "top_k_label": "Results (top-K)",
2188
+ "threshold_label": "Min. similarity",
2189
+ "sources_label": "Sources",
2190
+ "sources_count": "{n} note excerpts",
2191
+ "jump_to_source": "Jump to note →",
2192
+ "no_sources": "No sources",
2193
+ "server_mode_warning": "Server mode lets Moraya temporarily decrypt your notes for indexing. Requires Cloud KMS.",
2194
+ "model_version": "Model version",
2195
+ "upgrade_for_cross_kb": "Upgrade to Personal to search across all your knowledge bases."
2196
+ },
2197
+ "review": {
2198
+ "panel_title": "Überprüfungen",
2199
+ "tab_label": "Überprüfung",
2200
+ "no_reviews": "Noch keine Überprüfungen",
2201
+ "no_reviews_hint": "Text im Editor auswählen und ⌘⇧R verwenden, um eine Überprüfung hinzuzufügen.",
2202
+ "not_git_bound": "Kein Git-Repository verknüpft",
2203
+ "not_git_bound_hint": "Verknüpfen Sie die Wissensdatenbank mit einem Git-Repository für kollaborative Überprüfungen.",
2204
+ "bind_git_btn": "Git-Repository verknüpfen",
2205
+ "open_count": "offen",
2206
+ "resolved_count": "Gelöst",
2207
+ "add_review": "Überprüfung hinzufügen",
2208
+ "reply": "Antworten",
2209
+ "resolve": "Resolve",
2210
+ "wontfix": "Wird nicht behoben",
2211
+ "reanchor": "Neu verankern",
2212
+ "mark_resolved": "Als gelöst markieren",
2213
+ "resolved": "Gelöst",
2214
+ "wontfix_label": "Wird nicht behoben",
2215
+ "unanchored": "Position verloren",
2216
+ "relocated": "Position verschoben",
2217
+ "verified_prompt": "Das Dokument hat sich seit der letzten Überprüfung geändert. Als überprüft markieren?",
2218
+ "mark_verified": "Als überprüft markieren",
2219
+ "lock_self": "Sie bearbeiten diese Datei",
2220
+ "lock_other": "bearbeitet diese Datei",
2221
+ "lock_expiry": "Min. verbleibend",
2222
+ "view_readonly": "Nur-Lesen-Ansicht",
2223
+ "force_unlock": "Entsperren erzwingen",
2224
+ "select_text_first": "Bitte zuerst Text auswählen",
2225
+ "source_mode_limit_hint": "Überprüfungen sind nur im visuellen Modus verfügbar",
2226
+ "default_comment": "",
2227
+ "ai_improve": "AI Improve",
2228
+ "ai_summary": "AI Summary",
2229
+ "ai_review": "AI Review",
2230
+ "ai_respond": "AI Suggest",
2231
+ "ai_in_progress": "AI is analyzing the document…",
2232
+ "ai_cancel": "Cancel",
2233
+ "ai_no_results": "AI generated no review suggestions",
2234
+ "ai_invalid_filtered": "{count} review(s) had invalid format and were skipped",
2235
+ "ai_author_badge": "AI",
2236
+ "ai_hint_from_tool": "AI returned reviews via tool call",
2237
+ "ai_hint_from_json": "AI returned reviews via JSON fallback",
2238
+ "ai_hint_failed": "This model does not support AI Review. Switch to Claude / GPT-4 / Gemini.",
2239
+ "ai_disclaimer_title": "Enable AI Review — Data Use Notice",
2240
+ "ai_disclaimer_body": "AI Review will send the entire current document and all review comments to your selected AI provider:",
2241
+ "ai_disclaimer_body_details": "Reviews may include team members' names and internal discussion. Please confirm this knowledge base is suitable for cloud processing.",
2242
+ "ai_disclaimer_local_hint": "Want to keep everything local? Switch to an Ollama provider — all processing happens on this machine.",
2243
+ "ai_disclaimer_switch_local": "Switch to local provider",
2244
+ "ai_disclaimer_confirm": "I understand, enable AI Review",
2245
+ "ai_disclaimer_dont_ask": "Don't ask again for this provider",
2246
+ "dimension_logic": "Logic",
2247
+ "dimension_expression": "Expression",
2248
+ "dimension_fact": "Fact",
2249
+ "dimension_structure": "Structure",
2250
+ "ai_inflight_cancelled": "AI Review cancelled because the active file changed",
2251
+ "ai_merge_blocked": "Repository is in the middle of a merge. Resolve conflicts first.",
2252
+ "title": "Reviews",
2253
+ "no_open": "No open reviews.",
2254
+ "resolved_section": "Resolved",
2255
+ "add_comment": "Add a comment…",
2256
+ "send": "Send",
2257
+ "orphaned": "orphaned",
2258
+ "type_suggest": "Suggestion",
2259
+ "type_question": "Question",
2260
+ "type_approve": "Approved",
2261
+ "type_reject": "Rejected",
2262
+ "ai_review_unavailable": "AI Review requires Cloud KMS encryption mode.",
2263
+ "close": "Close"
2264
+ },
2265
+ "search": {
2266
+ "find_placeholder": "Find...",
2267
+ "replace_placeholder": "Replace with...",
2268
+ "no_results": "No results",
2269
+ "case_sensitive": "Groß-/Kleinschreibung",
2270
+ "replace": "Replace",
2271
+ "replace_all": "Replace All",
2272
+ "regex": "Regulären Ausdruck verwenden",
2273
+ "regex_error": "Ungültiger regulärer Ausdruck",
2274
+ "match_status": "{current} / {total}",
2275
+ "toggle_regex": "Toggle regular expression",
2276
+ "toggle_case": "Toggle case-sensitive",
2277
+ "prev": "Previous match",
2278
+ "next": "Next match",
2279
+ "open_replace": "Open replace",
2280
+ "close_replace": "Close replace",
2281
+ "close": "Close search",
2282
+ "invalid_regex": "Invalid regular expression"
2283
+ },
2284
+ "security": {
2285
+ "__mt": true,
2286
+ "title": "Security",
2287
+ "encryption_mode_label": "Encryption Mode",
2288
+ "mode_none": "None",
2289
+ "mode_e2e": "E2E Client Encryption",
2290
+ "mode_kms": "Cloud KMS",
2291
+ "setup_title": "Set Up E2E Encryption",
2292
+ "setup_subtitle": "Your notes will be encrypted before leaving your device. Moraya cannot read your notes.",
2293
+ "passphrase_label": "Passphrase",
2294
+ "passphrase_confirm_label": "Confirm Passphrase",
2295
+ "passphrase_strength_weak": "Too weak",
2296
+ "passphrase_strength_fair": "Fair",
2297
+ "passphrase_strength_strong": "Strong",
2298
+ "passphrase_strength_very_strong": "Very strong",
2299
+ "passphrase_min_length": "Minimum 12 characters",
2300
+ "passphrase_mismatch": "Passphrases do not match",
2301
+ "passphrase_too_weak": "Passphrase is too weak. Use a longer, more complex phrase.",
2302
+ "warning_no_recovery": "⚠️ If you forget your passphrase and lose your recovery code, your data cannot be recovered. Moraya has no backup.",
2303
+ "recovery_code_title": "Your Recovery Code",
2304
+ "recovery_code_subtitle": "Write down these 12 words. You will need them if you forget your passphrase.",
2305
+ "recovery_confirm_instruction": "Enter word #{n} to confirm you wrote it down:",
2306
+ "recovery_confirm_correct": "Correct! Enter word #{n}:",
2307
+ "recovery_confirm_wrong": "Wrong word. Try again.",
2308
+ "recovery_complete": "Recovery code confirmed.",
2309
+ "i_have_written_down": "I have written down my recovery code",
2310
+ "unlock_title": "Unlock Your Notes",
2311
+ "unlock_subtitle": "Enter your passphrase to decrypt your notes.",
2312
+ "unlock_button": "Unlock",
2313
+ "unlock_failed": "Wrong passphrase. Please try again.",
2314
+ "unlock_remember_device": "Remember this device for 7 days",
2315
+ "migrate_title": "Upgrade to Cloud KMS",
2316
+ "migrate_subtitle": "Your notes will be re-encrypted using your cloud KMS. Moraya can use your KMS to assist with AI features.",
2317
+ "migrate_warning": "This is a one-way migration. You cannot revert to E2E mode without exporting and re-importing all data.",
2318
+ "migrate_confirm": "I understand and want to proceed",
2319
+ "migrate_progress": "Migrating {completed}/{total} notes...",
2320
+ "migrate_done": "Migration complete!",
2321
+ "migrate_failed": "Migration failed. Your original data is unchanged.",
2322
+ "kms_provider_label": "KMS Provider",
2323
+ "kms_key_arn_label": "Key ARN / Key ID",
2324
+ "kms_role_arn_label": "Role ARN (for AssumeRole)",
2325
+ "kms_verify": "Verify KMS Connection",
2326
+ "kms_verified": "KMS connection verified",
2327
+ "kms_verify_failed": "KMS connection failed",
2328
+ "back": "Back",
2329
+ "next": "Next",
2330
+ "save": "Save",
2331
+ "cancel": "Cancel",
2332
+ "setup_complete": "E2E encryption enabled",
2333
+ "deriving_key": "Deriving encryption key...",
2334
+ "encrypting": "Encrypting notes...",
2335
+ "current_mode": "Current mode: {mode}",
2336
+ "last_unlock": "Last unlocked: {time}",
2337
+ "use_recovery_code": "Use recovery code instead",
2338
+ "recovery_unlock_title": "Recover Access",
2339
+ "recovery_unlock_subtitle": "Enter your 12-word recovery code to regain access.",
2340
+ "recovery_code_input": "Recovery Code (12 words, space-separated)",
2341
+ "recovery_unlock_button": "Recover",
2342
+ "set_new_passphrase": "Set New Passphrase"
2343
+ },
2344
+ "seo": {
2345
+ "title": "SEO-Optimierung",
2346
+ "generating": "Artikel wird analysiert...",
2347
+ "titles": "Titelvorschläge",
2348
+ "custom_title": "Benutzerdefinierter Titel...",
2349
+ "excerpt": "Auszug",
2350
+ "tags": "Tags",
2351
+ "add_tag": "Tag hinzufügen...",
2352
+ "slug": "URL-Slug",
2353
+ "meta_description": "Meta-Beschreibung",
2354
+ "regenerate": "Neu generieren",
2355
+ "apply": "Anwenden",
2356
+ "retry": "Erneut versuchen",
2357
+ "content_too_short": "Der Artikelinhalt ist zu kurz für die SEO-Analyse.",
2358
+ "completed": "SEO optimiert",
2359
+ "step_description": "Titel, Auszug und Tags generieren"
2360
+ },
2361
+ "sessions": {
2362
+ "__mt": true,
2363
+ "title": "Active Sessions",
2364
+ "active_sessions": "Active Sessions",
2365
+ "anomaly_alerts": "Security Alerts",
2366
+ "current": "Current",
2367
+ "last_active": "Last active",
2368
+ "revoke": "Revoke",
2369
+ "revoking": "Revoking…",
2370
+ "confirm_revoke": "Revoke this session?",
2371
+ "yes": "Yes",
2372
+ "no": "Cancel",
2373
+ "dismiss": "Dismiss",
2374
+ "just_now": "Just now",
2375
+ "hours_ago": "h ago",
2376
+ "days_ago": "d ago"
2377
+ },
2378
+ "settings": {
2379
+ "title": "Settings",
2380
+ "tabs": {
2381
+ "general": "Allgemein",
2382
+ "editor": "Editor",
2383
+ "appearance": "Erscheinungsbild",
2384
+ "ai": "Chat",
2385
+ "image_ai": "Bildmodell",
2386
+ "mcp": "MCP",
2387
+ "image": "Bildhosting",
2388
+ "publish": "Veröffentlichen",
2389
+ "voice": "Sprachmodell",
2390
+ "knowledge_base": "Wissensdatenbank",
2391
+ "plugins": "Plugins",
2392
+ "kb_sync": "KB-Sync",
2393
+ "picora": "Picora",
2394
+ "export": "Exportieren",
2395
+ "shortcuts": "Tastenkürzel"
2396
+ },
2397
+ "groups": {
2398
+ "general": "Allgemein",
2399
+ "ai": "KI-Einstellungen",
2400
+ "extensions": "Erweiterungen",
2401
+ "knowledge_base": "Wissensdatenbank",
2402
+ "picora": "Picora"
2403
+ },
2404
+ "language": {
2405
+ "label": "Sprache",
2406
+ "system": "Systemeinstellung"
2407
+ },
2408
+ "theme": {
2409
+ "label": "Design",
2410
+ "system": "Systemeinstellung",
2411
+ "light": "Hell",
2412
+ "dark": "Dunkel"
2413
+ },
2414
+ "appearance": {
2415
+ "theme_section": "Design",
2416
+ "dark_mode_section": "Dunkelmodus",
2417
+ "font_section": "Schrift",
2418
+ "separate_dark_theme": "Separates Design für Dunkelmodus verwenden",
2419
+ "dark_theme": "Dunkelmodus-Design",
2420
+ "dark_mode_label": "Erscheinungsbild"
2421
+ },
2422
+ "font_size": {
2423
+ "label": "Schriftgröße"
2424
+ },
2425
+ "auto_save": {
2426
+ "label": "Automatisch speichern",
2427
+ "interval": "Automatisches Speicherintervall"
2428
+ },
2429
+ "remember_last_folder": "Zuletzt geöffneten Ordner merken",
2430
+ "show_cloud_insert_entries": "Cloud-Einfügeoptionen anzeigen",
2431
+ "show_cloud_insert_entries_desc": "Optionen 'Cloud-Bild/Audio/Video einfügen' zum Format-Menü und Kontextmenü hinzufügen.",
2432
+ "rules_history_count": "MORAYA.md Versionsverlauf",
2433
+ "rules_history_count_hint": "Anzahl der gespeicherten Verlaufsversionen pro Regeldatei (Standard: 10)",
2434
+ "editor": {
2435
+ "line_width": "Editor-Zeilenbreite",
2436
+ "tab_size": "Tabulatorgröße",
2437
+ "show_line_numbers": "Zeilennummern im Quellmodus anzeigen"
2438
+ },
2439
+ "tab_desc": {
2440
+ "image": "Cloud-Speicheranbieter für Bild-Uploads konfigurieren.",
2441
+ "publish": "Konfigurieren Sie Veröffentlichungsziele für Ihre Dokumente. Senden Sie Markdown-Dateien an GitHub Pages, generieren Sie RSS-Feeds oder posten Sie an benutzerdefinierte API-Endpunkte.",
2442
+ "export": "PDF-Export konfigurieren — Seitengröße, Ränder, Schriftarten und Inhaltsoptionen."
2443
+ },
2444
+ "version": "Moraya v{version}",
2445
+ "permissions": {
2446
+ "mcp_title": "MCP-Berechtigungen",
2447
+ "ai_title": "KI-Einstellungen",
2448
+ "ai_max_tokens": "Maximale Ausgabe-Token",
2449
+ "ai_max_tokens_hint": "Maximale Anzahl von Token, die die KI pro Antwort generieren kann. Höhere Werte ermöglichen längere Antworten und Tool-Aufrufe, kosten aber mehr.",
2450
+ "ai_tool_result_max_chars": "Max. Zeichen des Tool-Ergebnisses",
2451
+ "ai_tool_result_max_chars_hint": "Maximale Zeichenanzahl, die von jedem MCP-Tool-Ergebnis beibehalten wird. Größere Werte bewahren mehr Details, verbrauchen aber mehr Kontext.",
2452
+ "ai_max_tool_rounds": "Max. Tool-Aufruf-Runden",
2453
+ "ai_max_tool_rounds_hint": "Maximale Anzahl von Tool-Aufruf-Runden, die die KI in einem einzelnen Gesprächszug durchführen kann. Erhöhen Sie diesen Wert für komplexe mehrstufige Aufgaben."
2454
+ },
2455
+ "voice": {
2456
+ "providers": "Sprachanbieter",
2457
+ "add_provider": "Anbieter hinzufügen",
2458
+ "edit_provider": "Anbieter bearbeiten",
2459
+ "no_providers": "Keine Sprachanbieter konfiguriert.",
2460
+ "provider": "Anbieter",
2461
+ "api_key": "API-Schlüssel",
2462
+ "api_key_optional": "Optional für AWS (verwenden Sie stattdessen den Access Key)",
2463
+ "aws_access_key": "AWS Access Key ID",
2464
+ "aws_secret_key": "AWS Secret Access Key",
2465
+ "region": "Region",
2466
+ "model": "Modell",
2467
+ "model_placeholder": "Modellnamen eingeben",
2468
+ "endpoint_id_placeholder": "Inference-Endpoint-ID eingeben",
2469
+ "language": "Sprache",
2470
+ "lang_auto": "Automatisch erkennen",
2471
+ "lang_multi": "Mehrsprachig",
2472
+ "base_url": "Benutzerdefinierte WebSocket-URL",
2473
+ "test_connection": "Verbindung testen",
2474
+ "testing": "Teste...",
2475
+ "test_ok": "Verbunden",
2476
+ "test_failed": "Verbindung fehlgeschlagen",
2477
+ "set_active": "Als Standard festlegen",
2478
+ "active": "Standard",
2479
+ "custom": "Benutzerdefiniert",
2480
+ "storage": "Speicher",
2481
+ "recording_backup_dir": "Aufnahme-Backup",
2482
+ "recording_backup_hint": "Vollständige Aufnahmen nach jeder Sitzung als WAV-Dateien speichern.",
2483
+ "voice_sync_dir": "Stimmprofil-Synchronisierungsverzeichnis",
2484
+ "voice_sync_hint": "Stimmprofile über Cloud-Speicher synchronisieren (z. B. iCloud, Dropbox). Verwenden Sie die Schaltfläche Ändern, um einen Ordner auszuwählen — vorhandene Profile werden automatisch migriert.",
2485
+ "sync_default": "App-Daten (Standard)",
2486
+ "disabled": "Deaktiviert",
2487
+ "migrating_profiles": "Migriere...",
2488
+ "migration_failed": "Migration fehlgeschlagen",
2489
+ "profiles": "Stimmprofile",
2490
+ "no_profiles": "Noch keine Stimmprofile vorhanden. Sie werden nach Transkriptionssitzungen automatisch erstellt.",
2491
+ "naming": {
2492
+ "male": "Männlich {n}",
2493
+ "female": "Weiblich {n}",
2494
+ "bystander": "Zuschauer {n}",
2495
+ "speaker": "Sprecher {n}"
2496
+ },
2497
+ "providers_hint": "Sprachanbieter für Sprachtranskription konfigurieren."
2498
+ },
2499
+ "image_host": {
2500
+ "picora": {
2501
+ "moved_hint": "Picora-Einstellungen befinden sich jetzt im Picora-Tab.",
2502
+ "jump_to_tab": "Zum Picora-Tab springen"
2503
+ },
2504
+ "subtitle_suffix": "Picora-spezifische Optionen befinden sich im Picora-Tab."
2505
+ },
2506
+ "picora": {
2507
+ "account": {
2508
+ "title": "Picora-Konten",
2509
+ "add": "Picora-Konto hinzufügen",
2510
+ "add_first": "Loslegen",
2511
+ "empty": "Noch keine Picora-Konten. Verbinden Sie Ihr Konto, um Cloud-Medien einzufügen und KB-Sync zu nutzen.",
2512
+ "set_default": "Als Standard",
2513
+ "test": "Verbindung testen",
2514
+ "edit": "Bearbeiten",
2515
+ "remove": "Entfernen",
2516
+ "quota": "Kontingent",
2517
+ "unknown_email": "(keine E-Mail)",
2518
+ "no_endpoint": "(kein Endpoint)",
2519
+ "in_use": "Verwendet von {n}",
2520
+ "quota_loading": "Lade Kontingent…",
2521
+ "quota_unavailable": "Kontingent nicht verfügbar — ↻ zum Wiederholen",
2522
+ "data_point_na": "Datenpunkt nicht verfügbar",
2523
+ "needs_picora_v017": "Erfordert Picora v0.17.1+",
2524
+ "not_activated": "Picora-Plan noch nicht aktiviert.",
2525
+ "activate": "Plan aktivieren",
2526
+ "remove_confirm_title": "Picora-Konto entfernen",
2527
+ "remove_confirm_body": "Wird entfernt: {email}",
2528
+ "cascade_default": "Dies ist das Standard-Picora-Konto — ein neuer Standard wird automatisch gewählt.",
2529
+ "cascade_image_host": "Dies ist der Standard-Bilder-Host — Standard wird zurückgesetzt.",
2530
+ "cascade_kb_bindings": "{n} Wissensdatenbanken werden entkoppelt. Cloud-Daten bleiben auf Picora erhalten.",
2531
+ "cloud_data_preserved": "Nur lokale Konfiguration wird entfernt. Cloud-Daten auf Picora bleiben erhalten.",
2532
+ "confirm_remove": "Entfernen"
2533
+ },
2534
+ "edit_title": "Picora-Konto bearbeiten",
2535
+ "kb_sync": {
2536
+ "title": "KB-Synchronisierung",
2537
+ "open_manager": "KB-Sync-Einstellungen öffnen",
2538
+ "empty": "Noch keine Wissensdatenbanken.",
2539
+ "missing_target": "(Ziel fehlt)",
2540
+ "never": "Nie synchronisiert",
2541
+ "error": "Sync-Fehler",
2542
+ "unbound_label": "Nicht an Picora gebunden:",
2543
+ "bind_action": "An Standard binden"
2544
+ },
2545
+ "resources": {
2546
+ "title": "Cloud-Ressourcen-Browser",
2547
+ "tabs": {
2548
+ "image": "Bilder",
2549
+ "audio": "Audio",
2550
+ "video": "Videos"
2551
+ }
2552
+ },
2553
+ "advanced": {
2554
+ "title": "Erweitert",
2555
+ "img_domain": "Standard-Einfügedomäne",
2556
+ "img_domain_hint": "Wird als öffentliches URL-Präfix beim Einfügen von Picora-Bildern verwendet.",
2557
+ "rewrite_base64": "base64-Bilder in Dokumenten beim Upload zu Picora-CDN umschreiben",
2558
+ "sidebar_pin": "Picora-Verknüpfung in Hauptseitenleiste anzeigen",
2559
+ "debug": "Debug-Logging aktivieren"
2560
+ },
2561
+ "banner": "Neuer Picora-Tab. Alle Picora-Einstellungen wurden hierher verschoben; der Image-Hosting-Tab funktioniert weiterhin.",
2562
+ "banner_dismiss": "Verstanden",
2563
+ "welcome": {
2564
+ "title": "Willkommen bei Picora — ein Zuhause für Ihre Medien",
2565
+ "body": "Hosten Sie Bilder, Audio, Video und Markdown-Dokumente in Ihrem eigenen Picora-Konto. Synchronisieren Sie Wissensdatenbanken geräteübergreifend und fügen Sie Cloud-Assets per Klick aus dem Editor ein.",
2566
+ "one_click": "Ein-Klick-Import (empfohlen)",
2567
+ "manual": "Manuell hinzufügen",
2568
+ "or": "oder",
2569
+ "register": "Noch kein Konto? Picora registrieren"
2570
+ },
2571
+ "quota": {
2572
+ "images": "Bilder",
2573
+ "docs": "Dokumente",
2574
+ "audio": "Audio",
2575
+ "videos": "Videos",
2576
+ "kbs": "KBs"
2577
+ },
2578
+ "plan": {
2579
+ "none": "Inaktiv",
2580
+ "trial": "Trial",
2581
+ "pro": "Pro",
2582
+ "pro_plus": "Pro+"
2583
+ }
2584
+ },
2585
+ "export": {
2586
+ "paper_size": "Papierformat",
2587
+ "paper_a4": "A4",
2588
+ "paper_letter": "Letter",
2589
+ "paper_legal": "Legal",
2590
+ "paper_a3": "A3",
2591
+ "paper_a5": "A5",
2592
+ "orientation": "Ausrichtung",
2593
+ "orientation_portrait": "Hochformat",
2594
+ "orientation_landscape": "Querformat",
2595
+ "margins": "Ränder (mm)",
2596
+ "margins_top": "Oben",
2597
+ "margins_right": "Rechts",
2598
+ "margins_bottom": "Unten",
2599
+ "margins_left": "Links",
2600
+ "header_footer": "Kopf- und Fußzeile",
2601
+ "header_enabled": "Kopfzeile aktivieren",
2602
+ "footer_enabled": "Fußzeile aktivieren",
2603
+ "template_hint": "Platzhalter: {title} {page} {total} {date}",
2604
+ "typography": "Typografie",
2605
+ "font_family": "Schriftart",
2606
+ "font_family_placeholder": "Systemstandard",
2607
+ "font_size": "Schriftgröße",
2608
+ "content": "Inhalt",
2609
+ "enable_highlight": "Syntaxhervorhebung",
2610
+ "enable_math": "Mathematik (KaTeX)",
2611
+ "enable_mermaid": "Mermaid-Diagramme",
2612
+ "advanced": "Erweitert",
2613
+ "auto_fallback": "Bei Fehler automatisch in den Kompatibilitätsmodus wechseln",
2614
+ "auto_fallback_hint": "Wenn der native Druckpfad fehlschlägt, mit dem canvasbasierten Pfad erneut versuchen. Deaktivieren, um Fehler anzuzeigen und den Benutzer manuell erneut versuchen zu lassen."
2615
+ },
2616
+ "account": "Account",
2617
+ "devices": "Devices",
2618
+ "about": "About",
2619
+ "select_section": "Select a settings section from the left.",
2620
+ "ai": {
2621
+ "title": "AI",
2622
+ "cloud_providers": "Cloud Providers",
2623
+ "local_models": "On-device Models",
2624
+ "add": "Add",
2625
+ "edit": "Edit provider",
2626
+ "delete": "Delete",
2627
+ "delete_confirm": "Delete this provider configuration?",
2628
+ "provider_deleted": "Deleted “{label}”",
2629
+ "provider_restored": "Provider restored",
2630
+ "save": "Save",
2631
+ "test": "Test",
2632
+ "testing": "Testing…",
2633
+ "test_ok": "Connection OK",
2634
+ "test_auth_error": "Auth failed — check API key",
2635
+ "test_network_error": "Network error",
2636
+ "test_rate_limited": "Rate limited — try later",
2637
+ "test_unsupported": "Unsupported response",
2638
+ "test_not_configured": "Not configured",
2639
+ "provider": "Provider",
2640
+ "label": "Label",
2641
+ "api_key": "API Key",
2642
+ "api_key_hint": "Stored only on this device.",
2643
+ "base_url": "Base URL (optional)",
2644
+ "base_url_hint": "Custom OpenAI-compatible endpoint, e.g. Ollama: http://192.168.1.10:11434/v1",
2645
+ "default_model": "Default model",
2646
+ "active": "Active",
2647
+ "set_active": "Use",
2648
+ "status_ready": "Ready",
2649
+ "status_not_configured": "Not configured",
2650
+ "empty_cloud": "No cloud providers configured. Tap “Add” to set up OpenAI, Claude, Gemini, DeepSeek, or any OpenAI-compatible endpoint.",
2651
+ "cloud_hint": "Your API keys are stored locally and sent directly to the provider — Moraya never sees them.",
2652
+ "rag": {
2653
+ "title": "History Reference (RAG)",
2654
+ "enabled": "Reference past conversations",
2655
+ "topk": "Snippets per send",
2656
+ "hint": "When on, Moraya finds up to N relevant snippets from your past AI chats and includes them as context. Off by default — increases token usage. Keyword-based search (no embeddings yet)."
2657
+ },
2658
+ "local": {
2659
+ "free_space": "Device free space",
2660
+ "unknown": "Unknown",
2661
+ "estimate_hint": "Estimated from browser quota.",
2662
+ "native_probe_failed": "Could not read native device free space; showing browser estimate.",
2663
+ "browser_only_hint": "On-device models are available only inside the Moraya iOS / Android app.",
2664
+ "browser_only_footer": "Open this page inside the Moraya mobile app to download and run on-device models.",
2665
+ "mobile_only": "On-device models are only available in the Moraya iOS / Android app.",
2666
+ "download": "Download",
2667
+ "cancel": "Cancel",
2668
+ "use": "Use",
2669
+ "delete": "Delete",
2670
+ "delete_confirm": "Delete {name} from this device?",
2671
+ "delete_failed": "Delete failed: {err}",
2672
+ "download_failed": "Download failed: {err}",
2673
+ "now_active": "{name} is now your active AI model.",
2674
+ "installed": "Installed",
2675
+ "too_big": "Too large",
2676
+ "fit_warn_inline": "This download will use more than 70% of your free space.",
2677
+ "fit_warn": "This model ({size}) will use over 70% of your free space and may slow iOS. Continue?",
2678
+ "fit_block": "Not enough free space for this model ({size}).",
2679
+ "engine_pending_title": "Inference engine pending Xcode setup",
2680
+ "engine_pending_text": "Models can be downloaded today. To run them, link MLX-Swift via Xcode → File → Add Package Dependencies (https://github.com/ml-explore/mlx-swift + mlx-swift-examples), or run `ruby scripts/add-mlx-spm.rb` in moraya-mobile/. The plugin auto-detects the link and activates.",
2681
+ "wifi_only": "Wi-Fi only downloads",
2682
+ "on_wifi": "Connected via Wi-Fi.",
2683
+ "on_cellular_blocked": "On cellular — downloads paused. Toggle off to allow.",
2684
+ "on_cellular_ok": "On cellular — downloads allowed.",
2685
+ "offline": "No network connection.",
2686
+ "cellular_blocked": "Downloads are blocked on cellular. Connect to Wi-Fi or turn off “Wi-Fi only”.",
2687
+ "update": "Update",
2688
+ "update_confirm": "Update {name}? The current copy will be deleted and the latest version downloaded."
2689
+ },
2690
+ "custom_templates": "Custom AI Templates",
2691
+ "empty_templates": "No custom templates yet. Tap “Add” to create a reusable system prompt.",
2692
+ "templates_hint": "Your templates appear in the AI tab’s empty-state quick actions alongside the built-ins.",
2693
+ "custom_workflows": "Custom AI Workflows",
2694
+ "empty_workflows": "No custom workflows yet. Tap “Add” to chain multiple AI steps.",
2695
+ "workflows_hint": "Workflows run their steps sequentially, feeding each step’s output into the next.",
2696
+ "wf": {
2697
+ "add": "New workflow",
2698
+ "edit": "Edit workflow",
2699
+ "name_placeholder": "e.g. Translate then bullet-summarize",
2700
+ "desc_placeholder": "Shown under the tile in the AI tab",
2701
+ "step_label_placeholder": "Step label (e.g. “Translate”)",
2702
+ "step_system_placeholder": "System prompt for this step",
2703
+ "input_tpl_hint": "Use {prev} for the previous step's output and {input} for the user's first message.",
2704
+ "add_step": "Add step",
2705
+ "remove_step": "Remove step",
2706
+ "required_name": "Workflow needs a name.",
2707
+ "required_steps": "Workflow needs at least one step with a system prompt.",
2708
+ "delete_confirm": "Delete this workflow?",
2709
+ "deleted": "Deleted “{name}”",
2710
+ "restored": "Workflow restored"
2711
+ },
2712
+ "tpl": {
2713
+ "add": "New template",
2714
+ "edit": "Edit template",
2715
+ "icon": "Icon",
2716
+ "name": "Name",
2717
+ "name_placeholder": "e.g. Code reviewer",
2718
+ "desc": "Short description",
2719
+ "desc_placeholder": "Shown under the tile",
2720
+ "system_prompt": "System prompt",
2721
+ "system_prompt_placeholder": "Behavior guidance the model receives at the start of every conversation using this template.",
2722
+ "requires_image": "Open image picker on tap",
2723
+ "requires_doc": "Auto-mention the open doc",
2724
+ "auto_insert": "Auto-open “Insert into note” when finished",
2725
+ "save": "Save",
2726
+ "delete": "Delete",
2727
+ "delete_confirm": "Delete this template?",
2728
+ "deleted": "Deleted “{name}”",
2729
+ "restored": "Template restored",
2730
+ "required_fields": "Name and system prompt are required.",
2731
+ "import": "Import",
2732
+ "export": "Export",
2733
+ "import_merge_confirm": "Import {n} template(s) and append to your library?",
2734
+ "import_empty": "The file contains no templates.",
2735
+ "import_failed": "Import failed: {err}"
2736
+ },
2737
+ "usage": {
2738
+ "title": "AI Usage",
2739
+ "loading": "Reading conversations…",
2740
+ "empty": "No AI calls this month yet — usage shows up after your first reply.",
2741
+ "tokens": "Tokens",
2742
+ "conversations": "Conversations",
2743
+ "cost": "Cost",
2744
+ "by_model": "By model",
2745
+ "history": "Previous months"
2746
+ },
2747
+ "budget": {
2748
+ "title": "Monthly Budget",
2749
+ "edit": "Edit",
2750
+ "done": "Done",
2751
+ "no_limit": "No monthly limit set.",
2752
+ "usd_limit": "USD limit / month",
2753
+ "cny_limit": "CNY limit / month",
2754
+ "alert_threshold": "Warn at (0–1)",
2755
+ "hint": "Setting either currency to 0 disables that cap. Warn threshold 0 disables warnings."
2756
+ }
2757
+ },
2758
+ "mcp": "MCP servers",
2759
+ "image_gen": {
2760
+ "title": "Image generation",
2761
+ "providers": "Providers",
2762
+ "add": "Add",
2763
+ "edit": "Edit image provider",
2764
+ "delete": "Delete",
2765
+ "save": "Save",
2766
+ "provider": "Provider",
2767
+ "label": "Label",
2768
+ "api_key": "API Key",
2769
+ "api_key_hint": "Stored only on this device. BYO key — never sent to Moraya servers.",
2770
+ "base_url": "Base URL (optional)",
2771
+ "base_url_hint": "Override for OpenAI-compatible image endpoints (Together AI, Cloudflare AI Gateway, on-prem proxies).",
2772
+ "default_model": "Default model",
2773
+ "active": "Active",
2774
+ "set_active": "Use",
2775
+ "status_ready": "Ready",
2776
+ "status_no_key": "No API key",
2777
+ "empty": "No image providers configured. Tap “Add” to set up OpenAI DALL-E or Doubao Seedream.",
2778
+ "hint": "Image-gen providers power workflow `ai.image` nodes and the upcoming Compose Article flow. Configure at least one to enable cover-image generation.",
2779
+ "style": {
2780
+ "section": "Style presets",
2781
+ "add": "Add",
2782
+ "edit": "Edit style preset",
2783
+ "delete": "Delete",
2784
+ "save": "Save",
2785
+ "label": "Label",
2786
+ "label_placeholder": "e.g. Moody noir",
2787
+ "suffix": "Style suffix",
2788
+ "suffix_placeholder": "Appended to “Cover illustration for: <title>. ”",
2789
+ "suffix_hint": "Describe lighting, palette, mood, aspect ratio — anything the model should remember for this style.",
2790
+ "hint": "These presets apply when you tap one in the Compose Cover step. Built-in presets stay available even after you edit them.",
2791
+ "builtin": "Built-in",
2792
+ "builtin_note": "This is a built-in preset. Your changes save as an override and can be reset by deleting (built-ins cannot be removed)."
2793
+ }
2794
+ },
2795
+ "publish": {
2796
+ "title": "Publish targets",
2797
+ "section": "Targets",
2798
+ "add": "Add",
2799
+ "edit": "Edit publish target",
2800
+ "delete": "Delete",
2801
+ "save": "Save",
2802
+ "icon": "Icon",
2803
+ "label": "Label",
2804
+ "label_placeholder": "WeChat 公众号 (主号)",
2805
+ "mcp_tool": "MCP tool",
2806
+ "mcp_tool_hint": "Bare name (`publish`) or namespaced (`mcp.<server-id>.<tool>`). Configure the MCP server itself in Settings → MCP.",
2807
+ "arg_template": "Argument template (JSON)",
2808
+ "arg_template_hint": "Use {title} {body} {topic} {coverKey} {coverPrompt} placeholders. Strings are JSON-escaped before substitution.",
2809
+ "empty": "No publish targets configured. Tap “Add” to wire a target to an MCP tool.",
2810
+ "hint": "Each target points at one MCP tool — e.g. a WeChat 公众号 bridge, a Substack webhook, or your own remote MCP. Compose’s Send menu lists every target."
2811
+ },
2812
+ "voiceai": {
2813
+ "title": "Voice AI",
2814
+ "engine": "Voice engine",
2815
+ "engine_local": "Local (on-device)",
2816
+ "engine_local_desc": "Speech recognition and read-aloud run entirely on your device — no network, no API keys.",
2817
+ "recommended": "Recommended",
2818
+ "external_soon": "External cloud voice — coming soon.",
2819
+ "unavailable": "On-device voice isn't available here — it requires the iOS app.",
2820
+ "stt_section": "Speech input",
2821
+ "stt_locale": "Recognition language",
2822
+ "stt_locale_device": "Follow device",
2823
+ "tts_section": "Read aloud",
2824
+ "auto_speak": "Auto-read AI replies",
2825
+ "voice_label": "Voice",
2826
+ "voice_default": "System default",
2827
+ "enhanced": "Enhanced",
2828
+ "rate": "Speed",
2829
+ "test": "Test voice",
2830
+ "test_sample": "Hello, I'm Moraya's on-device voice assistant."
2831
+ }
2832
+ },
2833
+ "shortcuts": {
2834
+ "title": "Keyboard Shortcuts",
2835
+ "intro": "All keyboard shortcuts in Moraya. Entries marked 🔒 are managed by the native menu and will become user-configurable in a later version.",
2836
+ "ai_chat_behavior": {
2837
+ "title": "AI Chat — Enter Key Behavior",
2838
+ "intro": "Choose how the Enter key behaves in the AI chat input.",
2839
+ "sends_action": "sends message",
2840
+ "newline_action": "newline",
2841
+ "mod_enter_send": {
2842
+ "label": "Cmd/Ctrl + Eingabe sendet"
2843
+ },
2844
+ "enter_send": {
2845
+ "label": "Enter sends"
2846
+ },
2847
+ "default_badge": "Standard"
2848
+ },
2849
+ "categories": {
2850
+ "file": "File",
2851
+ "edit": "Edit",
2852
+ "paragraph": "Paragraph",
2853
+ "format": "Format",
2854
+ "view": "View",
2855
+ "ai_chat": "AI Chat",
2856
+ "workflow": "Workflow",
2857
+ "mcp": "MCP"
2858
+ },
2859
+ "actions": {
2860
+ "file": {
2861
+ "new": "New Document",
2862
+ "new_window": "New Window",
2863
+ "open": "Open File",
2864
+ "save": "Save",
2865
+ "save_as": "Save As",
2866
+ "export_html": "Export HTML",
2867
+ "export_pdf": "Als PDF exportieren",
2868
+ "export_image": "Als Bild exportieren",
2869
+ "export_doc": "Als Word exportieren"
2870
+ },
2871
+ "edit": {
2872
+ "undo": "Undo",
2873
+ "redo": "Redo",
2874
+ "find": "Find",
2875
+ "replace": "Replace"
2876
+ },
2877
+ "paragraph": {
2878
+ "h1": "Heading 1",
2879
+ "h2": "Heading 2",
2880
+ "h3": "Heading 3",
2881
+ "h4": "Heading 4",
2882
+ "h5": "Heading 5",
2883
+ "h6": "Heading 6",
2884
+ "code_block": "Code Block",
2885
+ "quote": "Block Quote"
2886
+ },
2887
+ "format": {
2888
+ "bold": "Bold",
2889
+ "italic": "Italic",
2890
+ "strike": "Strikethrough",
2891
+ "code": "Inline Code",
2892
+ "link": "Link",
2893
+ "insert_image": "Insert Image"
2894
+ },
2895
+ "view": {
2896
+ "toggle_mode": "Toggle Visual / Source",
2897
+ "toggle_split": "Toggle Split Mode",
2898
+ "toggle_sidebar": "Toggle Sidebar",
2899
+ "toggle_aipanel": "Toggle AI Panel",
2900
+ "toggle_outline": "Toggle Outline",
2901
+ "open_settings": "Open Settings",
2902
+ "zoom_in": "Zoom In",
2903
+ "zoom_out": "Zoom Out",
2904
+ "zoom_reset": "Reset Zoom"
2905
+ },
2906
+ "workflow": {
2907
+ "quick_open": "Quick Open",
2908
+ "command_palette": "Command Palette"
2909
+ },
2910
+ "ai_chat": {
2911
+ "send": "Send AI Message",
2912
+ "newline": "Insert Newline"
2913
+ }
2914
+ },
2915
+ "locked_hint": "Managed by the native menu — not customizable here yet",
2916
+ "locked_footnote": "🔒 indicates the shortcut is provided by the OS-native menu and is not customizable in this version.",
2917
+ "editor": {
2918
+ "prompt": "Beliebige Tastenkombination drücken… (Esc zum Abbrechen)",
2919
+ "needs_modifier": "Mindestens ein Modifizierer erforderlich (Cmd, Ctrl, Alt oder Shift)",
2920
+ "conflict": "Bereits von einem anderen Shortcut verwendet",
2921
+ "save": "Speichern",
2922
+ "cancel": "Abbrechen",
2923
+ "edit_hint": "Klicken, um neuen Shortcut aufzuzeichnen",
2924
+ "reset_to_default": "Auf Standard zurücksetzen",
2925
+ "customized": "Angepasst",
2926
+ "customized_short": "Eigen",
2927
+ "reset_conflict": "Standard kollidiert mit einem anderen angepassten Shortcut — bitte diesen zuerst ändern.",
2928
+ "sync_failed": "Systemmenü konnte nicht aktualisiert werden",
2929
+ "sync_failed_short": "Sync fehlgeschlagen",
2930
+ "unbound": "Nicht festgelegt",
2931
+ "reset_all": "Alle zurücksetzen",
2932
+ "reset_all_hint": "Alle Shortcuts auf Standardwerte zurücksetzen",
2933
+ "reset_all_confirm": "Alle {count} angepassten Shortcut(s) auf Standardwerte zurücksetzen?",
2934
+ "reset_short": "Standard"
2935
+ },
2936
+ "edit_hint": "Tipp: Zeilen mit gestricheltem Rahmen und ✎-Symbol können durch Klicken auf die Tasten neu aufgezeichnet werden. Andere Shortcuts (🔒) stammen aus dem Systemmenü und sind noch nicht anpassbar.",
2937
+ "mcp": {
2938
+ "intro": "Tastenkürzel für installierte MCP-Server und deren Tools binden.",
2939
+ "empty": "Installiere zuerst einen MCP-Server unter \"Einstellungen → MCP\", um Kürzel zu binden.",
2940
+ "add_tool": "MCP-Tool-Kürzel hinzufügen",
2941
+ "remove_tool": "Dieses MCP-Tool-Kürzel entfernen",
2942
+ "remove_tool_short": "Entfernen",
2943
+ "remove_stale": "Veraltete Bindung entfernen",
2944
+ "remove_stale_short": "Entfernen",
2945
+ "server_kind_short": "Server",
2946
+ "server_kind_hint": "Schaltet die MCP-Server-Verbindung um",
2947
+ "tool_kind_short": "Tool",
2948
+ "tool_kind_hint": "Öffnet das KI-Panel und bittet den Assistenten, dieses Tool zu verwenden",
2949
+ "stale_short": "Nicht verfügbar",
2950
+ "stale_hint": "Der MCP-Server oder das Tool dieser Bindung ist nicht mehr installiert",
2951
+ "server_gone": "MCP-Server ist nicht mehr installiert",
2952
+ "unavailable": "MCP-Tool nicht verfügbar",
2953
+ "toggled": {
2954
+ "on": "{name} aktiviert",
2955
+ "off": "{name} deaktiviert"
2956
+ },
2957
+ "dialog": {
2958
+ "title": "MCP-Tool-Kürzel hinzufügen",
2959
+ "server_label": "MCP-Server",
2960
+ "tool_label": "Tool",
2961
+ "tool_placeholder": "Tool auswählen…",
2962
+ "no_tools_for_server": "Dieser Server hat noch keine Tools — verbinde ihn zuerst in den MCP-Einstellungen.",
2963
+ "duplicate_error": "Für dieses Tool existiert bereits ein Kürzel.",
2964
+ "add": "Hinzufügen",
2965
+ "cancel": "Abbrechen"
2966
+ }
2967
+ }
2968
+ },
2969
+ "sidebar": {
2970
+ "title": "Sidebar",
2971
+ "open_folder": "Ordner öffnen",
2972
+ "no_folder": "Kein Ordner geöffnet",
2973
+ "create_kb": "Wissensbasis erstellen",
2974
+ "empty_dir": "Keine Dateien in diesem Verzeichnis",
2975
+ "kb_settings": "Wissensbasis-Einstellungen",
2976
+ "tree_view": "Baumansicht",
2977
+ "list_view": "Listenansicht",
2978
+ "search": "Dateien suchen...",
2979
+ "context_menu": {
2980
+ "new_file": "Neue Datei",
2981
+ "new_folder": "Neuer Ordner",
2982
+ "search_files": "Suchen",
2983
+ "refresh": "Aktualisieren",
2984
+ "rename": "Umbenennen",
2985
+ "duplicate": "Kopie erstellen",
2986
+ "delete": "Löschen",
2987
+ "copy_path": "Pfad kopieren",
2988
+ "reveal_in_finder": "Im Finder anzeigen",
2989
+ "reveal_in_explorer": "Im Explorer anzeigen",
2990
+ "history_versions": "Versionsverlauf"
2991
+ },
2992
+ "history": {
2993
+ "title": "Versionsverlauf",
2994
+ "empty": "Keine gespeicherten Versionen",
2995
+ "restore": "Wiederherstellen",
2996
+ "restore_confirm": "Diese Version wiederherstellen? Der aktuelle Inhalt von MORAYA.md wird ersetzt."
2997
+ },
2998
+ "new_file_prompt": "Dateinamen eingeben",
2999
+ "new_folder_prompt": "Ordnernamen eingeben",
3000
+ "rename_prompt": "Neuen Namen eingeben",
3001
+ "reserved_dir_title": "Reservierter Name",
3002
+ "reserved_dir_name": "\"images\" ist ein reservierter Verzeichnisname. Bitte wählen Sie einen anderen Namen.",
3003
+ "delete_confirm": "Möchten Sie \"{name}\" wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.",
3004
+ "views": "Sidebar views",
3005
+ "knowledge_bases": "Knowledge Bases",
3006
+ "explorer": "Files",
3007
+ "kb_list": "Knowledge base list",
3008
+ "tag_view": "Tags",
3009
+ "open": "Open sidebar",
3010
+ "close": "Close sidebar",
3011
+ "local_workspace": "Local"
3012
+ },
3013
+ "sso": {
3014
+ "__mt": true,
3015
+ "title": "Single Sign-On",
3016
+ "description": "Configure SSO to let team members authenticate via your identity provider.",
3017
+ "enable_sso": "Enable SSO",
3018
+ "require_sso": "Require SSO for all members",
3019
+ "oidc": "OIDC / OAuth 2.0",
3020
+ "saml": "SAML 2.0",
3021
+ "provider": "Identity Provider",
3022
+ "custom_provider": "Custom",
3023
+ "issuer": "Issuer URL",
3024
+ "client_id": "Client ID",
3025
+ "client_secret": "Client Secret",
3026
+ "scopes": "Scopes",
3027
+ "idp_metadata_url": "IdP Metadata URL",
3028
+ "sp_entity_id": "SP Entity ID",
3029
+ "sp_acs_url": "ACS URL",
3030
+ "signing_cert": "Signing Certificate",
3031
+ "save": "Save SSO Configuration",
3032
+ "saved_success": "SSO configuration saved."
3033
+ },
3034
+ "stale_dmg": {
3035
+ "title": "Alte Disk-Images bereinigen",
3036
+ "body": "Es wurden ältere Moraya-Disk-Images gefunden, die noch eingehängt sind. Wenn sie eingehängt bleiben, erscheinen mehrere Versionen im \"Öffnen mit\"-Menü. Jetzt auswerfen?",
3037
+ "eject_all": "Alle auswerfen",
3038
+ "skip": "Später",
3039
+ "partial_failure": "Einige Disk-Images konnten nicht ausgeworfen werden:"
3040
+ },
3041
+ "statusbar": {
3042
+ "words": "Wörter",
3043
+ "characters": "Zeichen",
3044
+ "format": "Markdown",
3045
+ "source_mode": "Quelltext",
3046
+ "visual_mode": "Visuell",
3047
+ "split_mode": "Geteilt",
3048
+ "publish_workflow": "KI-Workflow",
3049
+ "ai_tooltip": "KI"
3050
+ },
3051
+ "storage": {
3052
+ "__mt": true,
3053
+ "title": "Storage",
3054
+ "connected_providers": "Connected Providers",
3055
+ "connect_provider": "Connect Provider",
3056
+ "primary": "Primary",
3057
+ "set_primary": "Set as Primary",
3058
+ "remove": "Remove",
3059
+ "edit": "Edit",
3060
+ "verify": "Verify Connection",
3061
+ "verifying": "Verifying...",
3062
+ "verify_success": "Connection verified",
3063
+ "verify_failed": "Verification failed",
3064
+ "no_providers": "No storage providers connected.",
3065
+ "connect_prompt": "Connect your own cloud storage to keep full control of your data.",
3066
+ "picora_default": "Picora is your storage provider (Connect plan)",
3067
+ "upgrade_for_byoc": "Upgrade to Personal to connect your own storage.",
3068
+ "step_choose": "Choose Provider",
3069
+ "step_setup": "Setup Script",
3070
+ "step_credentials": "Enter Credentials",
3071
+ "step_verify": "Verify",
3072
+ "step_name": "Name & Save",
3073
+ "provider_label": "Provider",
3074
+ "bucket_label": "Bucket Name",
3075
+ "region_label": "Region",
3076
+ "access_key_label": "Access Key ID",
3077
+ "secret_key_label": "Secret Access Key",
3078
+ "role_arn_label": "Role ARN (for STS)",
3079
+ "account_id_label": "Account ID",
3080
+ "key_id_label": "Key ID",
3081
+ "application_key_label": "Application Key",
3082
+ "binding_label": "Display Name",
3083
+ "copy_script": "Copy Script",
3084
+ "copy_policy": "Copy Policy JSON",
3085
+ "copied": "Copied!",
3086
+ "back": "Back",
3087
+ "next": "Next",
3088
+ "save": "Save",
3089
+ "health_ok": "Healthy",
3090
+ "health_degraded": "Degraded",
3091
+ "health_failed": "Failed",
3092
+ "health_unknown": "Unknown",
3093
+ "access_denied": "Access denied.",
3094
+ "bucket_not_found": "Bucket not found.",
3095
+ "bucket_exists": "Bucket already exists.",
3096
+ "clock_skew": "System clock is out of sync. Please check your date/time settings.",
3097
+ "b2_no_sts_warning": "Backblaze B2 does not support STS. Credentials are stored in session only. Enable E2E encryption (v0.43) for better security.",
3098
+ "r2_token_info": "Create an API Token in Cloudflare Dashboard with R2 Read/Write permissions for this bucket."
3099
+ },
3100
+ "table": {
3101
+ "insert_row_above": "Zeile darüber einfügen",
3102
+ "insert_row_below": "Zeile darunter einfügen",
3103
+ "delete_row": "Zeile löschen",
3104
+ "insert_col_left": "Spalte links einfügen",
3105
+ "insert_col_right": "Spalte rechts einfügen",
3106
+ "delete_col": "Spalte löschen",
3107
+ "align_left": "Linksbündig",
3108
+ "align_center": "Zentriert",
3109
+ "align_right": "Rechtsbündig",
3110
+ "copy_table": "Tabelle kopieren",
3111
+ "format_table_source": "Tabellenquelle formatieren",
3112
+ "delete_table": "Tabelle löschen",
3113
+ "copied": "Tabelle kopiert",
3114
+ "formatted_copied": "Formatierte Tabelle kopiert"
3115
+ },
3116
+ "tabs": {
3117
+ "external_change_title": "Datei extern geändert",
3118
+ "external_change_msg": "„{fileName}“ wurde außerhalb von Moraya geändert.",
3119
+ "keep_local": "Lokale Änderungen behalten",
3120
+ "load_from_disk": "Von Festplatte laden",
3121
+ "unsaved_title": "Ungespeicherte Änderungen",
3122
+ "unsaved_msg": "„{fileName}“ hat ungespeicherte Änderungen.",
3123
+ "save": "Speichern",
3124
+ "discard": "Verwerfen",
3125
+ "new_tab": "New Tab",
3126
+ "close": "Close Tab",
3127
+ "close_others": "Close Other Tabs",
3128
+ "close_to_right": "Close Tabs to the Right",
3129
+ "close_all": "Close All Tabs",
3130
+ "dirty_confirm": "This tab has unsaved changes. Discard and close?",
3131
+ "discard_close": "Discard & Close",
3132
+ "readonly_banner": "Another tab is editing this note. This tab is read-only.",
3133
+ "takeover": "Take Over",
3134
+ "open_count": "tabs open",
3135
+ "no_tabs": "No open tabs",
3136
+ "upgrade_tabs": "Upgrade to Personal to open multiple tabs.",
3137
+ "rename": "Rename",
3138
+ "rename_placeholder": "Document name",
3139
+ "dirty_dot": "Unsaved changes"
3140
+ },
3141
+ "team": {
3142
+ "__mt": true,
3143
+ "title": "Team Knowledge Bases",
3144
+ "create": "New Team KB",
3145
+ "no_kbs": "You don't have any team knowledge bases yet.",
3146
+ "create_first": "Create your first team KB",
3147
+ "members": "members",
3148
+ "open": "Open",
3149
+ "settings": "Settings",
3150
+ "encryption_kms": "Cloud KMS (AI Review enabled)",
3151
+ "encryption_e2e": "E2E Encryption (AI Review disabled)",
3152
+ "wizard_title": "Create Team Knowledge Base",
3153
+ "step_info": "Name",
3154
+ "step_provider": "Storage",
3155
+ "step_members": "Members",
3156
+ "step_encryption": "Encryption",
3157
+ "step_confirm": "Confirm",
3158
+ "kb_name_label": "Team KB Name",
3159
+ "kb_name_placeholder": "e.g. Engineering Docs",
3160
+ "provider_label": "Provider",
3161
+ "bucket_label": "Bucket",
3162
+ "prefix_label": "Prefix (optional)",
3163
+ "invite_emails_label": "Email addresses (comma-separated)",
3164
+ "invite_role_label": "Role",
3165
+ "mode_kms_name": "Cloud KMS",
3166
+ "mode_kms_desc": "AI Review and server-side features enabled.",
3167
+ "mode_e2e_name": "End-to-End",
3168
+ "mode_e2e_desc": "Maximum privacy. AI Review not available.",
3169
+ "confirm_summary": "Confirm & Create",
3170
+ "creating": "Creating…",
3171
+ "create_kb": "Create Team KB"
3172
+ },
3173
+ "templates": {
3174
+ "gallery": {
3175
+ "title": "KI-Assistent",
3176
+ "search": "Vorlagen suchen...",
3177
+ "back": "Zurück",
3178
+ "start": "Starten"
3179
+ },
3180
+ "my_templates": {
3181
+ "name": "Meine Vorlagen",
3182
+ "desc": "Von Ihnen importierte oder erstellte benutzerdefinierte Vorlagen"
3183
+ },
3184
+ "manage": {
3185
+ "title": "Vorlagen verwalten",
3186
+ "import": "Vorlage importieren",
3187
+ "export": "Vorlagen exportieren",
3188
+ "manage": "Vorlagen verwalten",
3189
+ "delete": "Löschen",
3190
+ "delete_confirm": "Bestätigen?",
3191
+ "import_success": "{count} Vorlage(n) importiert",
3192
+ "export_success": "Vorlagen erfolgreich exportiert",
3193
+ "no_custom_templates": "Noch keine benutzerdefinierten Vorlagen",
3194
+ "source_global": "Global",
3195
+ "source_kb": "Wissensbasis",
3196
+ "invalid_format": "Ungültiges Vorlagenformat",
3197
+ "select_templates": "Vorlagen zum Exportieren auswählen"
3198
+ },
3199
+ "error": {
3200
+ "no_document": "Bitte schreiben Sie zuerst etwas",
3201
+ "no_selection": "Bitte wählen Sie zuerst einen Text aus",
3202
+ "no_content": "Bitte schreiben Sie etwas oder wählen Sie einen Text aus"
3203
+ },
3204
+ "writing": {
3205
+ "name": "Schreiben",
3206
+ "desc": "KI-gestütztes Schreiben, Bearbeiten und Zusammenfassen",
3207
+ "free": {
3208
+ "name": "Freies Schreiben",
3209
+ "desc": "Geben Sie ein Thema ein und die KI generiert Inhalte",
3210
+ "hint": "Schreibthema oder Anweisungen eingeben..."
3211
+ },
3212
+ "continue": {
3213
+ "name": "Weiterschreiben",
3214
+ "desc": "Vom Ende des Dokuments fortfahren"
3215
+ },
3216
+ "outline": {
3217
+ "name": "Gliederung erstellen",
3218
+ "desc": "Eine Artikelgliederung erstellen",
3219
+ "hint": "Artikelthema eingeben..."
3220
+ },
3221
+ "summarize": {
3222
+ "name": "Zusammenfassen",
3223
+ "desc": "Ausgewählten Text oder gesamtes Dokument zusammenfassen"
3224
+ },
3225
+ "improve": {
3226
+ "name": "Verbessern",
3227
+ "desc": "Schreibqualität verbessern"
3228
+ },
3229
+ "simplify": {
3230
+ "name": "Vereinfachen",
3231
+ "desc": "Komplexen Text vereinfachen"
3232
+ },
3233
+ "expand": {
3234
+ "name": "Erweitern",
3235
+ "desc": "Mehr Details und Erklärungen hinzufügen"
3236
+ },
3237
+ "fix_grammar": {
3238
+ "name": "Grammatik korrigieren",
3239
+ "desc": "Grammatik- und Rechtschreibfehler beheben"
3240
+ }
3241
+ },
3242
+ "translation": {
3243
+ "name": "Übersetzung",
3244
+ "desc": "Mehrsprachige Übersetzung und Lokalisierung",
3245
+ "auto": {
3246
+ "name": "Intelligente Übersetzung",
3247
+ "desc": "Sprache automatisch erkennen und übersetzen"
3248
+ },
3249
+ "to_target": {
3250
+ "name": "Übersetzen nach...",
3251
+ "desc": "Zielsprache auswählen und übersetzen"
3252
+ },
3253
+ "explain": {
3254
+ "name": "Übersetzen & Erklären",
3255
+ "desc": "Übersetzen mit Wort-für-Wort-Erklärung"
3256
+ },
3257
+ "polish": {
3258
+ "name": "Lokalisieren",
3259
+ "desc": "Übersetzungen natürlicher klingen lassen"
3260
+ },
3261
+ "compare": {
3262
+ "name": "Mehrere Versionen",
3263
+ "desc": "Verschiedene Übersetzungsstile anbieten"
3264
+ },
3265
+ "target_lang": "Zielsprache",
3266
+ "lang": {
3267
+ "en": "Englisch",
3268
+ "zh_cn": "Vereinfachtes Chinesisch",
3269
+ "zh_hant": "Traditionelles Chinesisch",
3270
+ "ja": "Japanisch",
3271
+ "ko": "Koreanisch",
3272
+ "ar": "Arabisch",
3273
+ "de": "Deutsch",
3274
+ "es": "Spanisch",
3275
+ "fr": "Französisch",
3276
+ "hi": "Hindi",
3277
+ "pt": "Portugiesisch",
3278
+ "ru": "Russisch"
3279
+ }
3280
+ },
3281
+ "student": {
3282
+ "name": "Lernhilfe",
3283
+ "desc": "Lernen, Notizen und Konzeptverständnis",
3284
+ "explain": {
3285
+ "name": "Konzept erklären",
3286
+ "desc": "Ein Konzept in einfachen Worten erklären",
3287
+ "hint": "Ein Konzept zum Erklären eingeben..."
3288
+ },
3289
+ "notes": {
3290
+ "name": "Lernnotizen",
3291
+ "desc": "Inhalte in strukturierte Notizen organisieren"
3292
+ },
3293
+ "flashcard": {
3294
+ "name": "Lernkarten",
3295
+ "desc": "Frage-Antwort-Karten aus dem Inhalt extrahieren"
3296
+ },
3297
+ "mindmap": {
3298
+ "name": "Mindmap",
3299
+ "desc": "Eine Markdown-Mindmap erstellen"
3300
+ },
3301
+ "essay_outline": {
3302
+ "name": "Aufsatzgliederung",
3303
+ "desc": "Eine Aufsatzgliederung erstellen",
3304
+ "hint": "Aufsatzthema eingeben..."
3305
+ },
3306
+ "reading": {
3307
+ "name": "Textanalyse",
3308
+ "desc": "Vertiefte Analyse von Textinhalten"
3309
+ },
3310
+ "formula": {
3311
+ "name": "Formelherleitung",
3312
+ "desc": "Herleitungsschritte mathematischer Formeln zeigen",
3313
+ "hint": "Formelnamen oder -inhalt eingeben..."
3314
+ },
3315
+ "compare": {
3316
+ "name": "Konzepte vergleichen",
3317
+ "desc": "Zwei Konzepte nebeneinander vergleichen",
3318
+ "hint": "Zwei Konzepte eingeben (z. B. TCP vs. UDP)..."
3319
+ }
3320
+ },
3321
+ "kids": {
3322
+ "name": "Kinderlernen",
3323
+ "desc": "Geschichten, spielerisches Lernen, interaktive Spiele",
3324
+ "story": {
3325
+ "name": "Kindergeschichte",
3326
+ "desc": "Aus Stichwörtern eine Geschichte erstellen",
3327
+ "hint": "Stichwörter eingeben (z. B. Hase Wald Abenteuer)..."
3328
+ },
3329
+ "poem": {
3330
+ "name": "Kinderreim",
3331
+ "desc": "Einen Reim zu einem Thema erstellen",
3332
+ "hint": "Ein Thema eingeben..."
3333
+ },
3334
+ "why": {
3335
+ "name": "Warum? Warum? Warum?",
3336
+ "desc": "Die KI beantwortet endlose 'Warum'-Fragen"
3337
+ },
3338
+ "alphabet": {
3339
+ "name": "Buchstabenspaß",
3340
+ "desc": "Interaktives Buchstabenlernen"
3341
+ },
3342
+ "math_game": {
3343
+ "name": "Mathespiel",
3344
+ "desc": "Spielerisches interaktives Rechnen"
3345
+ },
3346
+ "riddle": {
3347
+ "name": "Rätsel",
3348
+ "desc": "Die KI stellt Rätsel für Kinder zum Lösen"
3349
+ },
3350
+ "draw_text": {
3351
+ "name": "Bildgeschichte",
3352
+ "desc": "Eine Szene beschreiben, die KI schreibt eine Geschichte",
3353
+ "hint": "Eine Szene beschreiben..."
3354
+ },
3355
+ "knowledge": {
3356
+ "name": "Wissenswertes",
3357
+ "desc": "Natur, Wissenschaft, Tier-Enzyklopädie"
3358
+ }
3359
+ },
3360
+ "marketing": {
3361
+ "name": "Marketing",
3362
+ "desc": "Social Media, Werbung und SEO-Texte",
3363
+ "xiaohongshu": {
3364
+ "name": "Xiaohongshu-Beitrag",
3365
+ "desc": "Lifestyle-Bewertungs-Beitrag erstellen",
3366
+ "hint": "Produkt oder Thema eingeben..."
3367
+ },
3368
+ "twitter": {
3369
+ "name": "Twitter/X-Beitrag",
3370
+ "desc": "Tweet-artigen Inhalt erstellen",
3371
+ "hint": "Thema eingeben..."
3372
+ },
3373
+ "slogan": {
3374
+ "name": "Werbeslogan",
3375
+ "desc": "Einprägsame Markenslogans erstellen",
3376
+ "hint": "Marke oder Produkt eingeben..."
3377
+ },
3378
+ "email": {
3379
+ "name": "Marketing-E-Mail",
3380
+ "desc": "Zielgruppe und Tonfall für E-Mail konfigurieren",
3381
+ "hint": "E-Mail-Inhalt beschreiben..."
3382
+ },
3383
+ "seo_article": {
3384
+ "name": "SEO-Artikel",
3385
+ "desc": "SEO-optimierte Inhalte erstellen",
3386
+ "hint": "Ziel-Keywords eingeben..."
3387
+ },
3388
+ "product_desc": {
3389
+ "name": "Produktbeschreibung",
3390
+ "desc": "Überzeugende Produkttexte erstellen",
3391
+ "hint": "Produktinformationen eingeben..."
3392
+ },
3393
+ "tone": "Tonfall",
3394
+ "tone.formal": "Formell",
3395
+ "tone.friendly": "Freundlich",
3396
+ "tone.urgent": "Dringend",
3397
+ "tone.humorous": "Humorvoll"
3398
+ },
3399
+ "professional": {
3400
+ "name": "Professionell",
3401
+ "desc": "E-Mails, Berichte, Besprechungsnotizen",
3402
+ "email": {
3403
+ "name": "Geschäfts-E-Mail",
3404
+ "desc": "Szenario und Tonfall für E-Mail konfigurieren",
3405
+ "hint": "E-Mail-Inhalt beschreiben..."
3406
+ },
3407
+ "meeting": {
3408
+ "name": "Besprechungsnotizen",
3409
+ "desc": "Notizen in formelle Protokolle organisieren"
3410
+ },
3411
+ "report": {
3412
+ "name": "Arbeitsbericht",
3413
+ "desc": "Wochen-/Monats-/Quartalsbericht erstellen",
3414
+ "hint": "Kernpunkte für den Bericht eingeben..."
3415
+ },
3416
+ "review": {
3417
+ "name": "Code Review",
3418
+ "desc": "Code überprüfen und Verbesserungen vorschlagen"
3419
+ },
3420
+ "resume": {
3421
+ "name": "Lebenslauf optimieren",
3422
+ "desc": "Lebenslauf mit der STAR-Methode optimieren"
3423
+ },
3424
+ "prd": {
3425
+ "name": "PRD-Dokument",
3426
+ "desc": "Produktanforderungsdokument erstellen",
3427
+ "hint": "Funktionsbeschreibung eingeben..."
3428
+ },
3429
+ "tone": "Tonfall",
3430
+ "tone.concise": "Prägnant",
3431
+ "report_type": "Berichtstyp",
3432
+ "report_type.weekly": "Wöchentlich",
3433
+ "report_type.monthly": "Monatlich",
3434
+ "report_type.quarterly": "Vierteljährlich"
3435
+ },
3436
+ "personal": {
3437
+ "name": "Persönliches Wachstum",
3438
+ "desc": "Tagebuch, Ziele, Entscheidungsfindung",
3439
+ "journal": {
3440
+ "name": "Tagebuch-Helfer",
3441
+ "desc": "Geführtes Tagebuchschreiben und Reflexion",
3442
+ "hint": "Was ist heute passiert?..."
3443
+ },
3444
+ "goal": {
3445
+ "name": "Zielplanung",
3446
+ "desc": "Ziele in umsetzbare Schritte aufteilen",
3447
+ "hint": "Geben Sie Ihr Ziel ein..."
3448
+ },
3449
+ "habit": {
3450
+ "name": "Gewohnheitsaufbau",
3451
+ "desc": "Einen Plan zum Aufbau von Gewohnheiten erstellen",
3452
+ "hint": "Gewohnheit eingeben, die Sie aufbauen möchten..."
3453
+ },
3454
+ "decision": {
3455
+ "name": "Entscheidungsanalyse",
3456
+ "desc": "Vor- und Nachteile für Entscheidungen analysieren",
3457
+ "hint": "Beschreiben Sie Ihre Optionen..."
3458
+ },
3459
+ "book_notes": {
3460
+ "name": "Buchnotizen",
3461
+ "desc": "Inhalte in Lesenotizen organisieren"
3462
+ }
3463
+ },
3464
+ "games_cn": {
3465
+ "name": "Chinesische Spiele",
3466
+ "desc": "Gedichtspiele, Redewendungsketten, Rätsel",
3467
+ "feihualing": {
3468
+ "name": "Poetry Challenge",
3469
+ "desc": "Take turns reciting poems with a given character"
3470
+ },
3471
+ "chengyu_chain": {
3472
+ "name": "Idiom Chain",
3473
+ "desc": "Chain idioms by last/first character"
3474
+ },
3475
+ "riddle": {
3476
+ "name": "Riddles",
3477
+ "desc": "AI gives clues, you guess the answer"
3478
+ },
3479
+ "lantern_riddle": {
3480
+ "name": "Lantern Riddles",
3481
+ "desc": "Character-based riddle puzzles"
3482
+ },
3483
+ "poetry_fill": {
3484
+ "name": "Poetry Fill-in",
3485
+ "desc": "Fill in missing words from poems"
3486
+ },
3487
+ "story_chain": {
3488
+ "name": "Story Chain",
3489
+ "desc": "Take turns continuing a story"
3490
+ },
3491
+ "character_game": {
3492
+ "name": "Character Guess",
3493
+ "desc": "Guess the Chinese character from clues"
3494
+ },
3495
+ "brain_teaser": {
3496
+ "name": "Brain Teasers",
3497
+ "desc": "Fun brain teaser puzzles"
3498
+ },
3499
+ "couplet": {
3500
+ "name": "Couplets",
3501
+ "desc": "AI gives first line, you match it"
3502
+ },
3503
+ "word_explain": {
3504
+ "name": "Word Charades",
3505
+ "desc": "AI describes, you guess the word"
3506
+ },
3507
+ "ancient_text": {
3508
+ "name": "Classical Chinese",
3509
+ "desc": "Translate classical to modern Chinese"
3510
+ },
3511
+ "homophone": {
3512
+ "name": "Homophones",
3513
+ "desc": "Homophone pun challenge"
3514
+ }
3515
+ },
3516
+ "games_en": {
3517
+ "name": "Englische Spiele",
3518
+ "desc": "Word Chain, Hangman, Trivia und mehr",
3519
+ "word_chain": {
3520
+ "name": "Word Chain",
3521
+ "desc": "Der letzte Buchstabe beginnt das nächste Wort"
3522
+ },
3523
+ "twenty_questions": {
3524
+ "name": "20 Questions",
3525
+ "desc": "Erraten Sie den Gegenstand in 20 Ja/Nein-Fragen"
3526
+ },
3527
+ "hangman": {
3528
+ "name": "Hangman",
3529
+ "desc": "Erraten Sie das Wort Buchstabe für Buchstabe"
3530
+ },
3531
+ "story_builder": {
3532
+ "name": "Story Builder",
3533
+ "desc": "Abwechselnd eine Geschichte aufbauen"
3534
+ },
3535
+ "word_association": {
3536
+ "name": "Word Association",
3537
+ "desc": "Freie Assoziations-Wortkette"
3538
+ },
3539
+ "riddles": {
3540
+ "name": "Riddles",
3541
+ "desc": "Englische Rätsel lösen"
3542
+ },
3543
+ "trivia": {
3544
+ "name": "Trivia Quiz",
3545
+ "desc": "Allgemeinwissen-Fragen"
3546
+ },
3547
+ "rhyme_time": {
3548
+ "name": "Rhyme Time",
3549
+ "desc": "Geschichten mit Reimwörtern erstellen"
3550
+ },
3551
+ "acronym": {
3552
+ "name": "Acronym Game",
3553
+ "desc": "Bedeutungen für zufällige Akronyme erfinden"
3554
+ },
3555
+ "taboo": {
3556
+ "name": "Taboo",
3557
+ "desc": "Beschreiben ohne verbotene Wörter zu verwenden"
3558
+ },
3559
+ "sentence_builder": {
3560
+ "name": "Sentence Builder",
3561
+ "desc": "Den längsten Satz mit vorgegebenen Wörtern bilden"
3562
+ },
3563
+ "emoji_story": {
3564
+ "name": "Emoji Story",
3565
+ "desc": "Geschichten mit Emojis erzählen"
3566
+ }
3567
+ },
3568
+ "quiz": {
3569
+ "name": "Quiz & Übung",
3570
+ "desc": "KI-generierte Fragen mit Bewertung",
3571
+ "practice": {
3572
+ "name": "Universelles Quiz",
3573
+ "desc": "Fach und Schwierigkeit wählen, die KI prüft Sie"
3574
+ },
3575
+ "direction": "Fach",
3576
+ "dir": {
3577
+ "programming": "Programmierung",
3578
+ "math": "Mathematik",
3579
+ "english": "Englisch",
3580
+ "science": "Naturwissenschaften",
3581
+ "history": "Geschichte",
3582
+ "interview": "Bewerbungsvorbereitung",
3583
+ "custom": "Benutzerdefiniertes Fach"
3584
+ },
3585
+ "difficulty": "Schwierigkeit",
3586
+ "diff": {
3587
+ "easy": "Leicht",
3588
+ "medium": "Mittel",
3589
+ "hard": "Schwer"
3590
+ }
3591
+ }
3592
+ },
3593
+ "theme": {
3594
+ "__mt": true,
3595
+ "title": "Appearance",
3596
+ "mode_title": "Color Mode",
3597
+ "mode_light": "Light",
3598
+ "mode_dark": "Dark",
3599
+ "mode_system": "System",
3600
+ "custom_title": "Custom Themes",
3601
+ "custom_new": "New Theme",
3602
+ "custom_export": "Export",
3603
+ "custom_import": "Import",
3604
+ "custom_delete": "Delete",
3605
+ "custom_activate": "Activate",
3606
+ "custom_deactivate": "Deactivate",
3607
+ "custom_edit": "Edit",
3608
+ "editor_title": "Theme Editor",
3609
+ "name_label": "Theme Name",
3610
+ "no_custom": "No custom themes yet. Create one below.",
3611
+ "groups_base": "Base Colors",
3612
+ "groups_editor": "Editor",
3613
+ "groups_ui": "UI Components",
3614
+ "groups_code": "Code Block",
3615
+ "saved": "Save",
3616
+ "import_error": "Invalid theme file. Please use a valid Moraya theme JSON."
3617
+ },
3618
+ "titlebar": {
3619
+ "unsaved": "Ungespeichert",
3620
+ "minimize": "Minimieren",
3621
+ "maximize": "Maximieren",
3622
+ "close": "Schließen",
3623
+ "new_file": "Neue Datei",
3624
+ "open_file": "Datei öffnen..."
3625
+ },
3626
+ "transcription": {
3627
+ "title": "Transkription",
3628
+ "recording": "Aufnahme",
3629
+ "connecting": "Verbinde...",
3630
+ "paused": "Pausiert",
3631
+ "stopping": "Wird gestoppt...",
3632
+ "idle": "Bereit",
3633
+ "start": "Starten",
3634
+ "stop": "Stoppen",
3635
+ "pause": "Pausieren",
3636
+ "resume": "Fortsetzen",
3637
+ "back": "Zurück zum Chat",
3638
+ "empty_idle": "Klicken Sie auf Starten, um mit der Aufnahme und Transkription zu beginnen.",
3639
+ "empty_waiting": "Warte auf Sprache...",
3640
+ "summarize_with_ai": "Mit KI zusammenfassen",
3641
+ "save_as_doc": "Als Dokument speichern",
3642
+ "summarize_prompt": "Bitte erstellen Sie eine Besprechungszusammenfassung aus dem folgenden Transkript. Identifizieren Sie die wichtigsten Diskussionspunkte, getroffene Entscheidungen und Aktionspunkte. Formatieren Sie als Markdown.",
3643
+ "no_speech_config": "Kein Sprachanbieter konfiguriert. Bitte fügen Sie einen unter Einstellungen → Sprache hinzu.",
3644
+ "no_speech_config_hint": "Gehen Sie zu Einstellungen → Sprache, um einen Sprachanbieter hinzuzufügen (z. B. Deepgram).",
3645
+ "go_to_voice_settings": "Spracheinstellungen öffnen"
3646
+ },
3647
+ "update": {
3648
+ "title": "Versionsinformationen",
3649
+ "current_version": "Aktuelle Version",
3650
+ "latest_version": "Neueste Version",
3651
+ "checking": "Suche nach Updates...",
3652
+ "up_to_date": "Sie verwenden die neueste Version!",
3653
+ "check_failed": "Update-Prüfung fehlgeschlagen",
3654
+ "release_notes": "Neuerungen",
3655
+ "no_asset": "Kein Installationsprogramm für Ihre Plattform verfügbar. Bitte laden Sie es manuell herunter.",
3656
+ "upgrade": "Aktualisieren",
3657
+ "retry": "Erneut versuchen",
3658
+ "view_release": "Release anzeigen",
3659
+ "downloading": "Wird heruntergeladen...",
3660
+ "download_failed": "Download fehlgeschlagen",
3661
+ "install_launched": "Installationsprogramm gestartet. Moraya wird in Kürze geschlossen.",
3662
+ "new_version_available": "Neue Version verfügbar! Klicken Sie zum Aktualisieren."
3663
+ },
3664
+ "voice": {
3665
+ "__mt": true,
3666
+ "title": "Voice Capture",
3667
+ "provider": "Provider",
3668
+ "language": "Language",
3669
+ "doubao": "Doubao (Realtime)",
3670
+ "start": "Record",
3671
+ "stop": "Stop",
3672
+ "processing": "Processing...",
3673
+ "transcript": "Transcript",
3674
+ "words": "words",
3675
+ "structurize": "AI Structurize",
3676
+ "view_history": "View History",
3677
+ "untitled": "Untitled",
3678
+ "key_points": "Key Points",
3679
+ "action_items": "Action Items",
3680
+ "save_note": "Save Note",
3681
+ "discard": "Discard",
3682
+ "quota_exceeded": "Monthly voice quota exceeded. Upgrade or wait until next month.",
3683
+ "quota_near": "You are near your monthly voice limit.",
3684
+ "history": {
3685
+ "title": "Voice History",
3686
+ "new_capture": "+ New Recording",
3687
+ "search_placeholder": "Search transcripts...",
3688
+ "no_results": "No transcripts match your search.",
3689
+ "empty": "No recordings yet. Start capturing your voice!",
3690
+ "reprocess": "Re-process",
3691
+ "delete": "Delete"
3692
+ }
3693
+ },
3694
+ "welcome": {
3695
+ "title": "Willkommen bei Moraya",
3696
+ "subtitle": "Ein minimalistischer, KI-fähiger Markdown-Editor.",
3697
+ "features_title": "Funktionen",
3698
+ "feature_wysiwyg": "**WYSIWYG** Markdown-Bearbeitung",
3699
+ "feature_math": "Unterstützung für mathematische Formeln: $E = mc^2$",
3700
+ "feature_themes": "Dunkles & helles Design",
3701
+ "feature_ai": "KI-gestützter Schreibassistent",
3702
+ "feature_mcp": "MCP-Protokoll zum Veröffentlichen & Synchronisieren",
3703
+ "feature_lightweight": "Leichtgewichtig (~5 MB Installationsprogramm)",
3704
+ "math_title": "Mathe-Beispiel",
3705
+ "code_title": "Code-Beispiel",
3706
+ "table_title": "Tabellen-Beispiel",
3707
+ "table_feature": "Funktion",
3708
+ "table_status": "Status",
3709
+ "table_done": "Fertig",
3710
+ "start_writing": "Beginnen Sie hier mit Ihren Ideen...",
3711
+ "tip": "**Tipp:** Drücken Sie `Cmd+I`, um das KI-Assistenten-Panel umzuschalten.",
3712
+ "shortcuts_title": "Tastenkombinationen",
3713
+ "shortcut_save": "`Cmd+S` — Dokument speichern",
3714
+ "shortcut_open": "`Cmd+O` — Datei öffnen",
3715
+ "shortcut_new": "`Cmd+N` — Neues Dokument",
3716
+ "shortcut_toggle_mode": "`Cmd+/` — Visuell-/Quellmodus umschalten",
3717
+ "shortcut_split_mode": "`Cmd+Shift+/` — Geteilten Modus umschalten",
3718
+ "shortcut_sidebar": "`Cmd+\\` — Seitenleiste umschalten",
3719
+ "shortcut_settings": "`Cmd+,` — Einstellungen öffnen",
3720
+ "shortcut_ai": "`Cmd+Shift+I` — KI-Panel umschalten",
3721
+ "shortcut_export": "`Cmd+Shift+E` — Als HTML exportieren",
3722
+ "blockquote_title": "Zitat-Beispiel",
3723
+ "blockquote_content": "Die Kunst des Schreibens ist die Kunst zu entdecken, woran man glaubt. — Gustave Flaubert",
3724
+ "advanced_math_title": "Fortgeschrittene Mathematik",
3725
+ "list_title": "Verschachtelte Liste — Beispiel",
3726
+ "list_item1": "Erste Schritte",
3727
+ "list_item1a": "Anwendung installieren",
3728
+ "list_item1b": "Einstellungen konfigurieren",
3729
+ "list_item1c": "Mit dem Schreiben beginnen",
3730
+ "list_item2": "Erweiterte Funktionen",
3731
+ "list_item2a": "KI-gestützte Schreibhilfe",
3732
+ "list_item2b": "MCP-Protokoll-Integration",
3733
+ "list_item2c": "Mehrere Exportformate",
3734
+ "list_item3": "Anpassung",
3735
+ "list_item3a": "Designs und Erscheinungsbild",
3736
+ "list_item3b": "Editor-Einstellungen",
3737
+ "list_item3c": "Tastenkombinationen",
3738
+ "paragraph_title": "Über Moraya",
3739
+ "paragraph1": "Moraya ist ein moderner, leichtgewichtiger Markdown-Editor, der mit Rust und Tauri entwickelt wurde. Er kombiniert die Einfachheit eines Texteditors mit der Leistungsfähigkeit einer WYSIWYG-Oberfläche und bietet Ihnen das Beste aus beiden Welten.",
3740
+ "paragraph2": "Der Name „Moraya“ entsteht aus der Kombination von „mora“ (lateinisch für „ein Moment“) und „ya“ (chinesisch für „Eleganz“) und symbolisiert elegante Momente des Schreibens.",
3741
+ "paragraph3": "Ob Sie technische Dokumentation, Blogbeiträge, wissenschaftliche Arbeiten oder persönliche Notizen schreiben — Moraya bietet eine ablenkungsfreie Umgebung, die Sie sich auf das Wesentliche konzentrieren lässt — Ihren Inhalt.",
3742
+ "hr_title": "Horizontale Linien",
3743
+ "hr_description": "Sie können horizontale Linien verwenden, um verschiedene Abschnitte Ihres Dokuments zu trennen:"
3744
+ },
3745
+ "workflow": {
3746
+ "title": "KI-Workflow",
3747
+ "seo_step": "SEO-Optimierung",
3748
+ "image_gen_step": "KI-Bilder",
3749
+ "publish_step": "Veröffentlichen",
3750
+ "publish_desc": "Auf Zielplattformen veröffentlichen",
3751
+ "optional_above": "Die obigen Schritte sind optional",
3752
+ "select_targets": "Veröffentlichungsziele auswählen",
3753
+ "confirm_publish": "Veröffentlichen",
3754
+ "publishing": "Veröffentliche...",
3755
+ "publish_success": "Erfolgreich veröffentlicht!",
3756
+ "publish_failed": "Veröffentlichung fehlgeschlagen",
3757
+ "mcp_entry": "KI-MCP",
3758
+ "mcp_server_count": "Dienste verbunden",
3759
+ "mcp_tool_count": "Tools",
3760
+ "list": {
3761
+ "title": "Workflows",
3762
+ "new_workflow": "New Workflow",
3763
+ "empty_state": "Automate your notes with AI workflows",
3764
+ "no_workflows": "No workflows yet",
3765
+ "run_now": "Run Now",
3766
+ "last_run": "Last run",
3767
+ "never_run": "Never run",
3768
+ "enable": "Enable",
3769
+ "disable": "Disable",
3770
+ "delete": "Delete",
3771
+ "confirm_delete": "Delete this workflow?",
3772
+ "locked_custom": "Custom workflows require Personal plan or above"
3773
+ },
3774
+ "trigger": {
3775
+ "cron": "Scheduled",
3776
+ "manual": "Manual",
3777
+ "note_event": "Note Event",
3778
+ "webhook": "Webhook"
3779
+ },
3780
+ "status": {
3781
+ "running": "Running",
3782
+ "completed": "Completed",
3783
+ "failed": "Failed",
3784
+ "paused": "Paused",
3785
+ "cancelled": "Cancelled",
3786
+ "enabled": "Enabled",
3787
+ "disabled": "Disabled"
3788
+ },
3789
+ "edit": {
3790
+ "title_new": "New Workflow",
3791
+ "title_edit": "Edit Workflow",
3792
+ "save": "Save",
3793
+ "run": "Run",
3794
+ "cancel": "Cancel",
3795
+ "yaml_label": "Workflow YAML",
3796
+ "yaml_placeholder": "Enter workflow YAML...",
3797
+ "nodes_label": "Nodes",
3798
+ "valid": "Valid",
3799
+ "invalid": "Invalid",
3800
+ "engine_client": "Client Engine",
3801
+ "engine_server": "Server Engine (KMS required)",
3802
+ "unsaved_changes": "You have unsaved changes"
3803
+ },
3804
+ "history": {
3805
+ "title": "Execution History",
3806
+ "no_runs": "No runs yet",
3807
+ "trigger": "Trigger",
3808
+ "started": "Started",
3809
+ "duration": "Duration",
3810
+ "status": "Status",
3811
+ "workflow": "Workflow",
3812
+ "node_results": "Node Results",
3813
+ "node_id": "Node",
3814
+ "error_detail": "Error"
3815
+ },
3816
+ "market": {
3817
+ "title": "Workflow Templates",
3818
+ "templates": "Built-in Templates",
3819
+ "use_template": "Use Template",
3820
+ "export": "Export Workflow",
3821
+ "export_select": "Select workflow to export",
3822
+ "import": "Import Workflow",
3823
+ "import_placeholder": "Paste workflow YAML here...",
3824
+ "import_btn": "Import",
3825
+ "import_success": "Workflow imported successfully",
3826
+ "import_error": "Invalid workflow YAML",
3827
+ "search_placeholder": "Search templates..."
3828
+ },
3829
+ "templates": {
3830
+ "daily_summary": {
3831
+ "name": "Daily Summary",
3832
+ "description": "Automatically summarize your notes every evening"
3833
+ },
3834
+ "note_translation": {
3835
+ "name": "Note Translation",
3836
+ "description": "Translate notes to another language on demand"
3837
+ },
3838
+ "auto_tagging": {
3839
+ "name": "Auto Tagging",
3840
+ "description": "Automatically tag newly created notes with AI"
3841
+ },
3842
+ "weekly_review": {
3843
+ "name": "Weekly Review",
3844
+ "description": "Generate a weekly reflection every Sunday evening"
3845
+ },
3846
+ "knowledge_graph": {
3847
+ "name": "Knowledge Graph",
3848
+ "description": "Extract entities and relationships from all notes"
3849
+ }
3850
+ },
3851
+ "nodes": {
3852
+ "ai_call": "AI Call",
3853
+ "rag_search": "RAG Search",
3854
+ "transform": "Transform",
3855
+ "if": "Condition",
3856
+ "notes_write": "Write Note",
3857
+ "notify": "Notify",
3858
+ "tool_call": "Tool Call"
3859
+ },
3860
+ "quota": {
3861
+ "exceeded": "Workflow quota exceeded",
3862
+ "daily_limit": "Daily run limit reached",
3863
+ "ai_quota": "AI call quota exceeded"
3864
+ },
3865
+ "safety": {
3866
+ "write_permission_title": "Allow Workflow to Write Notes?",
3867
+ "write_permission_body": "Workflow \"{{ name }}\" wants to create or modify notes.",
3868
+ "allow_once": "Allow Once",
3869
+ "allow_always": "Always Allow",
3870
+ "deny": "Deny"
3871
+ }
3872
+ }
3873
+ }