@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 نشطة ({count} أقسام)",
63
+ "clear_chat": "مسح المحادثة",
64
+ "unconfigured": "لم يتم تكوين AI.",
65
+ "unconfigured_hint": "افتح الإعدادات ({shortcut}) وقم بتكوين مفتاح API لتفعيل ميزات AI.",
66
+ "open_settings": "فتح إعدادات AI",
67
+ "open_image_settings": "فتح إعدادات AIGC",
68
+ "text_ai_label": "AI النصي (توليد الأوامر)",
69
+ "image_ai_label": "AI الصور (توليد الصور)",
70
+ "welcome_title": "كيف يمكنني مساعدتك؟",
71
+ "welcome_hint": "اكتب رسالة أو استخدم {kbd} للأوامر",
72
+ "you": "أنت",
73
+ "assistant": "AI",
74
+ "typing": "يكتب...",
75
+ "placeholder": "اسأل AI أي شيء...",
76
+ "placeholder_selection": "اسأل عن النص المحدد...",
77
+ "send": "إرسال (⌘↵)",
78
+ "stop": "إيقاف (Esc)",
79
+ "retry": "إعادة المحاولة",
80
+ "interrupted": "تمت المقاطعة",
81
+ "insert_to_editor": "إدراج في المحرر",
82
+ "replace_selection": "استبدال التحديد",
83
+ "attach_image": "إرفاق صورة",
84
+ "attach_image_max": "الحد الأقصى {max} صور",
85
+ "remove_image": "إزالة الصورة",
86
+ "close_preview": "إغلاق المعاينة",
87
+ "more_actions": "المزيد من الإجراءات",
88
+ "voice_transcription": "تفريغ صوتي بالـ AI",
89
+ "config": {
90
+ "title": "تكوين AI",
91
+ "provider": "المزود",
92
+ "api_key": "مفتاح API",
93
+ "api_key_placeholder": "أدخل مفتاح API لـ {provider}",
94
+ "api_key_not_required": "غير مطلوب لـ Ollama",
95
+ "base_url": "عنوان URL الأساسي",
96
+ "model": "النموذج",
97
+ "model_placeholder": "أدخل اسم النموذج",
98
+ "max_tokens": "الحد الأقصى للرموز",
99
+ "temperature": "درجة الحرارة",
100
+ "test_connection": "اختبار الاتصال",
101
+ "testing": "جارٍ الاختبار...",
102
+ "connected": "متصل!",
103
+ "failed": "فشل",
104
+ "test_failed": "فشل اختبار الاتصال"
105
+ },
106
+ "providers": {
107
+ "claude": "Anthropic Claude",
108
+ "openai": "OpenAI",
109
+ "gemini": "Google Gemini",
110
+ "deepseek": "DeepSeek",
111
+ "ollama": "Ollama (محلي)",
112
+ "custom": "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": "+ إضافة نموذج",
121
+ "default": "الافتراضي",
122
+ "set_default": "تعيين كافتراضي",
123
+ "no_models": "لم يتم تكوين نماذج AI",
124
+ "no_models_hint": "أضف نموذج AI لبدء استخدام ميزات AI.",
125
+ "no_image_models": "لم يتم تكوين نماذج الصور",
126
+ "no_image_models_hint": "أضف نموذج توليد صور لاستخدام ميزات صور AI."
127
+ },
128
+ "image_config": {
129
+ "title": "AI لتوليد الصور",
130
+ "provider": "المزود",
131
+ "provider_openai": "OpenAI DALL-E",
132
+ "provider_grok": "Grok (xAI)",
133
+ "provider_custom": "مخصص (متوافق مع OpenAI)",
134
+ "api_key": "مفتاح API",
135
+ "api_key_placeholder": "أدخل مفتاح API للصور",
136
+ "base_url": "عنوان URL الأساسي",
137
+ "model": "النموذج",
138
+ "model_placeholder": "أدخل اسم النموذج",
139
+ "default_size": "الحجم الافتراضي",
140
+ "ratio": "نسبة العرض إلى الارتفاع",
141
+ "size_level": "الحجم",
142
+ "size_large": "كبير",
143
+ "size_medium": "متوسط",
144
+ "size_small": "صغير",
145
+ "provider_gemini": "Google Gemini Imagen",
146
+ "provider_qwen": "Qwen (Alibaba)",
147
+ "provider_doubao": "Doubao (ByteDance)"
148
+ },
149
+ "commands": {
150
+ "write": "كتابة",
151
+ "write_desc": "كتابة محتوى بناءً على طلبك",
152
+ "continue": "متابعة الكتابة",
153
+ "continue_desc": "المتابعة من حيث توقف النص",
154
+ "summarize": "تلخيص",
155
+ "summarize_desc": "تلخيص النص المحدد",
156
+ "translate": "ترجمة",
157
+ "translate_desc": "ترجمة النص إلى لغة أخرى",
158
+ "improve": "تحسين",
159
+ "improve_desc": "تحسين جودة الكتابة",
160
+ "fix_grammar": "تصحيح القواعد",
161
+ "fix_grammar_desc": "تصحيح الأخطاء النحوية والإملائية",
162
+ "simplify": "تبسيط",
163
+ "simplify_desc": "تبسيط النص المعقد",
164
+ "expand": "توسيع",
165
+ "expand_desc": "التوسع في الموضوع",
166
+ "outline": "إنشاء مخطط",
167
+ "outline_desc": "إنشاء مخطط للمقال",
168
+ "explain": "شرح",
169
+ "explain_desc": "شرح النص المحدد"
170
+ },
171
+ "prompts": {
172
+ "empty_response": "لقد أعدت استجابة فارغة. يرجى متابعة المهمة: إما قم بإجراء استدعاء(ات) الأداة اللازمة، أو لخص ما تم إنجازه وأدرج أي عناصر متبقية. لا تُرجع رسالة فارغة.",
173
+ "empty_response_continue": "\n\nرسالتك الأخيرة كانت: \"{lastMessage}\"\nيرجى المتابعة من هناك.",
174
+ "truncation_continue": "تم قطع استجابتك السابقة بسبب حدود طول الإخراج. تم حفظ النص أعلاه. الآن يرجى إكمال المهمة بإجراء استدعاء(ات) الأداة اللازمة. لا تكرر المحتوى — استخدمه مباشرة في وسائط الأداة.",
175
+ "continuation_prompt": "يرجى المتابعة وإجراء استدعاء(ات) الأداة اللازمة لإكمال المهمة. لا تكرر ما قيل بالفعل — تابع مباشرة مع استدعاءات الأدوات.",
176
+ "mcp_tool_prompt": "استخدم أداة {toolName} (من {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": "سأقوم|أحتاج|يجب أن|دعني|أولاً|الآن|بعد ذلك",
187
+ "action_verbs": "إنشاء|كتابة|قراءة|تحديث|رفع|توليد|جلب|التحقق|اختبار|استخدام|تنفيذ|إرسال|بحث|العثور|حفظ|حذف|تعديل|تكوين|تصدير|عرض",
188
+ "continuation_phrases": "أولاً|بعد ذلك|ثم|الآن",
189
+ "remaining_phrases": "المتبقي|التالي|الخطوة \\d+",
190
+ "unfinished_phrases": "للقيام|TODO|الخطوة التالية|لم يتم بعد|معلق"
191
+ },
192
+ "sections": {
193
+ "image_ai": "ذكاء اصطناعي للصور",
194
+ "image_aihint": "تكوينات نموذج إنشاء الصور بالذكاء الاصطناعي."
195
+ },
196
+ "generating": "جاري التوليد…",
197
+ "not_configured": "لم يتم تكوين موفر AI"
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": "إدراج صورة سحابية",
354
+ "title_audio": "إدراج صوت سحابي",
355
+ "title_video": "إدراج فيديو سحابي",
356
+ "no_targets": "لم يتم تكوين هدف Picora. يرجى إضافة واحد في الإعدادات ← قاعدة المعرفة.",
357
+ "scope_this_kb": "قاعدة المعرفة هذه",
358
+ "scope_all": "جميع الملفات",
359
+ "scope_no_kb": "بدون قاعدة معرفة",
360
+ "tab_recent": "الأخيرة",
361
+ "tab_all": "الكل",
362
+ "tab_favorites": "المفضلة",
363
+ "search_placeholder": "بحث…",
364
+ "grid_view": "عرض شبكي",
365
+ "list_view": "عرض قائمة",
366
+ "error_title": "فشل التحميل",
367
+ "last_cache": "آخر تحميل",
368
+ "empty_title": "لا توجد ملفات",
369
+ "empty_sub": "حاول تعديل المرشحات أو رفع ملفات إلى Picora.",
370
+ "loading_more": "جارٍ التحميل…",
371
+ "selected_count": "{n} محدد",
372
+ "insert_as_html": "إدراج بصيغة HTML",
373
+ "insert_btn": "إدراج",
374
+ "processing": "جارٍ المعالجة",
375
+ "public": "عام",
376
+ "private": "خاص",
377
+ "favorite": "مفضلة",
378
+ "copy_url": "نسخ الرابط",
379
+ "privacy_title": "ملفات خاصة محددة",
380
+ "privacy_desc": "{n} ملف(ات) خاصة وقد لا تكون مرئية للعموم.",
381
+ "privacy_warn": "جعل الملفات عامة سيتيح لأي شخص لديه الرابط عرضها.",
382
+ "suppress_privacy": "لا تحذّر مجدداً",
383
+ "make_public_insert": "جعله عاماً وإدراج",
384
+ "insert_anyway": "إدراج على أي حال",
385
+ "copy_markdown": "نسخ Markdown",
386
+ "empty_kb_scoped_sub": "لا توجد ملفات في KB الحالي. الملفات المرفوعة سابقاً قد لا تكون موسومة بهذا KB.",
387
+ "switch_scope_all": "إظهار جميع الملفات",
388
+ "url_missing": "عنوان URL للوسائط مفقود — قد لا يكون العنصر جاهزاً بعد."
389
+ },
390
+ "command_palette": {
391
+ "placeholder": "البحث في الملفات أو الأوامر أو قاعدة المعرفة...",
392
+ "files": "الملفات",
393
+ "commands": "الأوامر",
394
+ "semantic_search": "البحث الدلالي",
395
+ "keyword_search": "البحث بالكلمات المفتاحية",
396
+ "no_results": "لم يتم العثور على نتائج"
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": "حفظ",
414
+ "cancel": "إلغاء",
415
+ "close": "إغلاق",
416
+ "add": "إضافة",
417
+ "remove": "إزالة",
418
+ "connect": "اتصال",
419
+ "disconnect": "قطع الاتصال",
420
+ "insert": "إدراج",
421
+ "replace": "استبدال",
422
+ "copy": "نسخ",
423
+ "edit": "تحرير",
424
+ "delete": "حذف",
425
+ "browse": "تغيير",
426
+ "clear": "إعادة تعيين",
427
+ "play": "تشغيل",
428
+ "stop": "إيقاف",
429
+ "start": "تشغيل",
430
+ "untitled": "بدون عنوان",
431
+ "retry": "إعادة المحاولة",
432
+ "refresh": "تحديث",
433
+ "new": "جديد"
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": "قص",
525
+ "copy": "نسخ",
526
+ "paste": "لصق",
527
+ "upload_all_images": "رفع جميع الصور إلى خدمة الاستضافة",
528
+ "upload_starting": "جارٍ رفع الصور إلى خدمة الاستضافة...",
529
+ "upload_image_success": "تم الرفع: {name}",
530
+ "upload_image_failed": "فشل الرفع: {name} — {error}",
531
+ "upload_all_complete": "اكتمل الرفع: {success}/{total} نجحت",
532
+ "upload_no_config": "يرجى إعداد خدمة استضافة الصور في الإعدادات أولاً",
533
+ "insert_cloud_image": "إدراج صورة سحابية…",
534
+ "insert_cloud_audio": "إدراج صوت سحابي…",
535
+ "insert_cloud_video": "إدراج فيديو سحابي…"
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": "تغييرات غير محفوظة",
553
+ "unsaved_new_doc_msg": "لديك محتوى غير محفوظ سيتم فقدانه. هل تريد حفظه أولاً؟",
554
+ "save_first": "حفظ",
555
+ "discard_changes": "عدم الحفظ",
556
+ "loading": {
557
+ "parsing": "تحليل Markdown…",
558
+ "rendering": "جارٍ التصيير…"
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": "لم يتم تكوين AI.",
693
+ "ai_request_failed": "فشل طلب AI",
694
+ "chat_request_failed": "فشل طلب المحادثة",
695
+ "unknown_command": "أمر AI غير معروف: {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": "تصدير كـ {format}",
748
+ "pdf": "PDF",
749
+ "html": "HTML (مع الأنماط)",
750
+ "html_plain": "HTML (بدون أنماط)",
751
+ "image": "صورة (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": "التحضير...",
762
+ "rendering": "العرض...",
763
+ "paginating": "تقسيم الصفحات ({current}/{total})",
764
+ "writing": "الكتابة...",
765
+ "done": "تم"
766
+ },
767
+ "fallback": {
768
+ "notice": "وضع التوافق"
769
+ },
770
+ "error": {
771
+ "generic": "فشل التصدير",
772
+ "timeout": "انتهت مهلة التصدير",
773
+ "subprocess_failed": "فشلت العملية الفرعية",
774
+ "native_api_failed": "فشلت الطباعة الأصلية"
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",
813
+ "repo_url": "رابط المستودع",
814
+ "branch": "الفرع",
815
+ "token": "رمز الوصول الشخصي",
816
+ "token_hint": "رمز الوصول الشخصي أو مفتاح API. يُحفظ بأمان في سلسلة مفاتيح نظام التشغيل.",
817
+ "auth_method": "طريقة المصادقة",
818
+ "auth_token": "رمز الوصول",
819
+ "auth_password": "اسم المستخدم وكلمة المرور",
820
+ "auth_ssh": "مفتاح SSH",
821
+ "username": "اسم المستخدم",
822
+ "password": "كلمة المرور",
823
+ "ssh_key_path": "مسار مفتاح SSH الخاص",
824
+ "ssh_passphrase": "عبارة مرور SSH",
825
+ "ssh_key_path_hint": "المسار المطلق لمفتاح SSH الخاص (مثال: ~/.ssh/id_ed25519)",
826
+ "ssh_passphrase_hint": "اتركه فارغاً إذا لم يكن للمفتاح عبارة مرور",
827
+ "error_username_required": "اسم المستخدم مطلوب",
828
+ "error_password_required": "كلمة المرور مطلوبة",
829
+ "error_ssh_key_required": "مسار مفتاح SSH مطلوب",
830
+ "mode_clone": "استنساخ إلى المجلد المحلي",
831
+ "mode_push": "دفع المحتوى المحلي إلى البعيد",
832
+ "mode_connect": "الاتصال بمستودع موجود",
833
+ "detecting": "جارٍ الكشف...",
834
+ "auto_commit": "إيداع تلقائي عند الحفظ",
835
+ "auto_sync": "مزامنة تلقائية في الخلفية",
836
+ "sync_interval": "فترة المزامنة",
837
+ "minutes": "دقيقة",
838
+ "confirm_bind": "ربط المستودع",
839
+ "error_url_required": "رابط المستودع مطلوب",
840
+ "error_token_required": "رمز الوصول مطلوب",
841
+ "bind": "ربط مستودع Git",
842
+ "unbind": "إلغاء ربط Git",
843
+ "unbind_title": "إلغاء ربط مستودع Git",
844
+ "unbind_confirm": "إلغاء ربط مستودع Git من \"{name}\"؟ ستُحتفظ بالملفات المحلية.",
845
+ "synced": "متزامن",
846
+ "ahead": "للدفع",
847
+ "behind": "للسحب",
848
+ "syncing": "جارٍ المزامنة...",
849
+ "committing": "جارٍ الإيداع...",
850
+ "sync_error": "فشلت المزامنة",
851
+ "sync_now": "مزامنة الآن",
852
+ "not_installed": "Git غير مثبت"
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": "إدراج صورة",
907
+ "url_tab": "عنوان URL",
908
+ "file_tab": "ملف محلي",
909
+ "url_placeholder": "https://example.com/image.png",
910
+ "alt_placeholder": "وصف الصورة (اختياري)",
911
+ "select_file": "اختيار صورة...",
912
+ "no_file_selected": "لم يتم اختيار ملف",
913
+ "insert": "إدراج",
914
+ "cancel": "إلغاء"
915
+ },
916
+ "image_gen": {
917
+ "title": "توليد صور بالـ AI",
918
+ "step1_title": "وضع الصورة",
919
+ "step2_title": "توليد الصور",
920
+ "step3_title": "إدراج في المقال",
921
+ "generating_prompts": "جارٍ توليد الأوامر...",
922
+ "content_too_short": "محتوى المقال قصير جداً لتوليد الصور.",
923
+ "style_label": "النمط",
924
+ "count_label": "العدد",
925
+ "style_auto": "تلقائي",
926
+ "style_photo": "صورة فوتوغرافية",
927
+ "style_illustration": "رسم توضيحي",
928
+ "style_flat": "مسطح",
929
+ "style_ink": "حبر صيني",
930
+ "style_watercolor": "ألوان مائية",
931
+ "style_isometric": "إيزومتري",
932
+ "style_infographic": "إنفوجرافيك",
933
+ "style_editorial": "تحريري",
934
+ "style_cartoon": "كرتون",
935
+ "style_render": "تصيير ثلاثي الأبعاد",
936
+ "style_sketch": "رسم يدوي",
937
+ "style_blueprint": "مخطط هندسي",
938
+ "style_clay": "نموذج صلصال",
939
+ "style_wireframe": "إطار سلكي",
940
+ "style_exploded": "عرض مفكك",
941
+ "style_section": "مقطع عرضي",
942
+ "style_cad": "رسم CAD",
943
+ "style_prototype": "نموذج أولي",
944
+ "style_anime": "أنمي",
945
+ "style_comic": "قصص مصورة",
946
+ "style_cinematic": "سينمائي",
947
+ "style_pixel": "بكسل آرت",
948
+ "style_noir": "فيلم نوار",
949
+ "style_manga": "مانغا",
950
+ "style_realistic": "واقعي",
951
+ "style_studio": "استوديو",
952
+ "style_lifestyle": "نمط حياة",
953
+ "style_flatlay": "تصوير مسطح",
954
+ "style_macro": "ماكرو",
955
+ "style_minimalist": "بسيط",
956
+ "style_packaging": "تغليف",
957
+ "style_outdoor": "خارجي",
958
+ "style_mood": "مزاج",
959
+ "style_abstract": "تجريدي",
960
+ "style_texture": "ملمس",
961
+ "style_gradient": "تدرج",
962
+ "style_collage": "كولاج",
963
+ "style_vintage": "كلاسيكي",
964
+ "style_botanical": "نباتي",
965
+ "style_geometric": "هندسي",
966
+ "style_ethereal": "أثيري",
967
+ "style_brutalist": "بروتالي",
968
+ "generate": "توليد",
969
+ "next": "التالي",
970
+ "back": "السابق",
971
+ "insert_confirm": "إدراج",
972
+ "insert_paragraph": "إدراج بعد الفقرة المقابلة (مُوصى به)",
973
+ "insert_end": "إدراج في نهاية المقال",
974
+ "insert_replace": "استبدال الصور في المقال",
975
+ "insert_clipboard": "نسخ Markdown إلى الحافظة",
976
+ "selected": "{count} محدد",
977
+ "completed": "تم توليد الصور",
978
+ "step_description": "توليد رسومات توضيحية للمقال",
979
+ "mode_article": "مقال",
980
+ "mode_design": "تصميم",
981
+ "mode_storyboard": "لوح قصصي",
982
+ "mode_product": "منتج",
983
+ "mode_moodboard": "لوح مزاج",
984
+ "mode_portrait": "بورتريه",
985
+ "style_portrait": "بورتريه",
986
+ "style_headshot": "صورة رأس",
987
+ "style_fullbody": "كامل الجسم",
988
+ "style_fashion": "أزياء",
989
+ "style_street": "شارع",
990
+ "style_glamour": "غلامور",
991
+ "style_environmental": "بيئي",
992
+ "style_candid": "عفوي",
993
+ "style_group": "جماعي",
994
+ "pre_defined_detected": "تم اكتشاف {count} أمر(أوامر) محددة مسبقاً في المستند",
995
+ "use_predefined": "استخدام الأوامر المحددة مسبقاً"
996
+ },
997
+ "image_host": {
998
+ "title": "استضافة الصور",
999
+ "provider": "المزود",
1000
+ "smms": "SM.MS",
1001
+ "imgur": "Imgur",
1002
+ "github": "مستودع GitHub",
1003
+ "custom": "API مخصص",
1004
+ "api_token": "رمز API",
1005
+ "api_token_placeholder": "أدخل رمز API",
1006
+ "custom_endpoint": "نقطة نهاية الرفع",
1007
+ "custom_endpoint_placeholder": "https://your-api.com/upload",
1008
+ "custom_headers": "ترويسات مخصصة (JSON)",
1009
+ "custom_url_template": "قالب رابط النتيجة",
1010
+ "custom_url_template_placeholder": "https://example.com/i/{id}",
1011
+ "custom_url_template_hint": "العناصر النائبة: {id}، {storageKey}، {filename}، {url}. اتركه فارغًا لاكتشاف حقول URL تلقائيًا.",
1012
+ "github_repo_url": "عنوان URL للمستودع",
1013
+ "github_repo_url_placeholder": "https://github.com/user/images",
1014
+ "github_branch": "الفرع",
1015
+ "github_dir": "مجلد الصور",
1016
+ "github_token": "رمز الوصول الشخصي",
1017
+ "github_token_placeholder": "ghp_xxxxxxxxxxxx",
1018
+ "github_cdn": "تنسيق عنوان URL",
1019
+ "github_cdn_raw": "raw.githubusercontent.com",
1020
+ "github_cdn_jsdelivr": "jsDelivr CDN",
1021
+ "import_from_publish": "استيراد من هدف النشر",
1022
+ "auto_upload": "رفع الصور تلقائياً عند اللصق/الإسقاط",
1023
+ "test_upload": "اختبار الرفع",
1024
+ "test": "اختبار",
1025
+ "testing": "جارٍ الاختبار...",
1026
+ "success": "تم الرفع بنجاح!",
1027
+ "failed": "فشل الرفع",
1028
+ "add_target": "إضافة مضيف صور",
1029
+ "target_name": "الاسم",
1030
+ "target_name_placeholder": "مثال: CDN مدونتي",
1031
+ "settings_empty": "لم يتم تكوين أهداف استضافة الصور",
1032
+ "settings_hint": "أضف خدمة استضافة صور لتفعيل الرفع التلقائي.",
1033
+ "default": "الافتراضي",
1034
+ "set_default": "تعيين كافتراضي",
1035
+ "gitlab": "مستودع GitLab",
1036
+ "git_custom": "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",
1043
+ "group_git": "مستودع Git",
1044
+ "group_oss": "تخزين كائنات",
1045
+ "gitlab_repo_url": "عنوان URL للمستودع",
1046
+ "gitlab_branch": "الفرع",
1047
+ "gitlab_dir": "مجلد الصور",
1048
+ "gitlab_token": "رمز الوصول الشخصي",
1049
+ "gitlab_token_placeholder": "glpat-xxxxxxxxxxxx",
1050
+ "git_custom_repo_url": "عنوان URL للمستودع",
1051
+ "git_custom_branch": "الفرع",
1052
+ "git_custom_dir": "مجلد الصور",
1053
+ "git_custom_token": "رمز الوصول",
1054
+ "git_custom_token_placeholder": "أدخل الرمز",
1055
+ "oss_access_key": "مفتاح الوصول",
1056
+ "oss_access_key_placeholder": "أدخل معرف مفتاح الوصول",
1057
+ "oss_secret_key": "المفتاح السري",
1058
+ "oss_secret_key_placeholder": "أدخل المفتاح السري",
1059
+ "oss_bucket": "الحاوية",
1060
+ "oss_bucket_placeholder": "مثال: my-images-bucket",
1061
+ "oss_region": "المنطقة",
1062
+ "oss_region_placeholder": "مثال: cn-east-1، us-east-1",
1063
+ "select_region": "اختر المنطقة",
1064
+ "oss_endpoint": "نقطة نهاية مخصصة (اختياري)",
1065
+ "oss_endpoint_placeholder": "مثال: https://s3.custom.com",
1066
+ "oss_cdn_domain": "نطاق CDN (اختياري)",
1067
+ "oss_cdn_domain_placeholder": "مثال: https://cdn.example.com",
1068
+ "oss_path_prefix": "بادئة المسار (اختياري)",
1069
+ "oss_path_prefix_placeholder": "مثال: images/blog/",
1070
+ "required": "مطلوب",
1071
+ "qiniu_cdn_required": "يتطلب Qiniu نطاقاً للشبكة CDN لإنشاء روابط صور يمكن الوصول إليها.",
1072
+ "picora": "Picora",
1073
+ "picora_one_click": "استيراد بنقرة واحدة",
1074
+ "picora_import_title": "استيراد من Picora",
1075
+ "picora_import_hint": "افتح وحدة تحكم Picora وانقر \"استيراد إلى Moraya\" بجوار أي مفتاح API. أو أدخل المفتاح يدويًا أدناه.",
1076
+ "picora_open_console": "فتح وحدة تحكم Picora",
1077
+ "picora_manual_entry": "لدي مفتاح API بالفعل — إدخال يدوي",
1078
+ "picora_verifying": "جارٍ التحقق مع Picora…",
1079
+ "picora_verify_failed": "فشل التحقق. يرجى التحقق من الرمز والمحاولة مرة أخرى.",
1080
+ "picora_import_success": "تم استيراد Picora ({email})",
1081
+ "picora_featured_badge": "موصى به",
1082
+ "picora_api_url": "نقطة نهاية Picora",
1083
+ "picora_api_url_placeholder": "https://api.picora.me/v1/images",
1084
+ "picora_img_domain": "نطاق CDN",
1085
+ "picora_img_domain_placeholder": "https://media.picora.me",
1086
+ "picora_api_key": "مفتاح API",
1087
+ "picora_api_key_placeholder": "sk_live_...",
1088
+ "picora_user_email": "حساب Picora",
1089
+ "picora_token_preview": "معاينة الرمز",
1090
+ "picora_confirm_import": "تأكيد الاستيراد",
1091
+ "picora_import_invalid": "رابط الاستيراد غير صالح — يرجى المحاولة مرة أخرى من وحدة تحكم Picora.",
1092
+ "picora_verify": "تحقق",
1093
+ "picora_hero_desc": "موفر استضافة صور SaaS الخاص بنا · إعداد بنقرة واحدة في 5 دقائق",
1094
+ "other_providers": "خيارات أخرى",
1095
+ "picora_api_key_keychain": "محفوظ في سلسلة مفاتيح النظام · أدخل مفتاحًا جديدًا للاستبدال",
1096
+ "picora_key_migrated_toast": "تم نقل {count} مفتاح API لـ Picora إلى سلسلة مفاتيح النظام."
1097
+ },
1098
+ "image_menu": {
1099
+ "resize": "تغيير الحجم",
1100
+ "upload": "رفع إلى مضيف الصور",
1101
+ "edit_alt": "تعديل الوصف",
1102
+ "copy_url": "نسخ عنوان URL للصورة",
1103
+ "copy_image": "نسخ الصورة",
1104
+ "open_in_browser": "فتح الصورة في المتصفح",
1105
+ "save_as": "حفظ الصورة باسم...",
1106
+ "delete": "حذف الصورة",
1107
+ "original_size": "الحجم الأصلي"
1108
+ },
1109
+ "kb": {
1110
+ "index_all": "فهرسة جميع المستندات",
1111
+ "index_file": "فهرسة الملف",
1112
+ "indexing": "جارٍ الفهرسة...",
1113
+ "index_complete": "اكتملت الفهرسة",
1114
+ "search_placeholder": "البحث في قاعدة المعرفة...",
1115
+ "no_index": "لم يتم العثور على فهرس. انقر بزر الماوس الأيمن على قاعدة المعرفة لإنشاء فهرس.",
1116
+ "stale_index": "الفهرس قديم. تم تغيير {count} ملفات منذ آخر فهرسة.",
1117
+ "dimensions": "الأبعاد",
1118
+ "auto_index": "فهرسة تلقائية عند الحفظ",
1119
+ "provider": "مزود التضمين",
1120
+ "model": "نموذج التضمين",
1121
+ "delete_index": "حذف الفهرس",
1122
+ "reindex_all": "إعادة فهرسة الكل",
1123
+ "delete_confirm": "هل أنت متأكد أنك تريد حذف الفهرس؟",
1124
+ "use_same_as_ai": "استخدام نفس إعدادات محادثة الذكاء الاصطناعي",
1125
+ "online_model": "نموذج عبر الإنترنت",
1126
+ "dimension_warning": "الحد الأقصى لهذا النموذج: {max}. المستخدم: {actual}.",
1127
+ "status": {
1128
+ "indexed": "مفهرس ({chunks} أجزاء، {files} ملفات)",
1129
+ "not_indexed": "غير مفهرس",
1130
+ "stale": "{count} ملفات تم تغييرها"
1131
+ },
1132
+ "progress": {
1133
+ "scanning": "جارٍ مسح الملفات...",
1134
+ "chunking": "جارٍ تقسيم المستندات... ({current}/{total})",
1135
+ "embedding": "جارٍ إنشاء التضمينات... ({current}/{total})",
1136
+ "indexing": "جارٍ بناء الفهرس...",
1137
+ "done": "تم"
1138
+ },
1139
+ "provider_no_embedding": "مزود دردشة الذكاء الاصطناعي الحالي لا يدعم Embedding. يرجى اختيار مزود Embedding أعلاه.",
1140
+ "local_models": "النماذج المحلية",
1141
+ "download_model": "تحميل",
1142
+ "delete_model": "حذف النموذج",
1143
+ "select_local_model": "اختر نموذجاً محملاً",
1144
+ "no_local_models": "لا توجد نماذج محملة. حمّل نموذجاً أدناه.",
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": "ربط KB موجود بدلاً من ذلك"
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": "خطأ في المزامنة:"
1234
+ },
1235
+ "sync_now": "مزامنة الآن",
1236
+ "error": {
1237
+ "target_missing": "لم يتم العثور على حساب Picora — يرجى إعادة ربط قاعدة المعرفة هذه أو استعادة الحساب في الإعدادات."
1238
+ },
1239
+ "trash": {
1240
+ "title": "سلة المحذوفات",
1241
+ "toast_deleted": "حذف Picora {count} ملف(ات). تم النقل إلى سلة المحذوفات.",
1242
+ "view": "عرض",
1243
+ "restore_all": "استعادة الكل",
1244
+ "restore_success": "تم استعادة {count} ملف(ات).",
1245
+ "restore_failed": "تعذرت استعادة بعض الملفات.",
1246
+ "restore_conflict_title": "الملف موجود بالفعل",
1247
+ "restore_conflict_body": "{path} موجود بالفعل. هل تريد الكتابة فوقه؟",
1248
+ "overwrite": "الكتابة فوقه",
1249
+ "cancel": "إلغاء",
1250
+ "filter_kb_all": "كل قواعد المعرفة",
1251
+ "filter_time7d": "آخر 7 أيام",
1252
+ "filter_time30d": "آخر 30 يومًا",
1253
+ "filter_time_all": "كل الوقت",
1254
+ "empty_state": "سلة المحذوفات فارغة.",
1255
+ "loading": "جارٍ التحميل…",
1256
+ "restore": "استعادة",
1257
+ "delete_forever": "حذف نهائي",
1258
+ "delete_forever_confirm": "حذف {path} نهائيًا؟ لا يمكن التراجع عن هذا.",
1259
+ "purge_all": "إفراغ السلة",
1260
+ "purge_all_confirm": "إفراغ جميع العناصر الأقدم من {days} يوم؟",
1261
+ "purge_result": "تم تنظيف {files} ملف(ات)، تم تحرير {size}.",
1262
+ "auto_purge_hint": "العناصر الأقدم من 7 أيام تُحذف تلقائيًا.",
1263
+ "entry_deleted_at": "حُذف في {date}",
1264
+ "kb_unknown": "قاعدة معرفة غير معروفة"
1265
+ }
1266
+ },
1267
+ "knowledge_base": {
1268
+ "title": "قاعدة المعرفة",
1269
+ "add": "إضافة قاعدة معرفة",
1270
+ "remove": "إزالة",
1271
+ "rename": "إعادة تسمية",
1272
+ "manage": "إدارة قواعد المعرفة...",
1273
+ "empty": "لم يتم تكوين قواعد معرفة",
1274
+ "empty_hint": "أضف مجلداً كقاعدة معرفة للتبديل السريع.",
1275
+ "delete_confirm": "إزالة \"{name}\" من قواعد المعرفة؟ لن يتم حذف المجلد نفسه.",
1276
+ "switch_to": "التبديل إلى قاعدة المعرفة",
1277
+ "save_hint": "هذا المجلد ليس في قواعد المعرفة الخاصة بك.",
1278
+ "save_as_kb": "حفظ كقاعدة معرفة"
1279
+ },
1280
+ "link": {
1281
+ "open": "فتح الرابط",
1282
+ "remove": "إزالة الرابط"
1283
+ },
1284
+ "mcp": {
1285
+ "title": "MCP servers",
1286
+ "tabs": {
1287
+ "servers": "الخوادم",
1288
+ "publish": "النشر",
1289
+ "sync": "المزامنة",
1290
+ "marketplace": "السوق"
1291
+ },
1292
+ "ai_services": {
1293
+ "empty": "لا توجد خدمات أنشأها AI",
1294
+ "hint": "يمكن لـ AI إنشاء خدمات MCP أثناء المحادثة. اطلب منه التفاعل مع API!",
1295
+ "node_required": "مطلوب Node.js 18+",
1296
+ "checking_node": "جارٍ التحقق من Node.js...",
1297
+ "temp": "مؤقت",
1298
+ "saved": "محفوظ",
1299
+ "view_code": "الكود",
1300
+ "tools": "{count} أدوات",
1301
+ "service_created": "أنشأ AI الخدمة \"{name}\" مع {count} أدوات",
1302
+ "service_saved": "تم حفظ الخدمة \"{name}\"",
1303
+ "service_removed": "تم إزالة الخدمة \"{name}\"",
1304
+ "launch_confirm_title": "تحذير أمان خدمة AI",
1305
+ "launch_confirm_msg": "قام AI بإنشاء خدمة MCP تحتاج لتشغيل كود مُولَّد تلقائياً:\n الخدمة: {name}\n الأدوات: {tools}\n\nسيعمل هذا الكود في عملية Node.js محلية.\nيرجى التأكيد أنك تثق بكود هذه الخدمة المُولَّد بالـ AI.",
1306
+ "launch_confirm_ok": "تشغيل",
1307
+ "launch_confirm_cancel": "إلغاء"
1308
+ },
1309
+ "servers": {
1310
+ "empty": "لم يتم تكوين خوادم MCP",
1311
+ "local_mcp": "MCP محلي",
1312
+ "add_server": "إضافة خادم",
1313
+ "add_server_plus": "+ إضافة خادم",
1314
+ "connected": "متصل",
1315
+ "disconnected": "غير متصل",
1316
+ "server_name": "اسم الخادم",
1317
+ "server_url": "عنوان URL للخادم (مثال: http://localhost:3000/mcp)",
1318
+ "http": "HTTP",
1319
+ "sse": "SSE (أحداث مُرسَلة من الخادم)",
1320
+ "stdio": "stdio (عملية محلية)",
1321
+ "command": "الأمر",
1322
+ "command_placeholder": "الأمر (مثال: npx، node، python)",
1323
+ "args_placeholder": "الوسائط (مثال: -y @modelcontextprotocol/server-filesystem /path)",
1324
+ "env_placeholder": "ENV_KEY=value (واحد لكل سطر)",
1325
+ "presets": "MCP عن بُعد",
1326
+ "presets_hint": "إضافة خوادم MCP شائعة بنقرة واحدة",
1327
+ "preset_desc": {
1328
+ "filesystem": "قراءة وبحث وإدارة الملفات المحلية",
1329
+ "fetch": "جلب صفحات الويب وتحويلها إلى Markdown",
1330
+ "git": "قراءة وبحث مستودعات Git",
1331
+ "memory": "رسم بياني معرفي دائم لذاكرة AI",
1332
+ "puppeteer": "أتمتة المتصفح وكشط الويب",
1333
+ "sqlite": "استعلام وإدارة قواعد بيانات SQLite",
1334
+ "slack": "قراءة وبحث قنوات ورسائل Slack",
1335
+ "google_maps": "الترميز الجغرافي والاتجاهات وبحث الأماكن",
1336
+ "sequential_thinking": "التفكير التسلسلي وحل المشكلات",
1337
+ "everything": "بحث ملفات Windows عبر Everything"
1338
+ },
1339
+ "preset_env_title": "متغيرات البيئة",
1340
+ "preset_env_desc": {
1341
+ "slack_bot_token": "Slack Bot OAuth Token (xoxb-...)",
1342
+ "slack_team_id": "معرف فريق/مساحة عمل Slack (اختياري)",
1343
+ "google_maps_api_key": "مفتاح Google Maps API"
1344
+ },
1345
+ "preset_add": "إضافة وتوصيل",
1346
+ "form_mode": "نموذج",
1347
+ "json_mode": "JSON",
1348
+ "json_placeholder": "الصق تكوين JSON، مثال:\n{\n \"mcpServers\": {\n \"name\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \"@.../server-xxx\"]\n }\n }\n}",
1349
+ "json_no_config": "لم يتم العثور على تكوين خادم MCP صالح",
1350
+ "json_parse_error": "خطأ في التحليل",
1351
+ "launch_confirm_title": "تحذير أمني",
1352
+ "launch_confirm_msg": "على وشك تشغيل برنامج خارجي:\n الأمر: {command}\n الوسائط: {args}\n\nسيعمل خادم MCP هذا بصلاحيات المستخدم الخاص بك ويمكنه الوصول للملفات المحلية والشبكة.\nيرجى التأكيد أن خادم MCP هذا من مصدر موثوق.",
1353
+ "launch_confirm_ok": "تشغيل",
1354
+ "launch_confirm_cancel": "إلغاء",
1355
+ "auto_approve": "الموافقة التلقائية على تشغيل MCP",
1356
+ "auto_approve_hint": "تخطي تأكيد الأمان عند الاتصال بخوادم MCP وتشغيل الخدمات المُولَّدة بالـ AI. غير مُوصى به للمصادر غير الموثوقة.",
1357
+ "error_name_required": "اسم الخادم مطلوب",
1358
+ "error_command_required": "الأمر مطلوب",
1359
+ "error_url_required": "عنوان URL مطلوب"
1360
+ },
1361
+ "publish": {
1362
+ "empty": "لم يتم تكوين أهداف النشر",
1363
+ "hint": "قم بتوصيل خادم MCP بإمكانيات النشر أولاً.",
1364
+ "button": "نشر",
1365
+ "publishing": "جارٍ النشر...",
1366
+ "published": "تم النشر! {info}",
1367
+ "failed": "فشل: {message}",
1368
+ "error": "خطأ: {message}"
1369
+ },
1370
+ "sync": {
1371
+ "empty": "لا توجد تكوينات مزامنة",
1372
+ "hint": "قم بتوصيل خادم MCP أولاً، ثم أضف تكوين مزامنة.",
1373
+ "sync_now": "مزامنة الآن",
1374
+ "add_sync": "+ إضافة مزامنة",
1375
+ "name": "اسم التكوين",
1376
+ "server": "خادم MCP",
1377
+ "remote_path": "المسار البعيد",
1378
+ "local_path": "المسار المحلي",
1379
+ "direction": "الاتجاه",
1380
+ "push": "دفع (محلي ← بعيد)",
1381
+ "pull": "سحب (بعيد ← محلي)",
1382
+ "bidirectional": "ثنائي الاتجاه",
1383
+ "last_sync": "آخر مزامنة: {time}",
1384
+ "syncing": "جارٍ المزامنة...",
1385
+ "success": "اكتملت المزامنة",
1386
+ "error": "خطأ في المزامنة: {message}"
1387
+ },
1388
+ "marketplace": {
1389
+ "title": "السوق",
1390
+ "search": "البحث في خوادم MCP...",
1391
+ "source": "المصدر",
1392
+ "source_official": "رسمي",
1393
+ "source_lobehub": "LobeHub",
1394
+ "source_smithery": "Smithery",
1395
+ "install": "تثبيت",
1396
+ "install_and_connect": "تثبيت واتصال",
1397
+ "installing": "جارٍ التثبيت...",
1398
+ "installed": "مُثبَّت",
1399
+ "view_details": "التفاصيل",
1400
+ "load_more": "تحميل المزيد",
1401
+ "no_results": "لم يتم العثور على خوادم MCP",
1402
+ "network_error": "فشل التحميل، تحقق من الشبكة",
1403
+ "retry": "إعادة المحاولة",
1404
+ "env_vars": "متغيرات البيئة",
1405
+ "env_required": "(مطلوب)",
1406
+ "popularity": "استخدامات",
1407
+ "installs": "عمليات التثبيت / الاستخدامات",
1408
+ "verified": "موثق",
1409
+ "cancel": "إلغاء"
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": "ملف",
1557
+ "edit": "تحرير",
1558
+ "paragraph": "فقرة",
1559
+ "format": "تنسيق",
1560
+ "view": "عرض",
1561
+ "window": "نافذة",
1562
+ "help": "مساعدة",
1563
+ "new": "جديد",
1564
+ "new_window": "نافذة جديدة",
1565
+ "open": "فتح...",
1566
+ "save": "حفظ",
1567
+ "save_as": "حفظ باسم...",
1568
+ "export": "تصدير",
1569
+ "export_html": "HTML",
1570
+ "export_pdf": "PDF",
1571
+ "export_image": "صورة (PNG)",
1572
+ "export_doc": "Word (.doc)",
1573
+ "heading1": "عنوان 1",
1574
+ "heading2": "عنوان 2",
1575
+ "heading3": "عنوان 3",
1576
+ "heading4": "عنوان 4",
1577
+ "heading5": "عنوان 5",
1578
+ "heading6": "عنوان 6",
1579
+ "table": "جدول",
1580
+ "code_block": "كتلة برمجية",
1581
+ "math_block": "كتلة رياضية",
1582
+ "quote": "اقتباس",
1583
+ "bullet_list": "قائمة نقطية",
1584
+ "ordered_list": "قائمة مرقمة",
1585
+ "task_list": "قائمة المهام",
1586
+ "horizontal_rule": "خط أفقي",
1587
+ "bold": "غامق",
1588
+ "italic": "مائل",
1589
+ "strikethrough": "يتوسطه خط",
1590
+ "code": "كود",
1591
+ "link": "رابط",
1592
+ "image": "صورة",
1593
+ "visual_mode": "الوضع المرئي",
1594
+ "source_mode": "وضع المصدر",
1595
+ "split_mode": "الوضع المقسم",
1596
+ "toggle_sidebar": "إظهار/إخفاء الشريط الجانبي",
1597
+ "toggle_aipanel": "إظهار/إخفاء لوحة AI",
1598
+ "toggle_outline": "إظهار/إخفاء المخطط",
1599
+ "zoom_in": "تكبير",
1600
+ "zoom_out": "تصغير",
1601
+ "actual_size": "الحجم الفعلي",
1602
+ "find": "بحث",
1603
+ "replace": "استبدال",
1604
+ "changelog": "سجل التغييرات",
1605
+ "privacy_policy": "سياسة الخصوصية",
1606
+ "official_website": "الموقع الرسمي",
1607
+ "about_moraya": "حول Moraya",
1608
+ "feedback": "ملاحظات",
1609
+ "settings": "الإعدادات...",
1610
+ "version_info": "معلومات الإصدار",
1611
+ "workflow": "سير العمل",
1612
+ "seo_optimization": "تحسين SEO",
1613
+ "ai_image_generation": "توليد صور AI",
1614
+ "publish": "نشر",
1615
+ "mcp_tools": "أدوات MCP",
1616
+ "no_mcptools": "لا توجد أدوات MCP متصلة"
1617
+ },
1618
+ "mermaid": {
1619
+ "loading": "جارٍ تحميل المخطط...",
1620
+ "error": "فشل عرض المخطط",
1621
+ "edit": "تحرير",
1622
+ "preview": "معاينة",
1623
+ "empty": "مخطط فارغ"
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": "تم مسح المحادثة",
1713
+ "clear_undone": "تمت استعادة الرسائل",
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": "تم حذف الإعداد \"{name}\"",
1777
+ "preset_restored": "تمت استعادة الإعداد",
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": "تشغيل الإضافة",
2018
+ "run_action": "تشغيل",
2019
+ "invoking": "جارٍ التشغيل...",
2020
+ "success": "تم تطبيق الإضافة",
2021
+ "no_changes": "لا تغييرات",
2022
+ "no_plugins": "لا توجد إضافات قيد التشغيل"
2023
+ },
2024
+ "plugins": {
2025
+ "tabs": {
2026
+ "preset": "مدمج",
2027
+ "installed": "المُثبَّتة",
2028
+ "market": "السوق"
2029
+ },
2030
+ "installed": {
2031
+ "empty": "لم يتم تثبيت إضافات بعد."
2032
+ },
2033
+ "sandbox": {
2034
+ "label": "مستوى العزل",
2035
+ "sandbox": "معزول (JS)",
2036
+ "local": "محلي (بدون شبكة)",
2037
+ "system": "النظام (وصول للشبكة)"
2038
+ },
2039
+ "permissions": {
2040
+ "label": "الصلاحيات"
2041
+ },
2042
+ "market": {
2043
+ "search": "البحث في الإضافات...",
2044
+ "refresh": "تحديث",
2045
+ "cat_all": "الكل",
2046
+ "cached": "عرض نتائج مخزنة مؤقتاً",
2047
+ "loading": "جارٍ تحميل السوق...",
2048
+ "empty": "لم يتم العثور على إضافات",
2049
+ "install": "تثبيت",
2050
+ "installed": "مُثبَّت",
2051
+ "installing": "جارٍ التثبيت..."
2052
+ },
2053
+ "install": {
2054
+ "from_file": "تثبيت من ملف .zip",
2055
+ "url_placeholder": "رابط مستودع GitHub (https://github.com/…)",
2056
+ "validate": "استيراد",
2057
+ "confirm_url": "تثبيت الإضافة من عنوان URL؟",
2058
+ "author": "المؤلف",
2059
+ "permissions": "الصلاحيات",
2060
+ "no_permissions": "لا توجد صلاحيات",
2061
+ "fetching_release": "جارٍ جلب معلومات الإصدار...",
2062
+ "downloading": "جارٍ التنزيل..."
2063
+ },
2064
+ "verified": "موثق",
2065
+ "enable": "تفعيل",
2066
+ "disable": "تعطيل",
2067
+ "uninstall": "إلغاء التثبيت",
2068
+ "changelog": "سجل التغييرات",
2069
+ "view_source": "المصدر",
2070
+ "blacklisted": "محظور",
2071
+ "blacklist_warning": "تم حظر هذه الإضافة بسبب مشكلة أمنية. يرجى إلغاء تثبيتها.",
2072
+ "process_error": "تعطلت عملية الإضافة. قم بالتبديل لإعادة التشغيل.",
2073
+ "error": {
2074
+ "platform_not_supported": "لا يتوفر تنزيل لنظامك."
2075
+ },
2076
+ "preset": {
2077
+ "initializing": "جارٍ التحميل...",
2078
+ "download": "تنزيل",
2079
+ "retry": "إعادة المحاولة",
2080
+ "ready": "مُفعَّل",
2081
+ "downloading": "جارٍ التنزيل...",
2082
+ "loading": "جارٍ التحميل...",
2083
+ "error": "خطأ",
2084
+ "large_bundle": "حزمة كبيرة (>500 كيلوبايت) — قد يستغرق التنزيل بعض الوقت",
2085
+ "cancel": "إلغاء",
2086
+ "delete": "حذف"
2087
+ }
2088
+ },
2089
+ "publish": {
2090
+ "settings_empty": "لم يتم تكوين أهداف النشر",
2091
+ "settings_hint": "أضف مستودع GitHub أو نقطة نهاية API مخصصة لنشر مقالاتك.",
2092
+ "add_target": "إضافة هدف",
2093
+ "edit_target": "تعديل",
2094
+ "delete_target": "حذف",
2095
+ "test_connection": "اختبار الاتصال",
2096
+ "github": "مستودع GitHub",
2097
+ "custom_api": "API مخصص",
2098
+ "target_name": "الاسم",
2099
+ "target_name_placeholder": "مثال: مدونتي",
2100
+ "repo_url": "عنوان URL للمستودع",
2101
+ "repo_url_placeholder": "https://github.com/user/blog",
2102
+ "branch": "الفرع",
2103
+ "articles_dir": "مجلد المقالات",
2104
+ "articles_dir_placeholder": "content/posts/",
2105
+ "images_dir": "مجلد الصور",
2106
+ "images_dir_placeholder": "static/images/",
2107
+ "token": "رمز الوصول الشخصي",
2108
+ "token_placeholder": "ghp_xxxxxxxxxxxx",
2109
+ "front_matter_template": "قالب Front Matter",
2110
+ "endpoint": "نقطة نهاية API",
2111
+ "endpoint_placeholder": "https://api.example.com/articles",
2112
+ "method": "طريقة HTTP",
2113
+ "headers": "الترويسات (JSON)",
2114
+ "body_template": "قالب النص",
2115
+ "template_presets": "قوالب جاهزة",
2116
+ "preset_hugo": "Hugo",
2117
+ "preset_hexo": "Hexo",
2118
+ "preset_astro": "Astro",
2119
+ "preset_custom": "مخصص",
2120
+ "file_name_pattern": "نمط اسم الملف",
2121
+ "file_name_preset": "نمط الاسم الجاهز",
2122
+ "file_name_preview": "معاينة",
2123
+ "preset_simple": "بسيط (اسم الملف)",
2124
+ "preset_date_slug": "التاريخ + المعرف",
2125
+ "preset_date_filename": "التاريخ + اسم الملف",
2126
+ "preset_year_month": "السنة/الشهر/المعرف",
2127
+ "file_name_variables": "المتغيرات: {{date}}، {{year}}، {{month}}، {{day}}، {{slug}}، {{filename}}، {{title}}",
2128
+ "rss_section": "موجز RSS",
2129
+ "rss_enable": "توليد موجز RSS",
2130
+ "rss_enable_hint": "تحديث feed.xml تلقائياً عند النشر",
2131
+ "rss_feed_path": "مسار ملف الموجز",
2132
+ "rss_feed_path_placeholder": "feed.xml",
2133
+ "rss_site_url": "عنوان URL للموقع",
2134
+ "rss_site_url_placeholder": "https://myblog.com",
2135
+ "rss_feed_title": "عنوان الموجز",
2136
+ "rss_feed_title_placeholder": "مدونتي",
2137
+ "rss_feed_description": "وصف الموجز",
2138
+ "rss_feed_description_placeholder": "مقالات حول...",
2139
+ "rss_language": "اللغة",
2140
+ "rss_author_name": "المؤلف",
2141
+ "rss_author_name_placeholder": "محمد أحمد",
2142
+ "rss_max_items": "الحد الأقصى للعناصر في الموجز",
2143
+ "rss_include_full_content": "تضمين المحتوى الكامل للمقال في الموجز",
2144
+ "rss_feed_endpoint": "نقطة نهاية موجز RSS",
2145
+ "rss_feed_endpoint_placeholder": "https://api.example.com/rss",
2146
+ "rss_update_failed": "فشل تحديث موجز RSS",
2147
+ "progress_title": "جارٍ النشر...",
2148
+ "progress_publishing": "جارٍ الرفع...",
2149
+ "progress_rss": "جارٍ تحديث RSS...",
2150
+ "progress_done": "تم",
2151
+ "progress_failed": "فشل",
2152
+ "enable_seo": "تحسين SEO",
2153
+ "enable_seohint": "توليد العنوان والمقتطف والعلامات ووصف الميتا قبل النشر",
2154
+ "next_seo": "التالي: SEO →",
2155
+ "back_to_targets": "رجوع",
2156
+ "seo_no_provider": "لم يتم تكوين مزود AI. يرجى تكوين مزود AI في الإعدادات."
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": "المراجعات",
2199
+ "tab_label": "مراجعة",
2200
+ "no_reviews": "لا توجد مراجعات بعد",
2201
+ "no_reviews_hint": "حدد نصاً في المحرر واستخدم ⌘⇧R لإضافة مراجعة.",
2202
+ "not_git_bound": "غير مرتبط بمستودع Git",
2203
+ "not_git_bound_hint": "اربط قاعدة المعرفة بمستودع Git لاستخدام المراجعات التعاونية.",
2204
+ "bind_git_btn": "ربط مستودع Git",
2205
+ "open_count": "مفتوح",
2206
+ "resolved_count": "تم الحل",
2207
+ "add_review": "إضافة مراجعة",
2208
+ "reply": "رد",
2209
+ "resolve": "Resolve",
2210
+ "wontfix": "لن يُصلح",
2211
+ "reanchor": "إعادة التثبيت",
2212
+ "mark_resolved": "وضع علامة كمحلول",
2213
+ "resolved": "محلول",
2214
+ "wontfix_label": "لن يُصلح",
2215
+ "unanchored": "الموضع مفقود",
2216
+ "relocated": "تم نقل الموضع",
2217
+ "verified_prompt": "تغيّر المستند منذ آخر تحقق. هل تريد وضع علامة مراجعة؟",
2218
+ "mark_verified": "وضع علامة مراجعة",
2219
+ "lock_self": "أنت تحرر هذا الملف",
2220
+ "lock_other": "يحرر هذا الملف",
2221
+ "lock_expiry": "دقيقة متبقية",
2222
+ "view_readonly": "عرض للقراءة فقط",
2223
+ "force_unlock": "فرض فتح القفل",
2224
+ "select_text_first": "يرجى تحديد نص أولاً",
2225
+ "source_mode_limit_hint": "المراجعات متاحة فقط في الوضع المرئي",
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": "مطابقة الحالة",
2270
+ "replace": "Replace",
2271
+ "replace_all": "Replace All",
2272
+ "regex": "استخدام التعبيرات النمطية",
2273
+ "regex_error": "تعبير نمطي غير صالح",
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",
2346
+ "generating": "جارٍ تحليل المقال...",
2347
+ "titles": "عناوين مرشحة",
2348
+ "custom_title": "عنوان مخصص...",
2349
+ "excerpt": "المقتطف",
2350
+ "tags": "الوسوم",
2351
+ "add_tag": "إضافة وسم...",
2352
+ "slug": "معرف URL",
2353
+ "meta_description": "الوصف التعريفي",
2354
+ "regenerate": "إعادة التوليد",
2355
+ "apply": "تطبيق",
2356
+ "retry": "إعادة المحاولة",
2357
+ "content_too_short": "محتوى المقال قصير جداً لتحليل SEO.",
2358
+ "completed": "تم تحسين SEO",
2359
+ "step_description": "توليد العنوان والمقتطف والوسوم"
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": "عام",
2382
+ "editor": "المحرر",
2383
+ "appearance": "المظهر",
2384
+ "ai": "الدردشة",
2385
+ "image_ai": "نموذج الصور",
2386
+ "mcp": "MCP",
2387
+ "image": "استضافة الصور",
2388
+ "publish": "النشر",
2389
+ "voice": "نموذج الصوت",
2390
+ "knowledge_base": "قاعدة المعرفة",
2391
+ "plugins": "الإضافات",
2392
+ "kb_sync": "KB Sync",
2393
+ "picora": "Picora",
2394
+ "export": "تصدير",
2395
+ "shortcuts": "اختصارات"
2396
+ },
2397
+ "groups": {
2398
+ "general": "عام",
2399
+ "ai": "إعدادات الذكاء الاصطناعي",
2400
+ "extensions": "الإضافات",
2401
+ "knowledge_base": "قاعدة المعرفة",
2402
+ "picora": "Picora"
2403
+ },
2404
+ "language": {
2405
+ "label": "اللغة",
2406
+ "system": "اتباع النظام"
2407
+ },
2408
+ "theme": {
2409
+ "label": "السمة",
2410
+ "system": "اتباع النظام",
2411
+ "light": "فاتح",
2412
+ "dark": "داكن"
2413
+ },
2414
+ "appearance": {
2415
+ "theme_section": "السمة",
2416
+ "dark_mode_section": "الوضع الداكن",
2417
+ "font_section": "الخط",
2418
+ "separate_dark_theme": "استخدام سمة منفصلة للوضع الداكن",
2419
+ "dark_theme": "سمة الوضع الداكن",
2420
+ "dark_mode_label": "المظهر"
2421
+ },
2422
+ "font_size": {
2423
+ "label": "حجم الخط"
2424
+ },
2425
+ "auto_save": {
2426
+ "label": "الحفظ التلقائي",
2427
+ "interval": "فترة الحفظ التلقائي"
2428
+ },
2429
+ "remember_last_folder": "تذكر آخر مجلد مفتوح",
2430
+ "show_cloud_insert_entries": "إظهار خيارات إدراج الملفات السحابية",
2431
+ "show_cloud_insert_entries_desc": "إضافة خيارات 'إدراج صورة/صوت/فيديو سحابي' إلى قوائم التنسيق والنقر بزر الماوس الأيمن.",
2432
+ "rules_history_count": "إصدارات تاريخ MORAYA.md",
2433
+ "rules_history_count_hint": "عدد الإصدارات التاريخية المحفوظة لكل ملف قواعد (الافتراضي: 10)",
2434
+ "editor": {
2435
+ "line_width": "عرض سطر المحرر",
2436
+ "tab_size": "حجم المسافة البادئة",
2437
+ "show_line_numbers": "عرض أرقام الأسطر في وضع المصدر"
2438
+ },
2439
+ "tab_desc": {
2440
+ "image": "تكوين موفري التخزين السحابي لرفع الصور.",
2441
+ "publish": "قم بتكوين وجهات النشر لمستنداتك. انشر ملفات Markdown على GitHub Pages أو أنشئ خلاصات RSS أو أرسل إلى نقاط نهاية API مخصصة.",
2442
+ "export": "تكوين تصدير PDF — حجم الصفحة والهوامش والخطوط ومفاتيح المحتوى."
2443
+ },
2444
+ "version": "Moraya v{version}",
2445
+ "permissions": {
2446
+ "mcp_title": "صلاحيات MCP",
2447
+ "ai_title": "إعدادات AI",
2448
+ "ai_max_tokens": "الحد الأقصى لرموز الإخراج",
2449
+ "ai_max_tokens_hint": "الحد الأقصى لعدد الرموز التي يمكن أن يولدها AI لكل استجابة. القيم الأعلى تسمح باستجابات أطول واستدعاءات أدوات أكثر، لكنها تكلف أكثر.",
2450
+ "ai_tool_result_max_chars": "الحد الأقصى لأحرف نتيجة الأداة",
2451
+ "ai_tool_result_max_chars_hint": "الحد الأقصى للأحرف المحتفظ بها من كل نتيجة أداة MCP. القيم الأكبر تحافظ على تفاصيل أكثر لكنها تستهلك سياقاً أكثر.",
2452
+ "ai_max_tool_rounds": "الحد الأقصى لجولات استدعاء الأدوات",
2453
+ "ai_max_tool_rounds_hint": "الحد الأقصى لعدد جولات استدعاء الأدوات التي يمكن أن يقوم بها AI في دورة محادثة واحدة. قم بزيادته للمهام المعقدة متعددة الخطوات."
2454
+ },
2455
+ "voice": {
2456
+ "providers": "مزودو خدمة التعرف على الكلام",
2457
+ "add_provider": "إضافة مزود",
2458
+ "edit_provider": "تعديل المزود",
2459
+ "no_providers": "لم يتم تكوين أي مزود للتعرف على الكلام.",
2460
+ "provider": "المزود",
2461
+ "api_key": "مفتاح API",
2462
+ "api_key_optional": "اختياري لـ AWS (استخدم مفتاح الوصول بدلاً منه)",
2463
+ "aws_access_key": "معرف مفتاح وصول AWS",
2464
+ "aws_secret_key": "مفتاح AWS السري",
2465
+ "region": "المنطقة",
2466
+ "model": "النموذج",
2467
+ "model_placeholder": "أدخل اسم النموذج",
2468
+ "endpoint_id_placeholder": "أدخل معرف نقطة نهاية الاستدلال",
2469
+ "language": "اللغة",
2470
+ "lang_auto": "كشف تلقائي",
2471
+ "lang_multi": "متعدد اللغات",
2472
+ "base_url": "عنوان WebSocket مخصص",
2473
+ "test_connection": "اختبار الاتصال",
2474
+ "testing": "جارٍ الاختبار...",
2475
+ "test_ok": "متصل",
2476
+ "test_failed": "فشل الاتصال",
2477
+ "set_active": "تعيين كافتراضي",
2478
+ "active": "الافتراضي",
2479
+ "custom": "مخصص",
2480
+ "storage": "التخزين",
2481
+ "recording_backup_dir": "نسخ احتياطي للتسجيل",
2482
+ "recording_backup_hint": "حفظ التسجيلات الكاملة كملفات WAV بعد كل جلسة.",
2483
+ "voice_sync_dir": "مجلد مزامنة ملفات الصوت",
2484
+ "voice_sync_hint": "مزامنة ملفات الصوت عبر التخزين السحابي (مثل iCloud أو Dropbox). استخدم زر تغيير لاختيار مجلد — سيتم ترحيل الملفات الموجودة تلقائياً.",
2485
+ "sync_default": "بيانات التطبيق (افتراضي)",
2486
+ "disabled": "معطل",
2487
+ "migrating_profiles": "جارٍ الترحيل...",
2488
+ "migration_failed": "فشل الترحيل",
2489
+ "profiles": "ملفات تعريف الصوت",
2490
+ "no_profiles": "لا توجد ملفات تعريف صوتية بعد. يتم إنشاؤها تلقائياً بعد جلسات النسخ.",
2491
+ "naming": {
2492
+ "male": "ذكر {n}",
2493
+ "female": "أنثى {n}",
2494
+ "bystander": "متفرج {n}",
2495
+ "speaker": "متحدث {n}"
2496
+ },
2497
+ "providers_hint": "تكوين موفري الكلام لنسخ الصوت."
2498
+ },
2499
+ "image_host": {
2500
+ "picora": {
2501
+ "moved_hint": "تم نقل إعدادات Picora إلى علامة تبويب Picora.",
2502
+ "jump_to_tab": "انتقل إلى علامة تبويب Picora"
2503
+ },
2504
+ "subtitle_suffix": "الخيارات الخاصة بـ Picora موجودة في علامة تبويب Picora."
2505
+ },
2506
+ "picora": {
2507
+ "account": {
2508
+ "title": "حسابات Picora",
2509
+ "add": "إضافة حساب Picora",
2510
+ "add_first": "ابدأ الآن",
2511
+ "empty": "لا توجد حسابات Picora بعد. اربط حسابك لتفعيل إدراج الوسائط السحابية ومزامنة قاعدة المعرفة.",
2512
+ "set_default": "تعيين كافتراضي",
2513
+ "test": "اختبار الاتصال",
2514
+ "edit": "تعديل",
2515
+ "remove": "إزالة",
2516
+ "quota": "الحصة",
2517
+ "unknown_email": "(لا يوجد بريد)",
2518
+ "no_endpoint": "(لا يوجد endpoint)",
2519
+ "in_use": "مستخدم في {n}",
2520
+ "quota_loading": "تحميل الحصة…",
2521
+ "quota_unavailable": "الحصة غير متوفرة — اضغط ↻ لإعادة المحاولة",
2522
+ "data_point_na": "نقطة البيانات غير متوفرة",
2523
+ "needs_picora_v017": "يتطلب Picora v0.17.1+",
2524
+ "not_activated": "لم يتم تفعيل خطة Picora بعد.",
2525
+ "activate": "تفعيل الخطة",
2526
+ "remove_confirm_title": "إزالة حساب Picora",
2527
+ "remove_confirm_body": "على وشك الإزالة: {email}",
2528
+ "cascade_default": "هذا هو حساب Picora الافتراضي — سيتم اختيار افتراضي جديد تلقائياً.",
2529
+ "cascade_image_host": "هذا هو خادم الصور الافتراضي — سيتم مسح الافتراضي.",
2530
+ "cascade_kb_bindings": "سيتم إلغاء ربط {n} قواعد معرفية. البيانات السحابية محفوظة على Picora.",
2531
+ "cloud_data_preserved": "سيتم حذف الإعدادات المحلية فقط. البيانات السحابية على Picora محفوظة.",
2532
+ "confirm_remove": "إزالة"
2533
+ },
2534
+ "edit_title": "تعديل حساب Picora",
2535
+ "kb_sync": {
2536
+ "title": "مزامنة قاعدة المعرفة",
2537
+ "open_manager": "فتح إعدادات مزامنة KB",
2538
+ "empty": "لا توجد قواعد معرفية بعد.",
2539
+ "missing_target": "(الهدف مفقود)",
2540
+ "never": "لم تتم المزامنة أبداً",
2541
+ "error": "خطأ في المزامنة",
2542
+ "unbound_label": "غير مرتبط بـ Picora:",
2543
+ "bind_action": "ربط بالافتراضي"
2544
+ },
2545
+ "resources": {
2546
+ "title": "متصفح الموارد السحابية",
2547
+ "tabs": {
2548
+ "image": "الصور",
2549
+ "audio": "الصوت",
2550
+ "video": "الفيديو"
2551
+ }
2552
+ },
2553
+ "advanced": {
2554
+ "title": "متقدم",
2555
+ "img_domain": "نطاق الإدراج الافتراضي",
2556
+ "img_domain_hint": "يُستخدم كبادئة URL عامة عند إدراج صور Picora.",
2557
+ "rewrite_base64": "إعادة كتابة صور base64 في المستندات إلى Picora CDN عند التحميل",
2558
+ "sidebar_pin": "عرض اختصار Picora في الشريط الجانبي الرئيسي",
2559
+ "debug": "تمكين تسجيل التصحيح"
2560
+ },
2561
+ "banner": "علامة تبويب Picora جديدة. تم نقل جميع إعدادات Picora هنا؛ علامة تبويب الاستضافة ما زالت تعمل.",
2562
+ "banner_dismiss": "فهمت",
2563
+ "welcome": {
2564
+ "title": "مرحباً بك في Picora — منزل واحد لوسائطك",
2565
+ "body": "استضف الصور والصوت والفيديو ومستندات Markdown على حساب Picora الخاص بك. زامن قواعد المعرفة عبر الأجهزة وأدرج الأصول السحابية من المحرر بنقرة واحدة.",
2566
+ "one_click": "استيراد بنقرة واحدة (موصى به)",
2567
+ "manual": "إضافة يدوية",
2568
+ "or": "أو",
2569
+ "register": "ليس لديك حساب؟ سجل في Picora"
2570
+ },
2571
+ "quota": {
2572
+ "images": "الصور",
2573
+ "docs": "المستندات",
2574
+ "audio": "الصوت",
2575
+ "videos": "الفيديو",
2576
+ "kbs": "قواعد المعرفة"
2577
+ },
2578
+ "plan": {
2579
+ "none": "غير نشط",
2580
+ "trial": "تجريبي",
2581
+ "pro": "Pro",
2582
+ "pro_plus": "Pro+"
2583
+ }
2584
+ },
2585
+ "export": {
2586
+ "paper_size": "حجم الورق",
2587
+ "paper_a4": "A4",
2588
+ "paper_letter": "Letter",
2589
+ "paper_legal": "Legal",
2590
+ "paper_a3": "A3",
2591
+ "paper_a5": "A5",
2592
+ "orientation": "الاتجاه",
2593
+ "orientation_portrait": "عمودي",
2594
+ "orientation_landscape": "أفقي",
2595
+ "margins": "الهوامش (مم)",
2596
+ "margins_top": "أعلى",
2597
+ "margins_right": "يمين",
2598
+ "margins_bottom": "أسفل",
2599
+ "margins_left": "يسار",
2600
+ "header_footer": "الرأس والتذييل",
2601
+ "header_enabled": "تفعيل الرأس",
2602
+ "footer_enabled": "تفعيل التذييل",
2603
+ "template_hint": "العناصر النائبة: {title} {page} {total} {date}",
2604
+ "typography": "الطباعة",
2605
+ "font_family": "الخط",
2606
+ "font_family_placeholder": "الافتراضي",
2607
+ "font_size": "حجم الخط",
2608
+ "content": "المحتوى",
2609
+ "enable_highlight": "تلوين الكود",
2610
+ "enable_math": "الرياضيات (KaTeX)",
2611
+ "enable_mermaid": "مخططات Mermaid",
2612
+ "advanced": "متقدم",
2613
+ "auto_fallback": "العودة تلقائيًا إلى وضع التوافق عند الفشل",
2614
+ "auto_fallback_hint": "عند فشل مسار الطباعة الأصلي، أعد المحاولة باستخدام مسار canvas. عطّل لإظهار الأخطاء وترك المستخدم يعيد المحاولة يدويًا."
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 + Enter"
2843
+ },
2844
+ "enter_send": {
2845
+ "label": "Enter sends"
2846
+ },
2847
+ "default_badge": "افتراضي"
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": "تصدير PDF",
2868
+ "export_image": "تصدير صورة",
2869
+ "export_doc": "تصدير Word"
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": "اضغط أي تركيبة مفاتيح… (Esc للإلغاء)",
2919
+ "needs_modifier": "يلزم مفتاح تعديل واحد على الأقل (Cmd أو Ctrl أو Alt أو Shift)",
2920
+ "conflict": "مستخدم بالفعل بواسطة اختصار آخر",
2921
+ "save": "حفظ",
2922
+ "cancel": "إلغاء",
2923
+ "edit_hint": "انقر لتسجيل اختصار جديد",
2924
+ "reset_to_default": "إعادة التعيين إلى الافتراضي",
2925
+ "customized": "مخصص",
2926
+ "customized_short": "مخصص",
2927
+ "reset_conflict": "الإعداد الافتراضي يتعارض مع اختصار مخصص آخر — يرجى تغييره أولاً.",
2928
+ "sync_failed": "تعذر تحديث قائمة النظام",
2929
+ "sync_failed_short": "فشلت المزامنة",
2930
+ "unbound": "غير محدد",
2931
+ "reset_all": "إعادة تعيين الكل",
2932
+ "reset_all_hint": "استعادة جميع الاختصارات إلى الإعدادات الافتراضية",
2933
+ "reset_all_confirm": "إعادة تعيين جميع الاختصارات المخصصة البالغ عددها {count} إلى الإعدادات الافتراضية؟",
2934
+ "reset_short": "افتراضي"
2935
+ },
2936
+ "edit_hint": "نصيحة: الصفوف ذات الإطار المتقطع ورمز ✎ يمكن إعادة تسجيلها بالنقر على المفاتيح. الاختصارات الأخرى (🔒) تأتي من قائمة النظام ولا يمكن تخصيصها بعد.",
2937
+ "mcp": {
2938
+ "intro": "اربط اختصارات لوحة المفاتيح بخوادم MCP المثبتة والأدوات التي تكشف عنها.",
2939
+ "empty": "ثبّت خادم MCP أولاً من «الإعدادات → MCP» لربط الاختصارات.",
2940
+ "add_tool": "إضافة اختصار أداة MCP",
2941
+ "remove_tool": "إزالة اختصار أداة MCP هذا",
2942
+ "remove_tool_short": "إزالة",
2943
+ "remove_stale": "إزالة الربط المعطل",
2944
+ "remove_stale_short": "إزالة",
2945
+ "server_kind_short": "خادم",
2946
+ "server_kind_hint": "يبدل اتصال خادم MCP",
2947
+ "tool_kind_short": "أداة",
2948
+ "tool_kind_hint": "يفتح لوحة الذكاء الاصطناعي ويطلب من المساعد استخدام هذه الأداة",
2949
+ "stale_short": "غير متاح",
2950
+ "stale_hint": "خادم أو أداة MCP المرتبطة لم تعد مثبتة",
2951
+ "server_gone": "خادم MCP لم يعد مثبتاً",
2952
+ "unavailable": "أداة MCP غير متاحة",
2953
+ "toggled": {
2954
+ "on": "تم تفعيل {name}",
2955
+ "off": "تم تعطيل {name}"
2956
+ },
2957
+ "dialog": {
2958
+ "title": "إضافة اختصار أداة MCP",
2959
+ "server_label": "خادم MCP",
2960
+ "tool_label": "أداة",
2961
+ "tool_placeholder": "اختر أداة…",
2962
+ "no_tools_for_server": "هذا الخادم لا يحتوي على أدوات بعد — قم بالاتصال به من إعدادات MCP أولاً.",
2963
+ "duplicate_error": "اختصار لهذه الأداة موجود بالفعل.",
2964
+ "add": "إضافة",
2965
+ "cancel": "إلغاء"
2966
+ }
2967
+ }
2968
+ },
2969
+ "sidebar": {
2970
+ "title": "Sidebar",
2971
+ "open_folder": "فتح مجلد",
2972
+ "no_folder": "لا يوجد مجلد مفتوح",
2973
+ "create_kb": "إنشاء قاعدة معرفة",
2974
+ "empty_dir": "لا توجد ملفات في هذا المجلد",
2975
+ "kb_settings": "إعدادات قاعدة المعرفة",
2976
+ "tree_view": "عرض شجري",
2977
+ "list_view": "عرض قائمة",
2978
+ "search": "البحث في الملفات...",
2979
+ "context_menu": {
2980
+ "new_file": "ملف جديد",
2981
+ "new_folder": "مجلد جديد",
2982
+ "search_files": "بحث",
2983
+ "refresh": "تحديث",
2984
+ "rename": "إعادة تسمية",
2985
+ "duplicate": "إنشاء نسخة",
2986
+ "delete": "حذف",
2987
+ "copy_path": "نسخ المسار",
2988
+ "reveal_in_finder": "عرض في Finder",
2989
+ "reveal_in_explorer": "عرض في Explorer",
2990
+ "history_versions": "الإصدارات السابقة"
2991
+ },
2992
+ "history": {
2993
+ "title": "سجل الإصدارات",
2994
+ "empty": "لا توجد إصدارات محفوظة",
2995
+ "restore": "استعادة",
2996
+ "restore_confirm": "هل تريد استعادة هذا الإصدار؟ سيتم استبدال محتوى MORAYA.md الحالي."
2997
+ },
2998
+ "new_file_prompt": "أدخل اسم الملف",
2999
+ "new_folder_prompt": "أدخل اسم المجلد",
3000
+ "rename_prompt": "أدخل الاسم الجديد",
3001
+ "reserved_dir_title": "اسم محجوز",
3002
+ "reserved_dir_name": "\"images\" هو اسم دليل محجوز. الرجاء اختيار اسم آخر.",
3003
+ "delete_confirm": "هل أنت متأكد من حذف \"{name}\"؟ لا يمكن التراجع عن هذا الإجراء.",
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": "تنظيف صور القرص القديمة",
3036
+ "body": "تم اكتشاف صور قرص Moraya قديمة لا تزال مثبتة. يمكن أن يؤدي تركها مثبتة إلى ظهور عدة إصدارات في قائمة \"افتح باستخدام\". هل تريد إخراجها الآن؟",
3037
+ "eject_all": "إخراج الكل",
3038
+ "skip": "ليس الآن",
3039
+ "partial_failure": "تعذر إخراج بعض صور القرص:"
3040
+ },
3041
+ "statusbar": {
3042
+ "words": "كلمات",
3043
+ "characters": "أحرف",
3044
+ "format": "Markdown",
3045
+ "source_mode": "المصدر",
3046
+ "visual_mode": "مرئي",
3047
+ "split_mode": "مقسم",
3048
+ "publish_workflow": "سير عمل AI",
3049
+ "ai_tooltip": "AI"
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": "إدراج صف أعلاه",
3102
+ "insert_row_below": "إدراج صف أسفله",
3103
+ "delete_row": "حذف الصف",
3104
+ "insert_col_left": "إدراج عمود يساراً",
3105
+ "insert_col_right": "إدراج عمود يميناً",
3106
+ "delete_col": "حذف العمود",
3107
+ "align_left": "محاذاة لليسار",
3108
+ "align_center": "محاذاة للوسط",
3109
+ "align_right": "محاذاة لليمين",
3110
+ "copy_table": "نسخ الجدول",
3111
+ "format_table_source": "تنسيق مصدر الجدول",
3112
+ "delete_table": "حذف الجدول",
3113
+ "copied": "تم نسخ الجدول",
3114
+ "formatted_copied": "تم نسخ الجدول المنسق"
3115
+ },
3116
+ "tabs": {
3117
+ "external_change_title": "تم تعديل الملف خارجيًا",
3118
+ "external_change_msg": "تم تعديل \"{fileName}\" خارج Moraya.",
3119
+ "keep_local": "الاحتفاظ بالتغييرات المحلية",
3120
+ "load_from_disk": "تحميل من القرص",
3121
+ "unsaved_title": "تغييرات غير محفوظة",
3122
+ "unsaved_msg": "\"{fileName}\" يحتوي على تغييرات غير محفوظة.",
3123
+ "save": "حفظ",
3124
+ "discard": "تجاهل",
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": "مساعد AI",
3176
+ "search": "البحث في القوالب...",
3177
+ "back": "رجوع",
3178
+ "start": "بدء"
3179
+ },
3180
+ "my_templates": {
3181
+ "name": "قوالبي",
3182
+ "desc": "القوالب المخصصة التي قمت باستيرادها أو إنشائها"
3183
+ },
3184
+ "manage": {
3185
+ "title": "إدارة القوالب",
3186
+ "import": "استيراد قالب",
3187
+ "export": "تصدير القوالب",
3188
+ "manage": "إدارة القوالب",
3189
+ "delete": "حذف",
3190
+ "delete_confirm": "تأكيد الحذف؟",
3191
+ "import_success": "تم استيراد {count} قالب(قوالب)",
3192
+ "export_success": "تم تصدير القوالب بنجاح",
3193
+ "no_custom_templates": "لا توجد قوالب مخصصة بعد",
3194
+ "source_global": "عام",
3195
+ "source_kb": "قاعدة المعرفة",
3196
+ "invalid_format": "تنسيق قالب غير صالح",
3197
+ "select_templates": "حدد القوالب للتصدير"
3198
+ },
3199
+ "error": {
3200
+ "no_document": "يرجى كتابة بعض المحتوى أولاً",
3201
+ "no_selection": "يرجى تحديد بعض النص أولاً",
3202
+ "no_content": "يرجى كتابة بعض المحتوى أو تحديد نص أولاً"
3203
+ },
3204
+ "writing": {
3205
+ "name": "الكتابة",
3206
+ "desc": "كتابة وتحرير وتلخيص مدعوم بالـ AI",
3207
+ "free": {
3208
+ "name": "كتابة حرة",
3209
+ "desc": "أدخل موضوعاً ويقوم AI بتوليد المحتوى",
3210
+ "hint": "أدخل موضوعاً أو تعليمات للكتابة..."
3211
+ },
3212
+ "continue": {
3213
+ "name": "متابعة الكتابة",
3214
+ "desc": "المتابعة من نهاية المستند"
3215
+ },
3216
+ "outline": {
3217
+ "name": "إنشاء مخطط",
3218
+ "desc": "إنشاء مخطط للمقال",
3219
+ "hint": "أدخل موضوع المقال..."
3220
+ },
3221
+ "summarize": {
3222
+ "name": "تلخيص",
3223
+ "desc": "تلخيص النص المحدد أو المستند بالكامل"
3224
+ },
3225
+ "improve": {
3226
+ "name": "تحسين",
3227
+ "desc": "تحسين جودة الكتابة"
3228
+ },
3229
+ "simplify": {
3230
+ "name": "تبسيط",
3231
+ "desc": "تبسيط النص المعقد"
3232
+ },
3233
+ "expand": {
3234
+ "name": "توسيع",
3235
+ "desc": "إضافة المزيد من التفاصيل والشروحات"
3236
+ },
3237
+ "fix_grammar": {
3238
+ "name": "تصحيح القواعد",
3239
+ "desc": "تصحيح الأخطاء النحوية والإملائية"
3240
+ }
3241
+ },
3242
+ "translation": {
3243
+ "name": "الترجمة",
3244
+ "desc": "ترجمة متعددة اللغات وتوطين",
3245
+ "auto": {
3246
+ "name": "ترجمة ذكية",
3247
+ "desc": "كشف اللغة تلقائياً والترجمة"
3248
+ },
3249
+ "to_target": {
3250
+ "name": "ترجمة إلى...",
3251
+ "desc": "اختر اللغة المستهدفة وترجم"
3252
+ },
3253
+ "explain": {
3254
+ "name": "ترجمة وشرح",
3255
+ "desc": "ترجمة مع شرح كلمة بكلمة"
3256
+ },
3257
+ "polish": {
3258
+ "name": "توطين",
3259
+ "desc": "جعل الترجمات أكثر طبيعية"
3260
+ },
3261
+ "compare": {
3262
+ "name": "نسخ متعددة",
3263
+ "desc": "تقديم أنماط ترجمة متعددة"
3264
+ },
3265
+ "target_lang": "اللغة المستهدفة",
3266
+ "lang": {
3267
+ "en": "الإنجليزية",
3268
+ "zh_cn": "الصينية المبسطة",
3269
+ "zh_hant": "الصينية التقليدية",
3270
+ "ar": "العربية",
3271
+ "de": "الألمانية",
3272
+ "es": "الإسبانية",
3273
+ "fr": "الفرنسية",
3274
+ "hi": "الهندية",
3275
+ "ja": "اليابانية",
3276
+ "ko": "الكورية",
3277
+ "pt": "البرتغالية",
3278
+ "ru": "الروسية"
3279
+ }
3280
+ },
3281
+ "student": {
3282
+ "name": "مساعد الدراسة",
3283
+ "desc": "التعلم وتدوين الملاحظات وفهم المفاهيم",
3284
+ "explain": {
3285
+ "name": "شرح المفهوم",
3286
+ "desc": "شرح مفهوم بعبارات بسيطة",
3287
+ "hint": "أدخل مفهوماً لشرحه..."
3288
+ },
3289
+ "notes": {
3290
+ "name": "ملاحظات دراسية",
3291
+ "desc": "تنظيم المحتوى في ملاحظات منظمة"
3292
+ },
3293
+ "flashcard": {
3294
+ "name": "بطاقات تعليمية",
3295
+ "desc": "استخراج بطاقات سؤال وجواب من المحتوى"
3296
+ },
3297
+ "mindmap": {
3298
+ "name": "خريطة ذهنية",
3299
+ "desc": "إنشاء خريطة ذهنية بتنسيق Markdown"
3300
+ },
3301
+ "essay_outline": {
3302
+ "name": "مخطط المقال",
3303
+ "desc": "إنشاء مخطط للمقال",
3304
+ "hint": "أدخل موضوع المقال..."
3305
+ },
3306
+ "reading": {
3307
+ "name": "تحليل القراءة",
3308
+ "desc": "تحليل معمق لمحتوى النص"
3309
+ },
3310
+ "formula": {
3311
+ "name": "اشتقاق الصيغة",
3312
+ "desc": "عرض خطوات اشتقاق الصيغ الرياضية",
3313
+ "hint": "أدخل اسم الصيغة أو محتواها..."
3314
+ },
3315
+ "compare": {
3316
+ "name": "مقارنة المفاهيم",
3317
+ "desc": "مقارنة مفهومين جنباً إلى جنب",
3318
+ "hint": "أدخل مفهومين (مثال: TCP مقابل UDP)..."
3319
+ }
3320
+ },
3321
+ "kids": {
3322
+ "name": "تعلم الأطفال",
3323
+ "desc": "قصص وتعلم ممتع وألعاب تفاعلية",
3324
+ "story": {
3325
+ "name": "قصة أطفال",
3326
+ "desc": "توليد قصة من كلمات مفتاحية",
3327
+ "hint": "أدخل كلمات مفتاحية للقصة (مثال: أرنب غابة مغامرة)..."
3328
+ },
3329
+ "poem": {
3330
+ "name": "أنشودة أطفال",
3331
+ "desc": "إنشاء أنشودة حول موضوع",
3332
+ "hint": "أدخل موضوعاً..."
3333
+ },
3334
+ "why": {
3335
+ "name": "لماذا؟ لماذا؟ لماذا؟",
3336
+ "desc": "AI يجيب على أسئلة 'لماذا' اللانهائية"
3337
+ },
3338
+ "alphabet": {
3339
+ "name": "متعة الأبجدية",
3340
+ "desc": "تعلم تفاعلي للحروف"
3341
+ },
3342
+ "math_game": {
3343
+ "name": "لعبة الحساب",
3344
+ "desc": "حساب تفاعلي ممتع"
3345
+ },
3346
+ "riddle": {
3347
+ "name": "ألغاز",
3348
+ "desc": "AI يطرح ألغازاً للأطفال لحلها"
3349
+ },
3350
+ "draw_text": {
3351
+ "name": "حديث الصورة",
3352
+ "desc": "صف مشهداً وAI يكتب قصة",
3353
+ "hint": "صف مشهداً..."
3354
+ },
3355
+ "knowledge": {
3356
+ "name": "حقائق ممتعة",
3357
+ "desc": "موسوعة الطبيعة والعلوم والحيوانات"
3358
+ }
3359
+ },
3360
+ "marketing": {
3361
+ "name": "التسويق",
3362
+ "desc": "وسائل التواصل الاجتماعي والإعلانات وكتابة SEO",
3363
+ "xiaohongshu": {
3364
+ "name": "منشور Xiaohongshu",
3365
+ "desc": "توليد منشور بنمط المراجعات",
3366
+ "hint": "أدخل المنتج أو الموضوع..."
3367
+ },
3368
+ "twitter": {
3369
+ "name": "منشور Twitter/X",
3370
+ "desc": "توليد محتوى بنمط التغريدات",
3371
+ "hint": "أدخل الموضوع..."
3372
+ },
3373
+ "slogan": {
3374
+ "name": "شعار إعلاني",
3375
+ "desc": "توليد شعارات جذابة للعلامة التجارية",
3376
+ "hint": "أدخل العلامة التجارية أو المنتج..."
3377
+ },
3378
+ "email": {
3379
+ "name": "بريد تسويقي",
3380
+ "desc": "تكوين الجمهور والنبرة للبريد الإلكتروني",
3381
+ "hint": "صف محتوى البريد الإلكتروني..."
3382
+ },
3383
+ "seo_article": {
3384
+ "name": "مقال SEO",
3385
+ "desc": "توليد محتوى محسّن لـ SEO",
3386
+ "hint": "أدخل الكلمات المفتاحية المستهدفة..."
3387
+ },
3388
+ "product_desc": {
3389
+ "name": "وصف المنتج",
3390
+ "desc": "توليد نص منتج مقنع",
3391
+ "hint": "أدخل معلومات المنتج..."
3392
+ },
3393
+ "tone": "النبرة",
3394
+ "tone.formal": "رسمي",
3395
+ "tone.friendly": "ودود",
3396
+ "tone.urgent": "عاجل",
3397
+ "tone.humorous": "فكاهي"
3398
+ },
3399
+ "professional": {
3400
+ "name": "مهني",
3401
+ "desc": "رسائل بريد وتقارير ومحاضر اجتماعات",
3402
+ "email": {
3403
+ "name": "بريد عمل",
3404
+ "desc": "تكوين السيناريو والنبرة للبريد الإلكتروني",
3405
+ "hint": "صف محتوى البريد الإلكتروني..."
3406
+ },
3407
+ "meeting": {
3408
+ "name": "محاضر الاجتماعات",
3409
+ "desc": "تنظيم الملاحظات في محاضر رسمية"
3410
+ },
3411
+ "report": {
3412
+ "name": "تقرير العمل",
3413
+ "desc": "توليد تقرير أسبوعي/شهري/ربع سنوي",
3414
+ "hint": "أدخل النقاط الرئيسية للتقرير..."
3415
+ },
3416
+ "review": {
3417
+ "name": "مراجعة الكود",
3418
+ "desc": "مراجعة الكود واقتراح تحسينات"
3419
+ },
3420
+ "resume": {
3421
+ "name": "تحسين السيرة الذاتية",
3422
+ "desc": "تحسين السيرة الذاتية بطريقة STAR"
3423
+ },
3424
+ "prd": {
3425
+ "name": "مستند PRD",
3426
+ "desc": "توليد مستند متطلبات المنتج",
3427
+ "hint": "أدخل وصف الميزة..."
3428
+ },
3429
+ "tone": "النبرة",
3430
+ "tone.concise": "موجز",
3431
+ "report_type": "نوع التقرير",
3432
+ "report_type.weekly": "أسبوعي",
3433
+ "report_type.monthly": "شهري",
3434
+ "report_type.quarterly": "ربع سنوي"
3435
+ },
3436
+ "personal": {
3437
+ "name": "التطور الشخصي",
3438
+ "desc": "التدوين والأهداف واتخاذ القرارات",
3439
+ "journal": {
3440
+ "name": "مساعد اليوميات",
3441
+ "desc": "كتابة يوميات موجهة وتأمل",
3442
+ "hint": "ماذا حدث اليوم؟..."
3443
+ },
3444
+ "goal": {
3445
+ "name": "تقسيم الأهداف",
3446
+ "desc": "تقسيم الأهداف إلى خطوات قابلة للتنفيذ",
3447
+ "hint": "أدخل هدفك..."
3448
+ },
3449
+ "habit": {
3450
+ "name": "بناء العادات",
3451
+ "desc": "إنشاء خطة لبناء العادات",
3452
+ "hint": "أدخل العادة التي تريد بناءها..."
3453
+ },
3454
+ "decision": {
3455
+ "name": "تحليل القرار",
3456
+ "desc": "تحليل الإيجابيات والسلبيات للقرارات",
3457
+ "hint": "صف خياراتك..."
3458
+ },
3459
+ "book_notes": {
3460
+ "name": "ملاحظات القراءة",
3461
+ "desc": "تنظيم المحتوى في ملاحظات قراءة"
3462
+ }
3463
+ },
3464
+ "games_cn": {
3465
+ "name": "ألعاب صينية",
3466
+ "desc": "ألعاب الشعر وسلاسل الأمثال والألغاز",
3467
+ "feihualing": {
3468
+ "name": "飞花令",
3469
+ "desc": "تحدي الشعر: تناوب في إلقاء أبيات شعرية تحتوي على حرف معين"
3470
+ },
3471
+ "chengyu_chain": {
3472
+ "name": "成语接龙",
3473
+ "desc": "سلسلة الأمثال الصينية: ربط الأمثال بالحرف الأخير/الأول"
3474
+ },
3475
+ "riddle": {
3476
+ "name": "猜谜语",
3477
+ "desc": "AI يعطي أدلة وأنت تخمن الإجابة"
3478
+ },
3479
+ "lantern_riddle": {
3480
+ "name": "猜灯谜",
3481
+ "desc": "ألغاز الحروف الصينية"
3482
+ },
3483
+ "poetry_fill": {
3484
+ "name": "诗词填空",
3485
+ "desc": "املأ الكلمات الناقصة من القصائد"
3486
+ },
3487
+ "story_chain": {
3488
+ "name": "故事接龙",
3489
+ "desc": "تناوب في متابعة القصة"
3490
+ },
3491
+ "character_game": {
3492
+ "name": "猜字游戏",
3493
+ "desc": "خمن الحرف الصيني من الأدلة"
3494
+ },
3495
+ "brain_teaser": {
3496
+ "name": "脑筋急转弯",
3497
+ "desc": "ألغاز ذكاء ممتعة"
3498
+ },
3499
+ "couplet": {
3500
+ "name": "对联",
3501
+ "desc": "AI يعطي السطر الأول وأنت تكمله"
3502
+ },
3503
+ "word_explain": {
3504
+ "name": "你说我猜",
3505
+ "desc": "AI يصف وأنت تخمن الكلمة"
3506
+ },
3507
+ "ancient_text": {
3508
+ "name": "文言文翻译",
3509
+ "desc": "ترجمة النص الكلاسيكي إلى الصينية الحديثة"
3510
+ },
3511
+ "homophone": {
3512
+ "name": "谐音梗",
3513
+ "desc": "تحدي التلاعب بالألفاظ المتشابهة"
3514
+ }
3515
+ },
3516
+ "games_en": {
3517
+ "name": "ألعاب إنجليزية",
3518
+ "desc": "سلسلة الكلمات، Hangman، أسئلة ثقافية والمزيد",
3519
+ "word_chain": {
3520
+ "name": "Word Chain",
3521
+ "desc": "الحرف الأخير يبدأ الكلمة التالية"
3522
+ },
3523
+ "twenty_questions": {
3524
+ "name": "20 Questions",
3525
+ "desc": "خمن الشيء في 20 سؤال نعم/لا"
3526
+ },
3527
+ "hangman": {
3528
+ "name": "Hangman",
3529
+ "desc": "خمن الكلمة حرفاً بحرف"
3530
+ },
3531
+ "story_builder": {
3532
+ "name": "Story Builder",
3533
+ "desc": "تناوب في بناء قصة"
3534
+ },
3535
+ "word_association": {
3536
+ "name": "Word Association",
3537
+ "desc": "سلسلة تداعي الكلمات الحر"
3538
+ },
3539
+ "riddles": {
3540
+ "name": "Riddles",
3541
+ "desc": "حل الألغاز الإنجليزية"
3542
+ },
3543
+ "trivia": {
3544
+ "name": "Trivia Quiz",
3545
+ "desc": "أسئلة معرفة عامة"
3546
+ },
3547
+ "rhyme_time": {
3548
+ "name": "Rhyme Time",
3549
+ "desc": "إنشاء قصص بكلمات مقفاة"
3550
+ },
3551
+ "acronym": {
3552
+ "name": "Acronym Game",
3553
+ "desc": "ابتكر معاني لاختصارات عشوائية"
3554
+ },
3555
+ "taboo": {
3556
+ "name": "Taboo",
3557
+ "desc": "صف دون استخدام الكلمات المحظورة"
3558
+ },
3559
+ "sentence_builder": {
3560
+ "name": "Sentence Builder",
3561
+ "desc": "كوّن أطول جملة بكلمات محددة"
3562
+ },
3563
+ "emoji_story": {
3564
+ "name": "Emoji Story",
3565
+ "desc": "احكِ قصصاً باستخدام الرموز التعبيرية"
3566
+ }
3567
+ },
3568
+ "quiz": {
3569
+ "name": "اختبار وتمرين",
3570
+ "desc": "أسئلة مُولَّدة بالـ AI مع تقييم",
3571
+ "practice": {
3572
+ "name": "اختبار شامل",
3573
+ "desc": "اختر المادة والصعوبة وAI يختبرك"
3574
+ },
3575
+ "direction": "المادة",
3576
+ "dir": {
3577
+ "programming": "البرمجة",
3578
+ "math": "الرياضيات",
3579
+ "english": "الإنجليزية",
3580
+ "science": "العلوم",
3581
+ "history": "التاريخ",
3582
+ "interview": "التحضير للمقابلات",
3583
+ "custom": "مادة مخصصة"
3584
+ },
3585
+ "difficulty": "الصعوبة",
3586
+ "diff": {
3587
+ "easy": "سهل",
3588
+ "medium": "متوسط",
3589
+ "hard": "صعب"
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": "غير محفوظ",
3620
+ "minimize": "تصغير",
3621
+ "maximize": "تكبير",
3622
+ "close": "إغلاق",
3623
+ "new_file": "ملف جديد",
3624
+ "open_file": "فتح ملف..."
3625
+ },
3626
+ "transcription": {
3627
+ "title": "التفريغ النصي",
3628
+ "recording": "تسجيل",
3629
+ "connecting": "جارٍ الاتصال...",
3630
+ "paused": "متوقف مؤقتاً",
3631
+ "stopping": "جارٍ الإيقاف...",
3632
+ "idle": "جاهز",
3633
+ "start": "بدء",
3634
+ "stop": "إيقاف",
3635
+ "pause": "إيقاف مؤقت",
3636
+ "resume": "استئناف",
3637
+ "back": "العودة للمحادثة",
3638
+ "empty_idle": "انقر بدء لبدء التسجيل والتفريغ النصي.",
3639
+ "empty_waiting": "في انتظار الكلام...",
3640
+ "summarize_with_ai": "تلخيص بالـ AI",
3641
+ "save_as_doc": "حفظ كمستند",
3642
+ "summarize_prompt": "يرجى توليد ملخص اجتماع من النص التالي. حدد نقاط النقاش الرئيسية والقرارات المتخذة وبنود العمل. قم بالتنسيق كـ Markdown.",
3643
+ "no_speech_config": "لم يتم تكوين مزود التعرف على الكلام. يرجى إضافة واحد في الإعدادات ← الصوت.",
3644
+ "no_speech_config_hint": "اذهب إلى الإعدادات ← الصوت لإضافة مزود للتعرف على الكلام (مثال: Deepgram).",
3645
+ "go_to_voice_settings": "فتح إعدادات الصوت"
3646
+ },
3647
+ "update": {
3648
+ "title": "معلومات الإصدار",
3649
+ "current_version": "الإصدار الحالي",
3650
+ "latest_version": "أحدث إصدار",
3651
+ "checking": "جارٍ التحقق من التحديثات...",
3652
+ "up_to_date": "أنت تستخدم أحدث إصدار!",
3653
+ "check_failed": "فشل التحقق من التحديثات",
3654
+ "release_notes": "ما الجديد",
3655
+ "no_asset": "لا يتوفر مثبت لنظامك. يرجى التنزيل يدوياً.",
3656
+ "upgrade": "ترقية",
3657
+ "retry": "إعادة المحاولة",
3658
+ "view_release": "عرض الإصدار",
3659
+ "downloading": "جارٍ التنزيل...",
3660
+ "download_failed": "فشل التنزيل",
3661
+ "install_launched": "تم تشغيل المثبت. سيتم إغلاق Moraya قريباً.",
3662
+ "new_version_available": "يتوفر إصدار جديد! انقر للترقية."
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": "مرحباً بك في Moraya",
3696
+ "subtitle": "محرر Markdown بسيط وجاهز للـ AI.",
3697
+ "features_title": "الميزات",
3698
+ "feature_wysiwyg": "تحرير Markdown بنمط **WYSIWYG**",
3699
+ "feature_math": "دعم الصيغ الرياضية: $E = mc^2$",
3700
+ "feature_themes": "سمات داكنة وفاتحة",
3701
+ "feature_ai": "مساعد كتابة مدعوم بالـ AI",
3702
+ "feature_mcp": "بروتوكول MCP للنشر والمزامنة",
3703
+ "feature_lightweight": "خفيف الوزن (~5MB مثبت)",
3704
+ "math_title": "مثال رياضي",
3705
+ "code_title": "مثال برمجي",
3706
+ "table_title": "مثال جدول",
3707
+ "table_feature": "الميزة",
3708
+ "table_status": "الحالة",
3709
+ "table_done": "مكتمل",
3710
+ "start_writing": "ابدأ كتابة أفكارك هنا...",
3711
+ "tip": "**نصيحة:** اضغط `Cmd+I` لإظهار/إخفاء لوحة مساعد AI.",
3712
+ "shortcuts_title": "اختصارات لوحة المفاتيح",
3713
+ "shortcut_save": "`Cmd+S` — حفظ المستند",
3714
+ "shortcut_open": "`Cmd+O` — فتح ملف",
3715
+ "shortcut_new": "`Cmd+N` — مستند جديد",
3716
+ "shortcut_toggle_mode": "`Cmd+/` — التبديل بين الوضع المرئي/المصدر",
3717
+ "shortcut_split_mode": "`Cmd+Shift+/` — التبديل إلى الوضع المقسم",
3718
+ "shortcut_sidebar": "`Cmd+\\` — إظهار/إخفاء الشريط الجانبي",
3719
+ "shortcut_settings": "`Cmd+,` — فتح الإعدادات",
3720
+ "shortcut_ai": "`Cmd+Shift+I` — إظهار/إخفاء لوحة AI",
3721
+ "shortcut_export": "`Cmd+Shift+E` — تصدير كـ HTML",
3722
+ "blockquote_title": "مثال اقتباس",
3723
+ "blockquote_content": "فن الكتابة هو فن اكتشاف ما تؤمن به. — غوستاف فلوبير",
3724
+ "advanced_math_title": "رياضيات متقدمة",
3725
+ "list_title": "مثال قائمة متداخلة",
3726
+ "list_item1": "البدء",
3727
+ "list_item1a": "تثبيت التطبيق",
3728
+ "list_item1b": "تكوين تفضيلاتك",
3729
+ "list_item1c": "ابدأ الكتابة",
3730
+ "list_item2": "الميزات المتقدمة",
3731
+ "list_item2a": "مساعدة كتابة مدعومة بالـ AI",
3732
+ "list_item2b": "تكامل بروتوكول MCP",
3733
+ "list_item2c": "تنسيقات تصدير متعددة",
3734
+ "list_item3": "التخصيص",
3735
+ "list_item3a": "السمات والمظهر",
3736
+ "list_item3b": "إعدادات المحرر",
3737
+ "list_item3c": "اختصارات لوحة المفاتيح",
3738
+ "paragraph_title": "حول Moraya",
3739
+ "paragraph1": "Moraya هو محرر Markdown حديث وخفيف الوزن مبني بـ Rust و Tauri. يجمع بين بساطة محرر النصوص وقوة واجهة WYSIWYG، مما يمنحك أفضل ما في العالمين.",
3740
+ "paragraph2": "اسم \"Moraya\" يأتي من دمج \"mora\" (لاتينية بمعنى \"لحظة\") مع \"ya\" (صينية بمعنى \"أناقة\")، رمزاً للحظات الأنيقة في الكتابة.",
3741
+ "paragraph3": "سواء كنت تكتب وثائق تقنية، أو مقالات مدونة، أو أوراق أكاديمية، أو ملاحظات شخصية، يوفر Moraya بيئة خالية من المشتتات تتيح لك التركيز على ما يهم أكثر — محتواك.",
3742
+ "hr_title": "الخطوط الأفقية",
3743
+ "hr_description": "يمكنك استخدام الخطوط الأفقية لفصل أقسام المستند المختلفة:"
3744
+ },
3745
+ "workflow": {
3746
+ "title": "سير عمل AI",
3747
+ "seo_step": "تحسين SEO",
3748
+ "image_gen_step": "صور AI",
3749
+ "publish_step": "نشر",
3750
+ "publish_desc": "الدفع إلى المنصات المستهدفة",
3751
+ "optional_above": "الخطوات أعلاه اختيارية",
3752
+ "select_targets": "اختر أهداف النشر",
3753
+ "confirm_publish": "نشر",
3754
+ "publishing": "جارٍ النشر...",
3755
+ "publish_success": "تم النشر بنجاح!",
3756
+ "publish_failed": "فشل النشر",
3757
+ "mcp_entry": "AI MCP",
3758
+ "mcp_server_count": "خدمات متصلة",
3759
+ "mcp_tool_count": "أدوات",
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
+ }