@nac3/forge-cli 1.0.77 → 1.0.79
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.
- package/dist/chat/ingest_session.d.ts +16 -0
- package/dist/chat/ingest_session.d.ts.map +1 -1
- package/dist/chat/ingest_session.js +34 -0
- package/dist/chat/ingest_session.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +238 -34
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +21 -1
- package/dist/chat/server.js.map +1 -1
- package/dist/core/file_tree.d.ts +2 -0
- package/dist/core/file_tree.d.ts.map +1 -1
- package/dist/core/file_tree.js +4 -2
- package/dist/core/file_tree.js.map +1 -1
- package/dist/core/forge_embed.d.ts.map +1 -1
- package/dist/core/forge_embed.js +7 -0
- package/dist/core/forge_embed.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/i18n/catalogs/ar.json +533 -525
- package/src/i18n/catalogs/de.json +533 -525
- package/src/i18n/catalogs/en.json +533 -525
- package/src/i18n/catalogs/es.json +533 -525
- package/src/i18n/catalogs/fr.json +533 -525
- package/src/i18n/catalogs/hi.json +533 -525
- package/src/i18n/catalogs/it.json +533 -525
- package/src/i18n/catalogs/ja.json +533 -525
- package/src/i18n/catalogs/pt.json +533 -525
- package/src/i18n/catalogs/zh.json +533 -525
|
@@ -1,527 +1,535 @@
|
|
|
1
|
-
{
|
|
2
|
-
"panel.brand": "Yujin Forge",
|
|
3
|
-
"panel.brand.kanji": "侑",
|
|
4
|
-
"panel.tagline": "مساعد تطوير صوتي أولاً",
|
|
5
|
-
"panel.input.placeholder": "اسأل Yujin",
|
|
6
|
-
"panel.button.send": "إرسال",
|
|
7
|
-
"panel.button.mic": "تحدث (اضغط مع الاستمرار)",
|
|
8
|
-
"panel.button.mic.recording": "اضغط لإيقاف التسجيل",
|
|
9
|
-
"panel.button.tts": "الصوت مفعل",
|
|
10
|
-
"panel.button.keys": "المفاتيح",
|
|
11
|
-
"panel.button.minimise": "تصغير",
|
|
12
|
-
"panel.button.maximise": "تكبير",
|
|
13
|
-
"panel.button.close": "إغلاق",
|
|
14
|
-
"panel.button.language": "اللغة",
|
|
15
|
-
"panel.trace.title": "سجل الإجراءات",
|
|
16
|
-
"panel.trace.count.one": "{n} استدعاء أداة",
|
|
17
|
-
"panel.trace.count.other": "{n} استدعاءات أدوات",
|
|
18
|
-
"panel.trace.empty.kanji": "空",
|
|
19
|
-
"panel.trace.empty.body": "يعرض Yujin Forge هنا كل أداة يستدعيها للرد عليك: قراءة البيان، البحث في SPEC، تحرير المكونات، قراءة المستندات. اطرح سؤالاً يتطلب الرجوع إليها.",
|
|
20
|
-
"panel.trace.badge.tool": "أداة",
|
|
21
|
-
"panel.trace.badge.voice": "صوت",
|
|
22
|
-
"panel.trace.badge.error": "خطأ",
|
|
23
|
-
"panel.stream.empty.kanji": "侑仁",
|
|
24
|
-
"panel.stream.empty.body": "Yujin Forge متصل. اطلب تغييرات على المشروع.",
|
|
25
|
-
"panel.status.no_audio": "لم يُلتقط أي صوت. ربما لم يستقبل الميكروفون شيئاً.",
|
|
26
|
-
"panel.status.did_not_catch": "لم أفهم. لنجرب مرة أخرى.",
|
|
27
|
-
"panel.status.mic_denied": "إذن الميكروفون مرفوض أو غير متاح: {error}",
|
|
28
|
-
"panel.status.voice_failed": "فشل الصوت: {error}",
|
|
29
|
-
"panel.status.voice_reply_failed": "تعذر تشغيل الرد: {error}",
|
|
30
|
-
"panel.status.audio_play_error": "تعذر تشغيل الصوت: {error}",
|
|
31
|
-
"panel.status.reading": "جارٍ قراءة {filename}...",
|
|
32
|
-
"panel.status.ingest_failed": "فشل الاستيعاب: {error}",
|
|
33
|
-
"panel.status.read_failed": "تعذرت قراءة المواصفات: {error}",
|
|
34
|
-
"panel.drop.title": "أفلت المواصفات هنا",
|
|
35
|
-
"panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
|
|
36
|
-
"panel.ingest.spec_attached": "تم إرفاق المواصفات: {filename}، {kb} KB",
|
|
37
|
-
"panel.ingest.read_label": "تمت القراءة.",
|
|
38
|
-
"panel.ingest.title_label": "العنوان: {title}",
|
|
39
|
-
"panel.ingest.no_title": "(بدون عنوان)",
|
|
40
|
-
"panel.ingest.format_label": "التنسيق: {format} / {sections} قسم / {kb} KB",
|
|
41
|
-
"panel.ingest.first_lines": "الأسطر الأولى:",
|
|
42
|
-
"panel.ingest.action_done": "اكتمل الإجراء {tool}.",
|
|
43
|
-
"vault.modal.title": "بيانات الاعتماد (الخزنة)",
|
|
44
|
-
"vault.modal.aria.close": "إغلاق نافذة بيانات الاعتماد",
|
|
45
|
-
"vault.tab.list": "الخانات المحملة",
|
|
46
|
-
"vault.tab.add": "إضافة",
|
|
47
|
-
"vault.list.loading": "جارٍ التحميل...",
|
|
48
|
-
"vault.list.empty": "لم تقم بتحميل أي مفتاح بعد. انقر على \"إضافة\" للبدء.",
|
|
49
|
-
"vault.add.slot_label": "اسم الخانة",
|
|
50
|
-
"vault.add.slot_hint": "أحرف صغيرة، أرقام، شرطة سفلية، واصلة. يجب أن يبدأ بحرف.",
|
|
51
|
-
"vault.add.value_label": "القيمة النصية (مخفية)",
|
|
52
|
-
"vault.add.value_hint": "تُعرض مرة واحدة فقط عند الحفظ. بعد ذلك يمكن استبدالها وليس قراءتها.",
|
|
53
|
-
"vault.add.button_save": "حفظ",
|
|
54
|
-
"vault.add.button_cancel": "إلغاء",
|
|
55
|
-
"vault.add.success": "تم حفظ الخانة {slot}.",
|
|
56
|
-
"vault.add.overwrite": "تم استبدال الخانة {slot}.",
|
|
57
|
-
"manual.intro": "Yujin Forge -- دليل المستخدم",
|
|
58
|
-
"manual.section.welcome": "مرحباً",
|
|
59
|
-
"manual.section.install": "التثبيت",
|
|
60
|
-
"manual.section.first_run": "التشغيل الأول",
|
|
61
|
-
"manual.section.voice": "الأوامر الصوتية",
|
|
62
|
-
"manual.section.spec_ingest": "استيعاب المواصفات",
|
|
63
|
-
"manual.section.troubleshooting": "حل المشكلات",
|
|
64
|
-
"manual.section.support": "الدعم",
|
|
65
|
-
"lang.name.es": "الإسبانية",
|
|
66
|
-
"lang.name.en": "الإنجليزية",
|
|
67
|
-
"lang.name.pt": "البرتغالية",
|
|
68
|
-
"lang.name.fr": "الفرنسية",
|
|
69
|
-
"lang.name.ja": "اليابانية",
|
|
70
|
-
"lang.name.zh": "الصينية",
|
|
71
|
-
"lang.name.hi": "الهندية",
|
|
72
|
-
"lang.name.ar": "العربية",
|
|
73
|
-
"lang.name.de": "الألمانية",
|
|
74
|
-
"lang.name.it": "الإيطالية",
|
|
75
|
-
"recap.fallback_period": ".",
|
|
76
|
-
"recap.empty": "لا يوجد ما يمكن تلخيصه بعد.",
|
|
77
|
-
"error_ui.severity.info": "معلومات",
|
|
78
|
-
"error_ui.severity.warning": "تحذير",
|
|
79
|
-
"error_ui.severity.error": "خطأ",
|
|
80
|
-
"error_ui.severity.fatal": "فادح",
|
|
81
|
-
"error_ui.label.what": "ماذا حدث",
|
|
82
|
-
"error_ui.label.why": "لماذا",
|
|
83
|
-
"error_ui.label.fix": "كيفية الإصلاح",
|
|
84
|
-
"error_ui.label.cmd": "الأمر",
|
|
85
|
-
"error_ui.label.docs": "الوثائق المحلية",
|
|
86
|
-
"error_ui.label.retry": "إعادة المحاولة في",
|
|
87
|
-
"error_ui.copy_btn": "نسخ الأمر",
|
|
88
|
-
"error_ui.unknown.what": "واجه Forge خطأ داخليا (رمز غير معروف).",
|
|
89
|
-
"error_ui.unknown.why": "الرمز {code} ليس في الكتالوج. هذا خطأ برمجي.",
|
|
90
|
-
"error_ui.unknown.fix": "افتح issue في https://github.com/yujinapp/yujin-forge/issues مع الرمز و traceback.",
|
|
91
|
-
"error.cap_frontier_exhausted.what": "نفد الحد الشهري لرموز طبقة frontier (نموذج كبير).",
|
|
92
|
-
"error.cap_frontier_exhausted.why": "خطتك {plan} تسمح بحد أقصى {cap} رمز/شهر على frontier. استخدمت {used}. يعاد الضبط في بداية الشهر UTC التالي.",
|
|
93
|
-
"error.cap_frontier_exhausted.fix": "انتقل إلى BYOK Anthropic مباشرة: يتجاوز الحد الشهري لـ worker. تصبح تكلفتك ما تتقاضاه Anthropic مباشرة.",
|
|
94
|
-
"error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
|
|
95
|
-
"error.cap_eco_exhausted.what": "نفد الحد الشهري لرموز طبقة eco (نموذج صغير).",
|
|
96
|
-
"error.cap_eco_exhausted.why": "خطتك {plan} تسمح بحد أقصى {cap} رمز/شهر على eco. استخدمت {used}. يعاد الضبط في بداية الشهر UTC التالي.",
|
|
97
|
-
"error.cap_eco_exhausted.fix": "انتقل إلى BYOK مباشرة أو قم بترقية الخطة. BYOK يتجاوز حد worker.",
|
|
98
|
-
"error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
|
|
99
|
-
"error.tier_not_in_plan.what": "الطبقة {tier} غير مفعلة على خطتك.",
|
|
100
|
-
"error.tier_not_in_plan.why": "خطتك {plan} لا تتضمن طبقة {tier}. ربما أنت على free-public أو انتهت صلاحية ترخيصك.",
|
|
101
|
-
"error.tier_not_in_plan.fix": "فعل ترخيصا مدفوعا أو انتقل إلى BYOK مباشرة (تكلفتك، دون حد worker).",
|
|
102
|
-
"error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
|
|
103
|
-
"error.response_truncated.what": "تم قطع استجابة النموذج قبل الانتهاء.",
|
|
104
|
-
"error.response_truncated.why": "تم الوصول إلى حد managed_max_tokens_per_turn = {limit} رمز في منتصف الدور. توقف النموذج عن التوليد.",
|
|
105
|
-
"error.response_truncated.fix": "ارفع الحد عبر yf limits. ينطبق على الدور التالي دون إعادة تشغيل الدردشة.",
|
|
106
|
-
"error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
|
|
107
|
-
"error.response_truncated.banner": "[الاستجابة مقتطعة بواسطة max_tokens={max}. ارفع الحد بـ: yf limits set managed_max_tokens_per_turn {suggested}]",
|
|
108
|
-
"error.modal_trace_stale.what": "انتهت صلاحية مودال الموافقة أو أصبح يتيما.",
|
|
109
|
-
"error.modal_trace_stale.why": "trace_id {trace_id} ليس له موافقة معلقة في dispatcher. ربما race condition بين invoke وحالة panel، أو ترك cancel سابق trace في حالة zombie.",
|
|
110
|
-
"error.modal_trace_stale.fix": "استدع verb من الدردشة مرة أخرى: يبدأ trace جديد نظيف. إذا استمر، شغل yf doctor لفحص panel.",
|
|
111
|
-
"error.modal_trace_stale.cmd": "yf doctor",
|
|
112
|
-
"error.byok_key_missing.what": "مفتاح API مفقود للمزود {provider}.",
|
|
113
|
-
"error.byok_key_missing.why": "لقد أعددت {provider} كمزود لطبقة {tier} لكن الفتحة byok_{slot} ليست في Vault المشفر.",
|
|
114
|
-
"error.byok_key_missing.fix": "كون المفتاح بـ yf keys set (ذري، mode 0600، لا يسجل أبدا).",
|
|
115
|
-
"error.byok_key_missing.cmd": "yf keys set {slot}",
|
|
116
|
-
"error.worker_unreachable.what": "لم أستطع الوصول إلى worker yujin.app.",
|
|
117
|
-
"error.worker_unreachable.why": "انتهاء مهلة الشبكة أو worker معطل (HTTP {status}). أعدت المحاولة {attempts} مرات.",
|
|
118
|
-
"error.worker_unreachable.fix": "افحص إنترنتك. إذا كان جيدا، انتقل مؤقتا إلى BYOK مباشرة لتجنب الاعتماد على worker.",
|
|
119
|
-
"error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
|
|
120
|
-
"error.vault_decrypt_failed.what": "لم أستطع فك تشفير مفتاح من Vault.",
|
|
121
|
-
"error.vault_decrypt_failed.why": "مفتاح master غير صحيح أو ملف Vault تالف. يمكن أن يحدث إذا نقلت config بين الأجهزة دون نقل master، أو بسبب disk error.",
|
|
122
|
-
"error.vault_decrypt_failed.fix": "اسحب نسخة الخادم (يعيد التشفير بـ master المحلي) إذا كان لديك server backup نشط.",
|
|
123
|
-
"error.vault_decrypt_failed.cmd": "yf keys setup --pull",
|
|
124
|
-
"error.shell_exec_rejected.what": "رفضت مودال R8 لـ yujin.shell.exec.",
|
|
125
|
-
"error.shell_exec_rejected.why": "تم تصنيف الأمر {command} على أنه {classification}. shell.exec يطلب الموافقة دائما للأمان، حتى لو كان الأمر read-only.",
|
|
126
|
-
"error.shell_exec_rejected.fix": "إذا كان الأمر read-only (yf projects active، git status، ls)، استخدم verb الأصلي المكافئ. إذا كان ضروريا ورفضته بالخطأ، استدعه مرة أخرى.",
|
|
127
|
-
"error.project_not_registered.what": "لا يوجد مشروع adopter مسجل.",
|
|
128
|
-
"error.project_not_registered.why": "يتطلب verb المستدعى project root نشط لكن ~/.yujin-forge/projects.json ليس به إدخالات.",
|
|
129
|
-
"error.project_not_registered.fix": "أنشئ واحدا بـ yujin.project.init أو سجل واحدا موجودا بـ yf projects add.",
|
|
130
|
-
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
-
"panel.button.agents": "الوكلاء",
|
|
132
|
-
"panel.agents.title": "الوكلاء",
|
|
133
|
-
"panel.agents.subtitle": "المدير والوكلاء الفرعيون المسجلون في هذا المشروع",
|
|
134
|
-
"panel.agents.empty.title": "لا يوجد وكلاء بعد",
|
|
135
|
-
"panel.agents.empty.body": "قم بتشغيل `yf agent install --defaults` لتسجيل المدير ووكلائه الفرعيين الأربعة (المحلل، المبرمج، المختبر، المُجهز).",
|
|
136
|
-
"panel.agents.legend.eco": "اقتصادي",
|
|
137
|
-
"panel.agents.legend.managed": "مُدار",
|
|
138
|
-
"panel.agents.legend.frontier": "حدود",
|
|
139
|
-
"panel.agents.status.disabled": "وقت تشغيل الوكلاء غير مُشغّل",
|
|
140
|
-
"panel.agents.event.running": "قيد التشغيل",
|
|
141
|
-
"panel.agents.event.idle": "خامل",
|
|
142
|
-
"panel.agents.tick.live": "متصل",
|
|
143
|
-
"panel.agents.tick.lost": "الاتصال مفقود",
|
|
144
|
-
"workflow.phase.i": "الفرز والنية",
|
|
145
|
-
"workflow.phase.ii": "التوضيح (الوظيفي + 4 NFR + الكتل)",
|
|
146
|
-
"workflow.phase.iii": "المواصفات (RFP + المعمارية + التصميم + الموافقات)",
|
|
147
|
-
"workflow.phase.iv": "التهيئة",
|
|
148
|
-
"workflow.phase.v": "تطوير الكتل",
|
|
149
|
-
"workflow.phase.vi": "النشر + ما بعد الإطلاق",
|
|
150
|
-
"wizard.title": "مرحبا بك في Yujin Forge",
|
|
151
|
-
"wizard.close": "إغلاق",
|
|
152
|
-
"wizard.intro": "للبدء، اختر كيف يتصل Forge بنموذج الذكاء الاصطناعي. يمكنك تغيير ذلك لاحقا من Settings.",
|
|
153
|
-
"wizard.back": "رجوع",
|
|
154
|
-
"wizard.start": "ابدأ",
|
|
155
|
-
"wizard.plan.badge": "موصى به",
|
|
156
|
-
"wizard.plan.title": "خطة Claude",
|
|
157
|
-
"wizard.plan.desc": "اشتراك Claude الشهري. الخيار الأكثر اقتصاديا للاستخدام المستمر. Forge يستخدم جلسة claude -p الخاصة بك.",
|
|
158
|
-
"wizard.plan.price": "رسم شهري ثابت (الخطة)",
|
|
159
|
-
"wizard.plan.step.title": "وصل خطة Claude الخاصة بك",
|
|
160
|
-
"wizard.plan.step.1": "افتح موجه أوامر جديد.",
|
|
161
|
-
"wizard.plan.step.2": "نفذ الأمر claude (بدون وسائط) وأكمل تسجيل الدخول في المتصفح.",
|
|
162
|
-
"wizard.plan.step.3": "عد إلى هنا واضغط أنا مسجل الدخول للتحقق.",
|
|
163
|
-
"wizard.plan.done": "أنا مسجل الدخول",
|
|
164
|
-
"wizard.byok.title": "مفتاح API الخاص بك (BYOK)",
|
|
165
|
-
"wizard.byok.desc": "مفتاحك الخاص من أي مزود (Anthropic، OpenAI، Google، DeepSeek...). الدفع حسب الاستخدام على حسابك.",
|
|
166
|
-
"wizard.byok.price": "دفع حسب الاستخدام (Console)",
|
|
167
|
-
"wizard.byok.step.title": "اختر مزودك والصق مفتاح API",
|
|
168
|
-
"wizard.byok.step.intro": "اختر المزود من القائمة والصق مفتاح API الخاص به. يخزنه Forge مشفرا في Vault المحلي؛ لا يغادر جهازك أبدا.",
|
|
169
|
-
"wizard.byok.test": "تحقق واحفظ",
|
|
170
|
-
"wizard.skip.title": "أنا بالفعل معد",
|
|
171
|
-
"wizard.skip.desc": "تخطي المعالج. يمكنك إعادة فتحه من Settings لاحقا.",
|
|
172
|
-
"wizard.done.kanji": "تم",
|
|
173
|
-
"wizard.done.title": "تم",
|
|
174
|
-
"wizard.done.msg": "Forge جاهز. ابدأ الدردشة.",
|
|
175
|
-
"pizarron.button.read": "اقرأ بصوت",
|
|
176
|
-
"pizarron.button.copy": "نسخ",
|
|
177
|
-
"pizarron.button.edit": "تحرير",
|
|
178
|
-
"pizarron.graph.refresh": "تحديث",
|
|
179
|
-
"pizarron.graph.regenerating": "جارٍ إعادة التوليد...",
|
|
180
|
-
"pizarron.graph.detail.hint": "انقر على عقدة لعرض التفاصيل.",
|
|
181
|
-
"pizarron.graph.detail.empty": "لا توجد تفاصيل لهذه العقدة.",
|
|
1
|
+
{
|
|
2
|
+
"panel.brand": "Yujin Forge",
|
|
3
|
+
"panel.brand.kanji": "侑",
|
|
4
|
+
"panel.tagline": "مساعد تطوير صوتي أولاً",
|
|
5
|
+
"panel.input.placeholder": "اسأل Yujin",
|
|
6
|
+
"panel.button.send": "إرسال",
|
|
7
|
+
"panel.button.mic": "تحدث (اضغط مع الاستمرار)",
|
|
8
|
+
"panel.button.mic.recording": "اضغط لإيقاف التسجيل",
|
|
9
|
+
"panel.button.tts": "الصوت مفعل",
|
|
10
|
+
"panel.button.keys": "المفاتيح",
|
|
11
|
+
"panel.button.minimise": "تصغير",
|
|
12
|
+
"panel.button.maximise": "تكبير",
|
|
13
|
+
"panel.button.close": "إغلاق",
|
|
14
|
+
"panel.button.language": "اللغة",
|
|
15
|
+
"panel.trace.title": "سجل الإجراءات",
|
|
16
|
+
"panel.trace.count.one": "{n} استدعاء أداة",
|
|
17
|
+
"panel.trace.count.other": "{n} استدعاءات أدوات",
|
|
18
|
+
"panel.trace.empty.kanji": "空",
|
|
19
|
+
"panel.trace.empty.body": "يعرض Yujin Forge هنا كل أداة يستدعيها للرد عليك: قراءة البيان، البحث في SPEC، تحرير المكونات، قراءة المستندات. اطرح سؤالاً يتطلب الرجوع إليها.",
|
|
20
|
+
"panel.trace.badge.tool": "أداة",
|
|
21
|
+
"panel.trace.badge.voice": "صوت",
|
|
22
|
+
"panel.trace.badge.error": "خطأ",
|
|
23
|
+
"panel.stream.empty.kanji": "侑仁",
|
|
24
|
+
"panel.stream.empty.body": "Yujin Forge متصل. اطلب تغييرات على المشروع.",
|
|
25
|
+
"panel.status.no_audio": "لم يُلتقط أي صوت. ربما لم يستقبل الميكروفون شيئاً.",
|
|
26
|
+
"panel.status.did_not_catch": "لم أفهم. لنجرب مرة أخرى.",
|
|
27
|
+
"panel.status.mic_denied": "إذن الميكروفون مرفوض أو غير متاح: {error}",
|
|
28
|
+
"panel.status.voice_failed": "فشل الصوت: {error}",
|
|
29
|
+
"panel.status.voice_reply_failed": "تعذر تشغيل الرد: {error}",
|
|
30
|
+
"panel.status.audio_play_error": "تعذر تشغيل الصوت: {error}",
|
|
31
|
+
"panel.status.reading": "جارٍ قراءة {filename}...",
|
|
32
|
+
"panel.status.ingest_failed": "فشل الاستيعاب: {error}",
|
|
33
|
+
"panel.status.read_failed": "تعذرت قراءة المواصفات: {error}",
|
|
34
|
+
"panel.drop.title": "أفلت المواصفات هنا",
|
|
35
|
+
"panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
|
|
36
|
+
"panel.ingest.spec_attached": "تم إرفاق المواصفات: {filename}، {kb} KB",
|
|
37
|
+
"panel.ingest.read_label": "تمت القراءة.",
|
|
38
|
+
"panel.ingest.title_label": "العنوان: {title}",
|
|
39
|
+
"panel.ingest.no_title": "(بدون عنوان)",
|
|
40
|
+
"panel.ingest.format_label": "التنسيق: {format} / {sections} قسم / {kb} KB",
|
|
41
|
+
"panel.ingest.first_lines": "الأسطر الأولى:",
|
|
42
|
+
"panel.ingest.action_done": "اكتمل الإجراء {tool}.",
|
|
43
|
+
"vault.modal.title": "بيانات الاعتماد (الخزنة)",
|
|
44
|
+
"vault.modal.aria.close": "إغلاق نافذة بيانات الاعتماد",
|
|
45
|
+
"vault.tab.list": "الخانات المحملة",
|
|
46
|
+
"vault.tab.add": "إضافة",
|
|
47
|
+
"vault.list.loading": "جارٍ التحميل...",
|
|
48
|
+
"vault.list.empty": "لم تقم بتحميل أي مفتاح بعد. انقر على \"إضافة\" للبدء.",
|
|
49
|
+
"vault.add.slot_label": "اسم الخانة",
|
|
50
|
+
"vault.add.slot_hint": "أحرف صغيرة، أرقام، شرطة سفلية، واصلة. يجب أن يبدأ بحرف.",
|
|
51
|
+
"vault.add.value_label": "القيمة النصية (مخفية)",
|
|
52
|
+
"vault.add.value_hint": "تُعرض مرة واحدة فقط عند الحفظ. بعد ذلك يمكن استبدالها وليس قراءتها.",
|
|
53
|
+
"vault.add.button_save": "حفظ",
|
|
54
|
+
"vault.add.button_cancel": "إلغاء",
|
|
55
|
+
"vault.add.success": "تم حفظ الخانة {slot}.",
|
|
56
|
+
"vault.add.overwrite": "تم استبدال الخانة {slot}.",
|
|
57
|
+
"manual.intro": "Yujin Forge -- دليل المستخدم",
|
|
58
|
+
"manual.section.welcome": "مرحباً",
|
|
59
|
+
"manual.section.install": "التثبيت",
|
|
60
|
+
"manual.section.first_run": "التشغيل الأول",
|
|
61
|
+
"manual.section.voice": "الأوامر الصوتية",
|
|
62
|
+
"manual.section.spec_ingest": "استيعاب المواصفات",
|
|
63
|
+
"manual.section.troubleshooting": "حل المشكلات",
|
|
64
|
+
"manual.section.support": "الدعم",
|
|
65
|
+
"lang.name.es": "الإسبانية",
|
|
66
|
+
"lang.name.en": "الإنجليزية",
|
|
67
|
+
"lang.name.pt": "البرتغالية",
|
|
68
|
+
"lang.name.fr": "الفرنسية",
|
|
69
|
+
"lang.name.ja": "اليابانية",
|
|
70
|
+
"lang.name.zh": "الصينية",
|
|
71
|
+
"lang.name.hi": "الهندية",
|
|
72
|
+
"lang.name.ar": "العربية",
|
|
73
|
+
"lang.name.de": "الألمانية",
|
|
74
|
+
"lang.name.it": "الإيطالية",
|
|
75
|
+
"recap.fallback_period": ".",
|
|
76
|
+
"recap.empty": "لا يوجد ما يمكن تلخيصه بعد.",
|
|
77
|
+
"error_ui.severity.info": "معلومات",
|
|
78
|
+
"error_ui.severity.warning": "تحذير",
|
|
79
|
+
"error_ui.severity.error": "خطأ",
|
|
80
|
+
"error_ui.severity.fatal": "فادح",
|
|
81
|
+
"error_ui.label.what": "ماذا حدث",
|
|
82
|
+
"error_ui.label.why": "لماذا",
|
|
83
|
+
"error_ui.label.fix": "كيفية الإصلاح",
|
|
84
|
+
"error_ui.label.cmd": "الأمر",
|
|
85
|
+
"error_ui.label.docs": "الوثائق المحلية",
|
|
86
|
+
"error_ui.label.retry": "إعادة المحاولة في",
|
|
87
|
+
"error_ui.copy_btn": "نسخ الأمر",
|
|
88
|
+
"error_ui.unknown.what": "واجه Forge خطأ داخليا (رمز غير معروف).",
|
|
89
|
+
"error_ui.unknown.why": "الرمز {code} ليس في الكتالوج. هذا خطأ برمجي.",
|
|
90
|
+
"error_ui.unknown.fix": "افتح issue في https://github.com/yujinapp/yujin-forge/issues مع الرمز و traceback.",
|
|
91
|
+
"error.cap_frontier_exhausted.what": "نفد الحد الشهري لرموز طبقة frontier (نموذج كبير).",
|
|
92
|
+
"error.cap_frontier_exhausted.why": "خطتك {plan} تسمح بحد أقصى {cap} رمز/شهر على frontier. استخدمت {used}. يعاد الضبط في بداية الشهر UTC التالي.",
|
|
93
|
+
"error.cap_frontier_exhausted.fix": "انتقل إلى BYOK Anthropic مباشرة: يتجاوز الحد الشهري لـ worker. تصبح تكلفتك ما تتقاضاه Anthropic مباشرة.",
|
|
94
|
+
"error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
|
|
95
|
+
"error.cap_eco_exhausted.what": "نفد الحد الشهري لرموز طبقة eco (نموذج صغير).",
|
|
96
|
+
"error.cap_eco_exhausted.why": "خطتك {plan} تسمح بحد أقصى {cap} رمز/شهر على eco. استخدمت {used}. يعاد الضبط في بداية الشهر UTC التالي.",
|
|
97
|
+
"error.cap_eco_exhausted.fix": "انتقل إلى BYOK مباشرة أو قم بترقية الخطة. BYOK يتجاوز حد worker.",
|
|
98
|
+
"error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
|
|
99
|
+
"error.tier_not_in_plan.what": "الطبقة {tier} غير مفعلة على خطتك.",
|
|
100
|
+
"error.tier_not_in_plan.why": "خطتك {plan} لا تتضمن طبقة {tier}. ربما أنت على free-public أو انتهت صلاحية ترخيصك.",
|
|
101
|
+
"error.tier_not_in_plan.fix": "فعل ترخيصا مدفوعا أو انتقل إلى BYOK مباشرة (تكلفتك، دون حد worker).",
|
|
102
|
+
"error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
|
|
103
|
+
"error.response_truncated.what": "تم قطع استجابة النموذج قبل الانتهاء.",
|
|
104
|
+
"error.response_truncated.why": "تم الوصول إلى حد managed_max_tokens_per_turn = {limit} رمز في منتصف الدور. توقف النموذج عن التوليد.",
|
|
105
|
+
"error.response_truncated.fix": "ارفع الحد عبر yf limits. ينطبق على الدور التالي دون إعادة تشغيل الدردشة.",
|
|
106
|
+
"error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
|
|
107
|
+
"error.response_truncated.banner": "[الاستجابة مقتطعة بواسطة max_tokens={max}. ارفع الحد بـ: yf limits set managed_max_tokens_per_turn {suggested}]",
|
|
108
|
+
"error.modal_trace_stale.what": "انتهت صلاحية مودال الموافقة أو أصبح يتيما.",
|
|
109
|
+
"error.modal_trace_stale.why": "trace_id {trace_id} ليس له موافقة معلقة في dispatcher. ربما race condition بين invoke وحالة panel، أو ترك cancel سابق trace في حالة zombie.",
|
|
110
|
+
"error.modal_trace_stale.fix": "استدع verb من الدردشة مرة أخرى: يبدأ trace جديد نظيف. إذا استمر، شغل yf doctor لفحص panel.",
|
|
111
|
+
"error.modal_trace_stale.cmd": "yf doctor",
|
|
112
|
+
"error.byok_key_missing.what": "مفتاح API مفقود للمزود {provider}.",
|
|
113
|
+
"error.byok_key_missing.why": "لقد أعددت {provider} كمزود لطبقة {tier} لكن الفتحة byok_{slot} ليست في Vault المشفر.",
|
|
114
|
+
"error.byok_key_missing.fix": "كون المفتاح بـ yf keys set (ذري، mode 0600، لا يسجل أبدا).",
|
|
115
|
+
"error.byok_key_missing.cmd": "yf keys set {slot}",
|
|
116
|
+
"error.worker_unreachable.what": "لم أستطع الوصول إلى worker yujin.app.",
|
|
117
|
+
"error.worker_unreachable.why": "انتهاء مهلة الشبكة أو worker معطل (HTTP {status}). أعدت المحاولة {attempts} مرات.",
|
|
118
|
+
"error.worker_unreachable.fix": "افحص إنترنتك. إذا كان جيدا، انتقل مؤقتا إلى BYOK مباشرة لتجنب الاعتماد على worker.",
|
|
119
|
+
"error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
|
|
120
|
+
"error.vault_decrypt_failed.what": "لم أستطع فك تشفير مفتاح من Vault.",
|
|
121
|
+
"error.vault_decrypt_failed.why": "مفتاح master غير صحيح أو ملف Vault تالف. يمكن أن يحدث إذا نقلت config بين الأجهزة دون نقل master، أو بسبب disk error.",
|
|
122
|
+
"error.vault_decrypt_failed.fix": "اسحب نسخة الخادم (يعيد التشفير بـ master المحلي) إذا كان لديك server backup نشط.",
|
|
123
|
+
"error.vault_decrypt_failed.cmd": "yf keys setup --pull",
|
|
124
|
+
"error.shell_exec_rejected.what": "رفضت مودال R8 لـ yujin.shell.exec.",
|
|
125
|
+
"error.shell_exec_rejected.why": "تم تصنيف الأمر {command} على أنه {classification}. shell.exec يطلب الموافقة دائما للأمان، حتى لو كان الأمر read-only.",
|
|
126
|
+
"error.shell_exec_rejected.fix": "إذا كان الأمر read-only (yf projects active، git status، ls)، استخدم verb الأصلي المكافئ. إذا كان ضروريا ورفضته بالخطأ، استدعه مرة أخرى.",
|
|
127
|
+
"error.project_not_registered.what": "لا يوجد مشروع adopter مسجل.",
|
|
128
|
+
"error.project_not_registered.why": "يتطلب verb المستدعى project root نشط لكن ~/.yujin-forge/projects.json ليس به إدخالات.",
|
|
129
|
+
"error.project_not_registered.fix": "أنشئ واحدا بـ yujin.project.init أو سجل واحدا موجودا بـ yf projects add.",
|
|
130
|
+
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
+
"panel.button.agents": "الوكلاء",
|
|
132
|
+
"panel.agents.title": "الوكلاء",
|
|
133
|
+
"panel.agents.subtitle": "المدير والوكلاء الفرعيون المسجلون في هذا المشروع",
|
|
134
|
+
"panel.agents.empty.title": "لا يوجد وكلاء بعد",
|
|
135
|
+
"panel.agents.empty.body": "قم بتشغيل `yf agent install --defaults` لتسجيل المدير ووكلائه الفرعيين الأربعة (المحلل، المبرمج، المختبر، المُجهز).",
|
|
136
|
+
"panel.agents.legend.eco": "اقتصادي",
|
|
137
|
+
"panel.agents.legend.managed": "مُدار",
|
|
138
|
+
"panel.agents.legend.frontier": "حدود",
|
|
139
|
+
"panel.agents.status.disabled": "وقت تشغيل الوكلاء غير مُشغّل",
|
|
140
|
+
"panel.agents.event.running": "قيد التشغيل",
|
|
141
|
+
"panel.agents.event.idle": "خامل",
|
|
142
|
+
"panel.agents.tick.live": "متصل",
|
|
143
|
+
"panel.agents.tick.lost": "الاتصال مفقود",
|
|
144
|
+
"workflow.phase.i": "الفرز والنية",
|
|
145
|
+
"workflow.phase.ii": "التوضيح (الوظيفي + 4 NFR + الكتل)",
|
|
146
|
+
"workflow.phase.iii": "المواصفات (RFP + المعمارية + التصميم + الموافقات)",
|
|
147
|
+
"workflow.phase.iv": "التهيئة",
|
|
148
|
+
"workflow.phase.v": "تطوير الكتل",
|
|
149
|
+
"workflow.phase.vi": "النشر + ما بعد الإطلاق",
|
|
150
|
+
"wizard.title": "مرحبا بك في Yujin Forge",
|
|
151
|
+
"wizard.close": "إغلاق",
|
|
152
|
+
"wizard.intro": "للبدء، اختر كيف يتصل Forge بنموذج الذكاء الاصطناعي. يمكنك تغيير ذلك لاحقا من Settings.",
|
|
153
|
+
"wizard.back": "رجوع",
|
|
154
|
+
"wizard.start": "ابدأ",
|
|
155
|
+
"wizard.plan.badge": "موصى به",
|
|
156
|
+
"wizard.plan.title": "خطة Claude",
|
|
157
|
+
"wizard.plan.desc": "اشتراك Claude الشهري. الخيار الأكثر اقتصاديا للاستخدام المستمر. Forge يستخدم جلسة claude -p الخاصة بك.",
|
|
158
|
+
"wizard.plan.price": "رسم شهري ثابت (الخطة)",
|
|
159
|
+
"wizard.plan.step.title": "وصل خطة Claude الخاصة بك",
|
|
160
|
+
"wizard.plan.step.1": "افتح موجه أوامر جديد.",
|
|
161
|
+
"wizard.plan.step.2": "نفذ الأمر claude (بدون وسائط) وأكمل تسجيل الدخول في المتصفح.",
|
|
162
|
+
"wizard.plan.step.3": "عد إلى هنا واضغط أنا مسجل الدخول للتحقق.",
|
|
163
|
+
"wizard.plan.done": "أنا مسجل الدخول",
|
|
164
|
+
"wizard.byok.title": "مفتاح API الخاص بك (BYOK)",
|
|
165
|
+
"wizard.byok.desc": "مفتاحك الخاص من أي مزود (Anthropic، OpenAI، Google، DeepSeek...). الدفع حسب الاستخدام على حسابك.",
|
|
166
|
+
"wizard.byok.price": "دفع حسب الاستخدام (Console)",
|
|
167
|
+
"wizard.byok.step.title": "اختر مزودك والصق مفتاح API",
|
|
168
|
+
"wizard.byok.step.intro": "اختر المزود من القائمة والصق مفتاح API الخاص به. يخزنه Forge مشفرا في Vault المحلي؛ لا يغادر جهازك أبدا.",
|
|
169
|
+
"wizard.byok.test": "تحقق واحفظ",
|
|
170
|
+
"wizard.skip.title": "أنا بالفعل معد",
|
|
171
|
+
"wizard.skip.desc": "تخطي المعالج. يمكنك إعادة فتحه من Settings لاحقا.",
|
|
172
|
+
"wizard.done.kanji": "تم",
|
|
173
|
+
"wizard.done.title": "تم",
|
|
174
|
+
"wizard.done.msg": "Forge جاهز. ابدأ الدردشة.",
|
|
175
|
+
"pizarron.button.read": "اقرأ بصوت",
|
|
176
|
+
"pizarron.button.copy": "نسخ",
|
|
177
|
+
"pizarron.button.edit": "تحرير",
|
|
178
|
+
"pizarron.graph.refresh": "تحديث",
|
|
179
|
+
"pizarron.graph.regenerating": "جارٍ إعادة التوليد...",
|
|
180
|
+
"pizarron.graph.detail.hint": "انقر على عقدة لعرض التفاصيل.",
|
|
181
|
+
"pizarron.graph.detail.empty": "لا توجد تفاصيل لهذه العقدة.",
|
|
182
182
|
"pizarron.graph.detail.weight": "الوزن",
|
|
183
183
|
"pizarron.graph.orbit": "مدار",
|
|
184
|
-
"pizarron.graph.orbit.speed": "سرعة المدار",
|
|
185
|
-
"startup.tab.graph": "رسم بياني مرئي",
|
|
186
|
-
"startup.tab.graphSem": "الرسم الدلالي",
|
|
187
|
-
"startup.tab.pendings": "معلق",
|
|
188
|
-
"startup.tab.workflow": "سير العمل",
|
|
189
|
-
"settings.startupTabs": "علامات التبويب عند الفتح",
|
|
190
|
-
"graph.term.nodes": "عقد",
|
|
191
|
-
"graph.term.edges": "حواف",
|
|
192
|
-
"coding.read": "جارٍ قراءة {x}",
|
|
193
|
-
"coding.read_bare": "جارٍ قراءة ملف",
|
|
194
|
-
"coding.edit": "جارٍ تعديل {x}",
|
|
195
|
-
"coding.edit_bare": "جارٍ تعديل ملف",
|
|
196
|
-
"coding.write": "جارٍ كتابة {x}",
|
|
197
|
-
"coding.write_bare": "جارٍ كتابة ملف",
|
|
198
|
-
"coding.notebook_bare": "جارٍ تعديل الدفتر",
|
|
199
|
-
"coding.bash": "جارٍ التنفيذ: {x}",
|
|
200
|
-
"coding.bash_bare": "جارٍ تنفيذ أمر",
|
|
201
|
-
"coding.grep": "جارٍ البحث \"{x}\"",
|
|
202
|
-
"coding.grep_bare": "جارٍ البحث في الكود",
|
|
203
|
-
"coding.glob": "جارٍ سرد {x}",
|
|
204
|
-
"coding.glob_bare": "جارٍ سرد الملفات",
|
|
205
|
-
"coding.web_bare": "جارٍ قراءة الويب",
|
|
206
|
-
"coding.websearch": "بحث في الويب: {x}",
|
|
207
|
-
"coding.websearch_bare": "جارٍ البحث في الويب",
|
|
208
|
-
"coding.task": "وكيل فرعي: {x}",
|
|
209
|
-
"coding.task_bare": "جارٍ تشغيل وكيل فرعي",
|
|
210
|
-
"coding.todo": "جارٍ تحديث قائمة مهامه",
|
|
211
|
-
"coding.verb_bare": "جارٍ تنفيذ فعل yujin",
|
|
212
|
-
"panel.button.stop": "إيقاف",
|
|
213
|
-
"panel.status.stopping": "جارٍ الإيقاف...",
|
|
214
|
-
"panel.status.noActiveTurn": "لم تكن هناك جولة قيد التنفيذ.",
|
|
215
|
-
"panel.status.interruptFailed": "تعذّر إرسال المقاطعة.",
|
|
216
|
-
"panel.status.turnInterrupted": "تمت مقاطعة الجولة.",
|
|
217
|
-
"panel.label.interrupted": "(تمت المقاطعة)",
|
|
218
|
-
"panel.queue.label": "في الانتظار",
|
|
219
|
-
"panel.queue.remove": "إزالة من قائمة الانتظار",
|
|
220
|
-
"panel.project.switchHint": "تبديل المشروع",
|
|
221
|
-
"panel.project.title": "المشاريع",
|
|
222
|
-
"panel.project.add": "إضافة مشروع...",
|
|
223
|
-
"panel.project.addPrompt": "المسار المطلق للمشروع المراد إضافته:",
|
|
224
|
-
"panel.project.switching": "جارٍ تبديل المشروع...",
|
|
225
|
-
"startup.tab.files": "الملفات",
|
|
226
|
-
"panel.project.remove": "إزالة من القائمة",
|
|
227
|
-
"panel.project.removeConfirm": "إزالة هذا المشروع من القائمة؟ (لا يحذف الملفات من القرص)",
|
|
228
|
-
"panel.project.removed": "تمت إزالة المشروع من القائمة",
|
|
229
|
-
"panel.files.refresh": "تحديث",
|
|
230
|
-
"panel.files.loading": "جارٍ التحميل...",
|
|
231
|
-
"panel.files.error": "تعذّر قراءة الملفات.",
|
|
232
|
-
"panel.files.empty": "(لا ملفات)",
|
|
233
|
-
"panel.files.truncated": "(القائمة مقتطعة)",
|
|
234
|
-
"panel.files.opened": "تم الفتح",
|
|
235
|
-
"panel.files.openFailed": "تعذّر فتح الملف.",
|
|
236
|
-
"
|
|
237
|
-
"
|
|
238
|
-
"
|
|
239
|
-
"
|
|
240
|
-
"
|
|
241
|
-
"
|
|
242
|
-
"
|
|
243
|
-
"
|
|
244
|
-
"
|
|
245
|
-
"settings.
|
|
246
|
-
"settings.
|
|
247
|
-
"settings.
|
|
248
|
-
"settings.
|
|
249
|
-
"settings.
|
|
250
|
-
"settings.
|
|
251
|
-
"settings.
|
|
252
|
-
"settings.
|
|
253
|
-
"settings.
|
|
254
|
-
"settings.
|
|
255
|
-
"settings.
|
|
256
|
-
"settings.vad.
|
|
257
|
-
"settings.vad.
|
|
258
|
-
"settings.vad.
|
|
259
|
-
"settings.vad.
|
|
260
|
-
"settings.vad.
|
|
261
|
-
"settings.vad.
|
|
262
|
-
"settings.vad.
|
|
263
|
-
"settings.vad.
|
|
264
|
-
"settings.
|
|
265
|
-
"settings.
|
|
266
|
-
"settings.
|
|
267
|
-
"settings.
|
|
268
|
-
"settings.
|
|
269
|
-
"settings.
|
|
270
|
-
"settings.
|
|
271
|
-
"settings.
|
|
272
|
-
"settings.brain.
|
|
273
|
-
"settings.brain.
|
|
274
|
-
"settings.brain.
|
|
275
|
-
"settings.brain.
|
|
276
|
-
"settings.brain.
|
|
277
|
-
"settings.brain.
|
|
278
|
-
"settings.
|
|
279
|
-
"settings.
|
|
280
|
-
"settings.
|
|
281
|
-
"settings.
|
|
282
|
-
"settings.
|
|
283
|
-
"settings.
|
|
284
|
-
"settings.
|
|
285
|
-
"settings.
|
|
286
|
-
"settings.federation.
|
|
287
|
-
"settings.federation.
|
|
288
|
-
"settings.federation.
|
|
289
|
-
"settings.federation.
|
|
290
|
-
"settings.federation.
|
|
291
|
-
"settings.federation.
|
|
292
|
-
"settings.
|
|
293
|
-
"settings.
|
|
294
|
-
"settings.
|
|
295
|
-
"settings.
|
|
296
|
-
"settings.
|
|
297
|
-
"settings.
|
|
298
|
-
"settings.
|
|
299
|
-
"settings.
|
|
300
|
-
"settings.keys.
|
|
301
|
-
"settings.keys.
|
|
302
|
-
"settings.keys.
|
|
303
|
-
"settings.keys.
|
|
304
|
-
"settings.keys.
|
|
305
|
-
"settings.keys.
|
|
306
|
-
"settings.
|
|
307
|
-
"settings.
|
|
308
|
-
"settings.
|
|
309
|
-
"settings.
|
|
310
|
-
"settings.
|
|
311
|
-
"settings.
|
|
312
|
-
"settings.
|
|
313
|
-
"settings.
|
|
314
|
-
"settings.
|
|
315
|
-
"settings.
|
|
316
|
-
"settings.
|
|
317
|
-
"settings.
|
|
318
|
-
"settings.
|
|
319
|
-
"settings.
|
|
320
|
-
"settings.
|
|
321
|
-
"settings.
|
|
322
|
-
"settings.
|
|
323
|
-
"settings.
|
|
324
|
-
"settings.
|
|
325
|
-
"settings.
|
|
326
|
-
"settings.
|
|
327
|
-
"settings.
|
|
328
|
-
"settings.
|
|
329
|
-
"settings.
|
|
330
|
-
"settings.
|
|
331
|
-
"settings.
|
|
332
|
-
"settings.
|
|
333
|
-
"settings.
|
|
334
|
-
"settings.
|
|
335
|
-
"settings.
|
|
336
|
-
"settings.
|
|
337
|
-
"settings.
|
|
338
|
-
"settings.
|
|
339
|
-
"settings.
|
|
340
|
-
"settings.
|
|
341
|
-
"settings.
|
|
342
|
-
"settings.
|
|
343
|
-
"settings.
|
|
344
|
-
"settings.
|
|
345
|
-
"settings.audit.
|
|
346
|
-
"settings.
|
|
347
|
-
"
|
|
348
|
-
"
|
|
349
|
-
"
|
|
350
|
-
"
|
|
351
|
-
"
|
|
352
|
-
"
|
|
353
|
-
"
|
|
354
|
-
"
|
|
355
|
-
"panel.status.
|
|
356
|
-
"panel.status.
|
|
357
|
-
"panel.status.
|
|
358
|
-
"panel.status.
|
|
359
|
-
"panel.status.
|
|
360
|
-
"panel.status.
|
|
361
|
-
"panel.status.
|
|
362
|
-
"panel.status.
|
|
363
|
-
"panel.status.
|
|
364
|
-
"panel.status.
|
|
365
|
-
"panel.status.
|
|
366
|
-
"panel.status.
|
|
367
|
-
"panel.status.
|
|
368
|
-
"panel.
|
|
369
|
-
"panel.
|
|
370
|
-
"panel.
|
|
371
|
-
"panel.
|
|
372
|
-
"panel.
|
|
373
|
-
"panel.
|
|
374
|
-
"panel.
|
|
375
|
-
"panel.
|
|
376
|
-
"panel.
|
|
377
|
-
"panel.
|
|
378
|
-
"panel.
|
|
379
|
-
"panel.
|
|
380
|
-
"panel.
|
|
381
|
-
"panel.
|
|
382
|
-
"panel.voice.
|
|
383
|
-
"panel.voice.
|
|
384
|
-
"panel.voice.
|
|
385
|
-
"panel.voice.
|
|
386
|
-
"panel.voice.
|
|
387
|
-
"panel.voice.
|
|
388
|
-
"panel.voice.
|
|
389
|
-
"panel.voice.
|
|
390
|
-
"panel.voice.
|
|
391
|
-
"panel.voice.
|
|
392
|
-
"panel.voice.
|
|
393
|
-
"panel.voice.
|
|
394
|
-
"panel.voice.
|
|
395
|
-
"panel.voice.
|
|
396
|
-
"panel.voice.
|
|
397
|
-
"panel.voice.
|
|
398
|
-
"panel.
|
|
399
|
-
"panel.
|
|
400
|
-
"panel.
|
|
401
|
-
"panel.
|
|
402
|
-
"panel.
|
|
403
|
-
"panel.
|
|
404
|
-
"panel.
|
|
405
|
-
"panel.
|
|
406
|
-
"panel.
|
|
407
|
-
"panel.
|
|
408
|
-
"panel.
|
|
409
|
-
"panel.tip.
|
|
410
|
-
"panel.tip.
|
|
411
|
-
"panel.tip.
|
|
412
|
-
"panel.tip.
|
|
413
|
-
"panel.tip.
|
|
414
|
-
"panel.tip.
|
|
415
|
-
"panel.tip.
|
|
416
|
-
"panel.tip.
|
|
417
|
-
"panel.tip.
|
|
418
|
-
"panel.tip.
|
|
419
|
-
"panel.tip.
|
|
420
|
-
"panel.tip.
|
|
421
|
-
"panel.tip.
|
|
422
|
-
"panel.tip.
|
|
423
|
-
"panel.
|
|
424
|
-
"panel.
|
|
425
|
-
"panel.
|
|
426
|
-
"panel.
|
|
427
|
-
"panel.
|
|
428
|
-
"panel.
|
|
429
|
-
"panel.
|
|
430
|
-
"panel.
|
|
431
|
-
"panel.
|
|
432
|
-
"panel.
|
|
433
|
-
"panel.
|
|
434
|
-
"panel.
|
|
435
|
-
"panel.
|
|
436
|
-
"panel.
|
|
437
|
-
"panel.
|
|
438
|
-
"panel.
|
|
439
|
-
"panel.
|
|
440
|
-
"panel.
|
|
441
|
-
"panel.
|
|
442
|
-
"panel.
|
|
443
|
-
"panel.
|
|
444
|
-
"panel.
|
|
445
|
-
"panel.
|
|
446
|
-
"panel.
|
|
447
|
-
"panel.
|
|
448
|
-
"panel.
|
|
449
|
-
"panel.feedback.
|
|
450
|
-
"panel.
|
|
451
|
-
"panel.
|
|
452
|
-
"panel.
|
|
453
|
-
"panel.
|
|
454
|
-
"panel.
|
|
455
|
-
"panel.
|
|
456
|
-
"panel.
|
|
457
|
-
"panel.
|
|
458
|
-
"panel.
|
|
459
|
-
"panel.
|
|
460
|
-
"panel.
|
|
461
|
-
"panel.
|
|
462
|
-
"panel.
|
|
463
|
-
"panel.
|
|
464
|
-
"panel.
|
|
465
|
-
"panel.
|
|
466
|
-
"panel.
|
|
467
|
-
"panel.
|
|
468
|
-
"panel.
|
|
469
|
-
"panel.
|
|
470
|
-
"panel.
|
|
471
|
-
"panel.
|
|
472
|
-
"panel.
|
|
473
|
-
"panel.
|
|
474
|
-
"panel.
|
|
475
|
-
"panel.
|
|
476
|
-
"panel.
|
|
477
|
-
"panel.
|
|
478
|
-
"panel.
|
|
479
|
-
"panel.
|
|
480
|
-
"panel.license.
|
|
481
|
-
"panel.license.
|
|
482
|
-
"panel.license.
|
|
483
|
-
"panel.license.
|
|
484
|
-
"panel.license.
|
|
485
|
-
"panel.license.
|
|
486
|
-
"panel.
|
|
487
|
-
"panel.
|
|
488
|
-
"panel.
|
|
489
|
-
"panel.
|
|
490
|
-
"panel.
|
|
491
|
-
"panel.
|
|
492
|
-
"panel.
|
|
493
|
-
"panel.
|
|
494
|
-
"panel.
|
|
495
|
-
"panel.
|
|
496
|
-
"panel.
|
|
497
|
-
"panel.
|
|
498
|
-
"panel.
|
|
499
|
-
"panel.
|
|
500
|
-
"panel.
|
|
501
|
-
"panel.
|
|
502
|
-
"panel.
|
|
503
|
-
"panel.
|
|
504
|
-
"panel.
|
|
505
|
-
"panel.
|
|
506
|
-
"panel.
|
|
507
|
-
"panel.
|
|
508
|
-
"panel.
|
|
509
|
-
"panel.
|
|
510
|
-
"panel.
|
|
511
|
-
"panel.
|
|
512
|
-
"panel.
|
|
513
|
-
"panel.
|
|
514
|
-
"panel.
|
|
515
|
-
"panel.
|
|
516
|
-
"panel.
|
|
517
|
-
"panel.
|
|
518
|
-
"panel.
|
|
519
|
-
"panel.
|
|
520
|
-
"panel.
|
|
521
|
-
"panel.
|
|
522
|
-
"panel.
|
|
523
|
-
"panel.
|
|
524
|
-
"panel.
|
|
525
|
-
"panel.
|
|
526
|
-
"panel.
|
|
527
|
-
|
|
184
|
+
"pizarron.graph.orbit.speed": "سرعة المدار",
|
|
185
|
+
"startup.tab.graph": "رسم بياني مرئي",
|
|
186
|
+
"startup.tab.graphSem": "الرسم الدلالي",
|
|
187
|
+
"startup.tab.pendings": "معلق",
|
|
188
|
+
"startup.tab.workflow": "سير العمل",
|
|
189
|
+
"settings.startupTabs": "علامات التبويب عند الفتح",
|
|
190
|
+
"graph.term.nodes": "عقد",
|
|
191
|
+
"graph.term.edges": "حواف",
|
|
192
|
+
"coding.read": "جارٍ قراءة {x}",
|
|
193
|
+
"coding.read_bare": "جارٍ قراءة ملف",
|
|
194
|
+
"coding.edit": "جارٍ تعديل {x}",
|
|
195
|
+
"coding.edit_bare": "جارٍ تعديل ملف",
|
|
196
|
+
"coding.write": "جارٍ كتابة {x}",
|
|
197
|
+
"coding.write_bare": "جارٍ كتابة ملف",
|
|
198
|
+
"coding.notebook_bare": "جارٍ تعديل الدفتر",
|
|
199
|
+
"coding.bash": "جارٍ التنفيذ: {x}",
|
|
200
|
+
"coding.bash_bare": "جارٍ تنفيذ أمر",
|
|
201
|
+
"coding.grep": "جارٍ البحث \"{x}\"",
|
|
202
|
+
"coding.grep_bare": "جارٍ البحث في الكود",
|
|
203
|
+
"coding.glob": "جارٍ سرد {x}",
|
|
204
|
+
"coding.glob_bare": "جارٍ سرد الملفات",
|
|
205
|
+
"coding.web_bare": "جارٍ قراءة الويب",
|
|
206
|
+
"coding.websearch": "بحث في الويب: {x}",
|
|
207
|
+
"coding.websearch_bare": "جارٍ البحث في الويب",
|
|
208
|
+
"coding.task": "وكيل فرعي: {x}",
|
|
209
|
+
"coding.task_bare": "جارٍ تشغيل وكيل فرعي",
|
|
210
|
+
"coding.todo": "جارٍ تحديث قائمة مهامه",
|
|
211
|
+
"coding.verb_bare": "جارٍ تنفيذ فعل yujin",
|
|
212
|
+
"panel.button.stop": "إيقاف",
|
|
213
|
+
"panel.status.stopping": "جارٍ الإيقاف...",
|
|
214
|
+
"panel.status.noActiveTurn": "لم تكن هناك جولة قيد التنفيذ.",
|
|
215
|
+
"panel.status.interruptFailed": "تعذّر إرسال المقاطعة.",
|
|
216
|
+
"panel.status.turnInterrupted": "تمت مقاطعة الجولة.",
|
|
217
|
+
"panel.label.interrupted": "(تمت المقاطعة)",
|
|
218
|
+
"panel.queue.label": "في الانتظار",
|
|
219
|
+
"panel.queue.remove": "إزالة من قائمة الانتظار",
|
|
220
|
+
"panel.project.switchHint": "تبديل المشروع",
|
|
221
|
+
"panel.project.title": "المشاريع",
|
|
222
|
+
"panel.project.add": "إضافة مشروع...",
|
|
223
|
+
"panel.project.addPrompt": "المسار المطلق للمشروع المراد إضافته:",
|
|
224
|
+
"panel.project.switching": "جارٍ تبديل المشروع...",
|
|
225
|
+
"startup.tab.files": "الملفات",
|
|
226
|
+
"panel.project.remove": "إزالة من القائمة",
|
|
227
|
+
"panel.project.removeConfirm": "إزالة هذا المشروع من القائمة؟ (لا يحذف الملفات من القرص)",
|
|
228
|
+
"panel.project.removed": "تمت إزالة المشروع من القائمة",
|
|
229
|
+
"panel.files.refresh": "تحديث",
|
|
230
|
+
"panel.files.loading": "جارٍ التحميل...",
|
|
231
|
+
"panel.files.error": "تعذّر قراءة الملفات.",
|
|
232
|
+
"panel.files.empty": "(لا ملفات)",
|
|
233
|
+
"panel.files.truncated": "(القائمة مقتطعة)",
|
|
234
|
+
"panel.files.opened": "تم الفتح",
|
|
235
|
+
"panel.files.openFailed": "تعذّر فتح الملف.",
|
|
236
|
+
"panel.files.searchName": "تصفية بالاسم",
|
|
237
|
+
"panel.files.searchType": "النوع (مثل ts، png)",
|
|
238
|
+
"panel.files.matches": "{n} نتيجة",
|
|
239
|
+
"panel.files.noMatches": "لا نتائج",
|
|
240
|
+
"panel.files.sortBy": "ترتيب حسب",
|
|
241
|
+
"panel.files.sortName": "الاسم",
|
|
242
|
+
"panel.files.sortSize": "الحجم",
|
|
243
|
+
"panel.files.sortType": "النوع",
|
|
244
|
+
"startup.tab.tasks": "المهام",
|
|
245
|
+
"settings.bridge.title": "التنسيق بين النسخ",
|
|
246
|
+
"settings.bridge.accept": "قبول الرسائل الموجهة من النسخ الأخرى (تُحقن كمحادثة)",
|
|
247
|
+
"settings.bridge.composePlaceholder": "رسالة إلى النسخ الأخرى...",
|
|
248
|
+
"settings.voice.title": "الصوت",
|
|
249
|
+
"settings.voice.mode": "الوضع",
|
|
250
|
+
"settings.voice.modeMic": "وضع المايك",
|
|
251
|
+
"settings.voice.stt": "STT",
|
|
252
|
+
"settings.voice.sttBrowser": "STT المتصفح",
|
|
253
|
+
"settings.voice.ttsEngine": "محرك TTS",
|
|
254
|
+
"settings.voice.ttsBrowser": "TTS المتصفح",
|
|
255
|
+
"settings.voice.ttsVoice": "صوت TTS (Google فقط)",
|
|
256
|
+
"settings.vad.title": "VAD (كشف الصمت)",
|
|
257
|
+
"settings.vad.resetDefaults": "إعادة التعيين",
|
|
258
|
+
"settings.vad.engine": "المحرك",
|
|
259
|
+
"settings.vad.engineAmplitude": "السعة (RMS)",
|
|
260
|
+
"settings.vad.engineBand": "النطاق 80-400Hz",
|
|
261
|
+
"settings.vad.baselineWindow": "نافذة الأساس",
|
|
262
|
+
"settings.vad.thresholdMult": "مضاعف العتبة (الأساس x N)",
|
|
263
|
+
"settings.vad.thresholdMin": "العتبة الدنيا",
|
|
264
|
+
"settings.vad.thresholdMax": "العتبة القصوى",
|
|
265
|
+
"settings.vad.silence": "الصمت للإغلاق",
|
|
266
|
+
"settings.vad.minVoiced": "الحد الأدنى للصوت (مضاد للنبضة)",
|
|
267
|
+
"settings.vad.tick": "نبضة VAD",
|
|
268
|
+
"settings.vad.bandLow": "نطاق الصوت: منخفض (Hz)",
|
|
269
|
+
"settings.vad.bandHigh": "نطاق الصوت: مرتفع (Hz)",
|
|
270
|
+
"settings.vad.showOverlay": "إظهار التراكب المباشر",
|
|
271
|
+
"settings.vad.logStats": "تسجيل الإحصائيات لكل جلسة",
|
|
272
|
+
"settings.brain.anthropicMode": "Anthropic: الوضع",
|
|
273
|
+
"settings.brain.modePlan": "Plan (اشتراك Claude)",
|
|
274
|
+
"settings.brain.modeConsole": "Console (API key)",
|
|
275
|
+
"settings.brain.modeNote": "يُطبق عند إعادة فتح اللوحة.",
|
|
276
|
+
"settings.brain.ecoEnabled": "وضع eco مُفعّل",
|
|
277
|
+
"settings.brain.ecoHint": "إيقاف = frontier دائماً",
|
|
278
|
+
"settings.brain.modelEco": "نموذج eco",
|
|
279
|
+
"settings.brain.modelFrontier": "نموذج frontier",
|
|
280
|
+
"settings.brain.modelMultimodal": "نموذج multimodal",
|
|
281
|
+
"settings.brain.multimodalClearTitle": "إزالة brain multimodal المخصص (العودة إلى توجيه الرؤية التلقائي)",
|
|
282
|
+
"settings.brain.auto": "تلقائي",
|
|
283
|
+
"settings.brain.multimodalHint": "brain مخصص للأدوار التي تحتوي على صور. تلقائي = توجيه الرؤية التلقائي (frontier إذا كان يرى، وإلا إشعار).",
|
|
284
|
+
"settings.brain.geminiCache": "ذاكرة Gemini الصريحة (CachedContent)",
|
|
285
|
+
"settings.brain.geminiCacheHint": "اشتراك اختياري. مفيد في الجلسات الطويلة مع Gemini Pro؛ في الجلسات القصيرة تكفي الذاكرة الضمنية المجانية لـ 2.5.",
|
|
286
|
+
"settings.federation.title": "اتحاد brain",
|
|
287
|
+
"settings.federation.intro": "استخدم brain من Forge آخر (مفتاحه لا يغادر جهازه أبداً) أو أعِر مفتاحك. يعمل كودك محلياً؛ ينتقل الاستدلال فقط.",
|
|
288
|
+
"settings.federation.connectedTo": "متصل بـ",
|
|
289
|
+
"settings.federation.disconnect": "قطع الاتصال",
|
|
290
|
+
"settings.federation.connectMe": "اتصل بي",
|
|
291
|
+
"settings.federation.tokenPlaceholder": "الصق رمز الاتحاد",
|
|
292
|
+
"settings.federation.connect": "اتصل",
|
|
293
|
+
"settings.federation.lendBrain": "إعارة brain الخاص بي",
|
|
294
|
+
"settings.federation.generateCode": "إنشاء رمز",
|
|
295
|
+
"settings.federation.host": "استضافة (الرد على الأبناء)",
|
|
296
|
+
"settings.federation.fedBrain": "brain الاتحاد",
|
|
297
|
+
"settings.federation.fedBrainNote": "الذي يرد على الأبناء. API مباشر (DeepSeek افتراضياً). Claude Plan لا يصلح للاستضافة؛ يحتاج إلى key برصيد.",
|
|
298
|
+
"settings.federation.codeOnce": "رمز (استخدام واحد)",
|
|
299
|
+
"settings.federation.copy": "نسخ",
|
|
300
|
+
"settings.keys.title": "API keys (BYOK)",
|
|
301
|
+
"settings.keys.configure": "تكوين",
|
|
302
|
+
"settings.keys.remove": "إزالة",
|
|
303
|
+
"settings.keys.brainAnthropic": "Brain (Anthropic)",
|
|
304
|
+
"settings.keys.brainOpenai": "Brain (OpenAI)",
|
|
305
|
+
"settings.keys.brainGoogle": "Brain (Google AI)",
|
|
306
|
+
"settings.keys.brainDeepseek": "Brain (DeepSeek)",
|
|
307
|
+
"settings.keys.brainXai": "Brain (xAI / Grok)",
|
|
308
|
+
"settings.keys.brainMistral": "Brain (Mistral)",
|
|
309
|
+
"settings.keys.brainCohere": "Brain (Cohere)",
|
|
310
|
+
"settings.keys.sttGoogle": "STT Google",
|
|
311
|
+
"settings.keys.ttsGoogle": "TTS Google",
|
|
312
|
+
"settings.keys.ttsElevenlabs": "TTS ElevenLabs",
|
|
313
|
+
"settings.keys.sttWhisper": "STT Whisper",
|
|
314
|
+
"settings.lang.title": "اللغة",
|
|
315
|
+
"settings.lang.panelVoice": "اللوحة + الصوت",
|
|
316
|
+
"settings.lang.changeButton": "تغيير اللغة",
|
|
317
|
+
"settings.vault.title": "Vault (مشفّر)",
|
|
318
|
+
"settings.vault.slots": "الفتحات",
|
|
319
|
+
"settings.vault.open": "فتح Vault",
|
|
320
|
+
"settings.license.email": "البريد الإلكتروني",
|
|
321
|
+
"settings.license.validated": "تم التحقق",
|
|
322
|
+
"settings.license.connectHint": "اربط حساب Polar الخاص بك. أدخل البريد الإلكتروني الذي دفعت به وسنزامن خطتك تلقائياً.",
|
|
323
|
+
"settings.license.emailPlaceholder": "email@example.com",
|
|
324
|
+
"settings.license.connect": "اتصل",
|
|
325
|
+
"settings.license.sync": "المزامنة مع Polar",
|
|
326
|
+
"settings.license.buy": "شراء / تفعيل الخطة",
|
|
327
|
+
"settings.budget.title": "ميزانية هذا الشهر",
|
|
328
|
+
"settings.budget.renews": "يتجدد",
|
|
329
|
+
"settings.budget.tokensEco": "eco tokens",
|
|
330
|
+
"settings.budget.tokensFrontier": "frontier tokens",
|
|
331
|
+
"settings.budget.buyExtension": "شراء تمديد tokens",
|
|
332
|
+
"settings.limits.title": "الحدود (متقدم)",
|
|
333
|
+
"settings.limits.editHint": "حرّر أي قيمة + tab/blur يحفظ.",
|
|
334
|
+
"settings.limits.reset": "إعادة التعيين للافتراضي",
|
|
335
|
+
"settings.bookmarks.title": "إشارات Reader المرجعية",
|
|
336
|
+
"settings.graph.title": "الرسم البياني المعرفي للمشروع",
|
|
337
|
+
"settings.pair.title": "ربط الهاتف",
|
|
338
|
+
"settings.pair.hint": "افتح Forge Mobile، اضغط على \"ربط\" وامسح رمز QR هذا. تم.",
|
|
339
|
+
"settings.pair.generateQr": "إنشاء QR",
|
|
340
|
+
"settings.pair.cantRead": "الكاميرا لا تقرأ QR؟ انسخ هذا الرمز والصقه في Forge Mobile:",
|
|
341
|
+
"settings.audit.viewFull": "عرض الكامل",
|
|
342
|
+
"settings.audit.close": "إغلاق",
|
|
343
|
+
"settings.audit.allKinds": "كل الأنواع",
|
|
344
|
+
"settings.audit.allModes": "كل الأوضاع",
|
|
345
|
+
"settings.audit.copyJson": "نسخ JSON",
|
|
346
|
+
"settings.audit.closeDetail": "إغلاق التفاصيل",
|
|
347
|
+
"settings.about.title": "حول",
|
|
348
|
+
"settings.danger.title": "منطقة الخطر",
|
|
349
|
+
"settings.danger.warning": "عند التشغيل، ينفّذ Yujin كل إجراء دون طلب تأكيد (بما في ذلك shell.exec وrm وgit push --force وغيرها). السرعة قبل الأمان. يُسجّل كل شيء في audit log.",
|
|
350
|
+
"settings.keyEditor.placeholder": "الصق API key الخاص بك هنا",
|
|
351
|
+
"settings.license.title": "الترخيص",
|
|
352
|
+
"settings.plan": "الخطة",
|
|
353
|
+
"settings.audit.title": "سجل التدقيق",
|
|
354
|
+
"settings.legal.title": "قانوني",
|
|
355
|
+
"panel.status.projectSwitchFail": "تعذر تبديل المشروع.",
|
|
356
|
+
"panel.status.projectRemoveFail": "تعذر إزالة المشروع.",
|
|
357
|
+
"panel.status.projectAddFail": "تعذر إضافة المشروع.",
|
|
358
|
+
"panel.status.cancelFail": "تعذر الإلغاء: {reason}",
|
|
359
|
+
"panel.status.cancelNetError": "خطأ في الشبكة أثناء إلغاء الـ shell.",
|
|
360
|
+
"panel.status.notEditable": "هذا النوع من المحتوى غير قابل للتحرير.",
|
|
361
|
+
"panel.status.savedAsPicker": "تم الحفظ باسم: {name} (في المسار الذي اخترته في مربع الحوار).",
|
|
362
|
+
"panel.status.saveAsFail": "خطأ في \"حفظ باسم\": {error} -- يتم استخدام البديل.",
|
|
363
|
+
"panel.status.saveFail": "خطأ أثناء الحفظ: {error}",
|
|
364
|
+
"panel.status.savedAs": "تم الحفظ باسم: {path} ({bytes} بايت)",
|
|
365
|
+
"panel.status.netError": "خطأ في الشبكة: {error}",
|
|
366
|
+
"panel.status.savedTabOnly": "تم حفظ التغييرات في علامة التبويب (ليس على القرص -- بدون file_path).",
|
|
367
|
+
"panel.status.saved": "تم الحفظ: {path} ({bytes} بايت)",
|
|
368
|
+
"panel.status.copied": "تم النسخ إلى الحافظة.",
|
|
369
|
+
"panel.status.copyFail": "تعذر النسخ.",
|
|
370
|
+
"panel.status.modeAvailable": "الأوضاع المتاحة: didactico, tecnico. الاستخدام: /modo tecnico",
|
|
371
|
+
"panel.status.modeChangeFail": "تعذر تغيير الوضع: {error}",
|
|
372
|
+
"panel.status.modeChanged": "تم تغيير الوضع إلى {target}. الدور التالي يستخدم هذا الوضع بالفعل.",
|
|
373
|
+
"panel.status.genericError": "خطأ: {error}",
|
|
374
|
+
"panel.status.brainTierAuto": "عاد Brain tier إلى auto (يقرر الـ router حسب الـ verb / phase).",
|
|
375
|
+
"panel.status.brainTierForced": "تم تثبيت Brain tier على \"{target}\" لهذه الجلسة. /auto يعيده إلى الـ router.",
|
|
376
|
+
"panel.confirm.tabUnsaved": "علامة التبويب \"{title}\" بها تغييرات غير محفوظة. الإغلاق على أي حال؟",
|
|
377
|
+
"panel.confirm.tabsUnsaved": "توجد علامات تبويب بها تغييرات غير محفوظة. إغلاق الكل على أي حال؟",
|
|
378
|
+
"panel.confirm.discardChanges": "تجاهل التغييرات غير المحفوظة؟",
|
|
379
|
+
"panel.confirm.removeSlot": "إزالة الـ slot \"{slot}\"؟ لا يمكن التراجع عن هذا.",
|
|
380
|
+
"panel.confirm.removeKey": "إزالة الـ key الخاص بـ {slot}؟",
|
|
381
|
+
"panel.prompt.saveAs": "حفظ باسم (مسار نسبي للمشروع):",
|
|
382
|
+
"panel.voice.sttFallback": "STT المتصفح غير متاح؛ يتم استخدام البديل من جانب الخادم.",
|
|
383
|
+
"panel.voice.noMicSupport": "متصفحك لا يدعم الوصول إلى الميكروفون.",
|
|
384
|
+
"panel.voice.recordingCountdown": "جارٍ التسجيل... إيقاف تلقائي خلال {n} ثانية",
|
|
385
|
+
"panel.voice.autoStopped": "تم إيقاف التسجيل تلقائيًا عند 55 ثانية (حد دقيقة واحدة لـ Google STT). جرّب مدة أقصر.",
|
|
386
|
+
"panel.voice.noAudio": "لم يتم التقاط أي صوت. حاول مرة أخرى.",
|
|
387
|
+
"panel.voice.audioTooLong": "الصوت طويل جدًا (>دقيقة واحدة). حد التزامن لـ Google STT. جرّب مدة أقصر.",
|
|
388
|
+
"panel.voice.ttsUnavailable": "TTS المتصفح غير متاح؛ ارجع إلى Google في الإعدادات.",
|
|
389
|
+
"panel.voice.micClosedHalfDuplex": "تم إغلاق الميكروفون أثناء تحدث Yujin (نصف مزدوج).",
|
|
390
|
+
"panel.voice.micBlocked": "الميكروفون محظور. اسمح بالميكروفون لهذا التطبيق في إعدادات المتصفح ثم حاول مرة أخرى.",
|
|
391
|
+
"panel.voice.noMicDevice": "لم يتم اكتشاف ميكروفون على هذا الجهاز.",
|
|
392
|
+
"panel.voice.micOpenFail": "تعذر فتح الميكروفون: {error}",
|
|
393
|
+
"panel.voice.micOpenListening": "الميكروفون مفتوح، يستمع...",
|
|
394
|
+
"panel.voice.listening": "أنا أستمع...",
|
|
395
|
+
"panel.voice.listeningInterim": "أنا أستمع... {text}",
|
|
396
|
+
"panel.voice.micBlockedBrowser": "الميكروفون محظور من قبل المتصفح. انقر على أيقونة القفل في شريط العنوان واسمح بالميكروفون، ثم أعد تحميل الصفحة. أو غيّر STT إلى \"google\" / \"whisper\" في الإعدادات إذا كان لديك الـ API key.",
|
|
397
|
+
"panel.voice.noMicPhysical": "لم يتم اكتشاف ميكروفون مادي. وصّل واحدًا أو غيّر STT إلى \"google\" / \"whisper\" في الإعدادات.",
|
|
398
|
+
"panel.voice.networkRequired": "يتطلب Web Speech اتصالاً بالإنترنت (يستخدم Chrome محرك Google خلف الكواليس). جرّب دون اتصال متقطع أو غيّر STT إلى \"whisper\" إذا كان لديك الـ API key.",
|
|
399
|
+
"panel.voice.langNotSupported": "متصفحك لا يدعم هذه اللغة لـ STT. غيّر لغة اللوحة إلى لغة مدعومة (en, es, pt) أو غيّر STT إلى \"google\" / \"whisper\".",
|
|
400
|
+
"panel.voice.micError": "خطأ في الميكروفون: {error}",
|
|
401
|
+
"panel.voice.noAudioToRecognizer": "لم يصل أي صوت إلى أداة التعرف: إملاء المتصفح لا يلتقط في هذا التطبيق.",
|
|
402
|
+
"panel.voice.micOpenNoVoice": "الميكروفون مفتوح لكن لم يتم اكتشاف صوت. اقترب من الميكروفون وتحدث بصوت أعلى؛ إذا استمر ذلك، فإن الإملاء المجاني لا يعمل في هذا الـ PWA.",
|
|
403
|
+
"panel.voice.voiceNoText": "تم اكتشاف الصوت لكن المتصفح لم يُرجع نصًا (STT المجاني غير متاح في هذا الـ PWA).",
|
|
404
|
+
"panel.voice.startingDictation": "جارٍ بدء الإملاء...",
|
|
405
|
+
"panel.voice.couldNotStartMic": "تعذر بدء الميكروفون: {error}",
|
|
406
|
+
"panel.status.imageTooLarge": "الصورة كبيرة جدًا (>6MB): {name}",
|
|
407
|
+
"panel.status.imageReady": "الصورة جاهزة للإرسال: {name}",
|
|
408
|
+
"panel.status.imageReadFail": "تعذر قراءة الصورة: {error}",
|
|
409
|
+
"panel.tip.attachFile": "إرفاق ملف",
|
|
410
|
+
"panel.tip.refreshDiscovery": "تحديث الاكتشاف",
|
|
411
|
+
"panel.tip.refreshNow": "تحديث الان",
|
|
412
|
+
"panel.tip.filterByProject": "تصفية حسب المشروع",
|
|
413
|
+
"panel.tip.concurrentRuns": "عمليات متزامنة: حدود عامة / لكل مشروع",
|
|
414
|
+
"panel.tip.mcpBridges": "جسور MCP (F101)",
|
|
415
|
+
"panel.tip.activity": "نشاط الوكلاء + فاحص الجسر + محادثة لكل وكيل",
|
|
416
|
+
"panel.tip.settings": "الاعدادات (الوضع الصوتي، STT، TTS، المفاتيح، اللغة)",
|
|
417
|
+
"panel.tip.zoomOut": "تصغير (Ctrl -)",
|
|
418
|
+
"panel.tip.zoomReset": "اعادة ضبط التكبير (Ctrl 0)",
|
|
419
|
+
"panel.tip.zoomIn": "تكبير (Ctrl +)",
|
|
420
|
+
"panel.tip.maximize": "تكبير / استعادة (ملء الشاشة)",
|
|
421
|
+
"panel.tip.closeBoard": "اغلاق اللوحة بالكامل",
|
|
422
|
+
"panel.tip.openInEditor": "فتح في محرري",
|
|
423
|
+
"panel.tip.open": "فتح",
|
|
424
|
+
"panel.tip.saveAs": "حفظ باسم -- اختر مسارا جديدا (نسبة الى المشروع)",
|
|
425
|
+
"panel.tip.codeModeDetail": "مفصل: الملفات والفروق والاوامر مباشرة",
|
|
426
|
+
"panel.tip.codeModeZen": "Sumi-e: فن مع نص عرضي",
|
|
427
|
+
"panel.tip.cancelShell": "الغاء امر الصدفة",
|
|
428
|
+
"panel.tip.closeTab": "اغلاق علامة التبويب",
|
|
429
|
+
"panel.tip.reopenNativeTabs": "اعادة فتح علامات التبويب الاصلية المغلقة",
|
|
430
|
+
"panel.tip.notTestedYet": "لم يتم اختباره بعد",
|
|
431
|
+
"panel.aria.activity": "النشاط",
|
|
432
|
+
"panel.aria.settings": "الاعدادات",
|
|
433
|
+
"panel.aria.zoomOut": "تصغير",
|
|
434
|
+
"panel.aria.zoomIn": "تكبير",
|
|
435
|
+
"panel.aria.maximize": "تكبير",
|
|
436
|
+
"panel.aria.closeBoard": "اغلاق الكل",
|
|
437
|
+
"panel.aria.thinking": "يفكر",
|
|
438
|
+
"panel.hint.boardEmpty": "يظهر هنا المحتوى المنظم: الكود والجداول والمستندات. اطلب من Yujin كتابة شيء او تعديله.",
|
|
439
|
+
"panel.hint.planMode": "انت في وضع Plan (اشتراك). تُرسم اللوحة عندما يعمل brain في وضع API: غيّره في <strong>الاعدادات > Brain > Anthropic: الوضع > Console</strong> ثم اعد فتح اللوحة.",
|
|
440
|
+
"panel.hint.bookmarksEmpty": "لا توجد علامات مرجعية. اطلب من Yujin \"ضع علامة على هذه النقطة كـ ...\" اثناء قراءة مستند.",
|
|
441
|
+
"panel.voice.replyFailed": "فشل الرد الصوتي: {err}",
|
|
442
|
+
"panel.voice.replyError": "خطا في الرد الصوتي: {err}",
|
|
443
|
+
"panel.status.languageSwitchFailed": "فشل تبديل اللغة: {err}",
|
|
444
|
+
"panel.status.languageListFailed": "تعذر تحميل قائمة اللغات",
|
|
445
|
+
"panel.legal.loading": "جار التحميل...",
|
|
446
|
+
"panel.legal.loadError": "خطا {status} في تحميل المستند.",
|
|
447
|
+
"panel.legal.networkError": "خطا في الشبكة: {err}",
|
|
448
|
+
"panel.legal.defaultTitle": "قانوني",
|
|
449
|
+
"panel.feedback.copied": "تم النسخ",
|
|
450
|
+
"panel.feedback.copyFailed": "فشل النسخ",
|
|
451
|
+
"panel.feedback.clipboardUnavailable": "الحافظة غير متاحة",
|
|
452
|
+
"panel.feedback.saving": "جار الحفظ...",
|
|
453
|
+
"panel.feedback.saved": "تم الحفظ.",
|
|
454
|
+
"panel.feedback.saveError": "خطا في الحفظ",
|
|
455
|
+
"panel.feedback.netError": "خطا في الشبكة",
|
|
456
|
+
"panel.feedback.netErrorSaving": "خطا في الشبكة اثناء الحفظ",
|
|
457
|
+
"panel.feedback.errorPrefix": "خطا: {detail}",
|
|
458
|
+
"panel.pair.generating": "جار الانشاء...",
|
|
459
|
+
"panel.pair.generateQr": "انشاء رمز QR",
|
|
460
|
+
"panel.pair.copy": "نسخ",
|
|
461
|
+
"panel.pair.expiry": "تنتهي صلاحيته خلال ~{mins} دقيقة. اعد انشاءه اذا انتهت.",
|
|
462
|
+
"panel.pair.qrNetError": "خطا في الشبكة عند انشاء رمز QR.",
|
|
463
|
+
"panel.audit.copyJson": "نسخ JSON",
|
|
464
|
+
"panel.limits.resetApplied": "تم تطبيق اعادة التعيين الى الافتراضي",
|
|
465
|
+
"panel.nac3.effects": "الاثار: {list}",
|
|
466
|
+
"panel.nac3.effectsUnknown": "غير معروفة",
|
|
467
|
+
"panel.nac3.cancel": "الغاء",
|
|
468
|
+
"panel.nac3.reject": "رفض",
|
|
469
|
+
"panel.nac3.approve": "موافقة",
|
|
470
|
+
"panel.nac3.approveDestructive": "موافقة (مدمر)",
|
|
471
|
+
"panel.nac3.executing": "جار التنفيذ...",
|
|
472
|
+
"panel.tts.providerBrowser": "TTS المتصفح",
|
|
473
|
+
"panel.tts.providerGoogle": "TTS Google",
|
|
474
|
+
"panel.tts.providerTitle": "انقر للتبديل بين المتصفح (SpeechSynthesis الاصلي، اصوات النظام) و Google Cloud TTS (من جانب الخادم).",
|
|
475
|
+
"panel.stt.providerBrowser": "STT المتصفح",
|
|
476
|
+
"panel.stt.providerGoogle": "STT Google",
|
|
477
|
+
"panel.stt.providerWhisper": "STT Whisper",
|
|
478
|
+
"panel.stt.providerTitle": "انقر للتبديل بين المتصفح (سريع + es-AR اصلي + مجاني) او Google Cloud STT (من جانب الخادم، BYOK) او Whisper (من جانب الخادم، BYOK).",
|
|
479
|
+
"panel.tts.voiceTitle": "الصوت الحالي: {id} / {persona} ({gender}) -- {style}. انقر للتبديل. Studio = ينطق s بوضوح؛ Neural2 = اسبانية طبيعية (يخفف s النهائية).",
|
|
480
|
+
"panel.license.lendNeedsLicense": "فعّل ترخيصك لاعارة brain الخاص بك",
|
|
481
|
+
"panel.license.emailInvalid": "ادخل بريدا الكترونيا صالحا (مع @).",
|
|
482
|
+
"panel.license.connecting": "جار الاتصال...",
|
|
483
|
+
"panel.license.savingEmail": "جار حفظ البريد + المزامنة مع Polar...",
|
|
484
|
+
"panel.license.syncFailedRetry": "تم حفظ البريد، لكن المزامنة فشلت: {err}{http}. اذا كنت قد دفعت للتو، انتظر 1-2 دقيقة واضغط \"المزامنة مع Polar\".",
|
|
485
|
+
"panel.license.planOk": "OK -- الخطة: {plan}.",
|
|
486
|
+
"panel.license.netError": "خطا في الشبكة: {err}",
|
|
487
|
+
"panel.license.syncing": "جار المزامنة...",
|
|
488
|
+
"panel.license.querying": "جار الاستعلام من الخادم...",
|
|
489
|
+
"panel.license.syncError": "خطا في المزامنة: {err}{http}",
|
|
490
|
+
"panel.license.planUnchanged": "الخطة دون تغيير: {plan}",
|
|
491
|
+
"panel.license.planUpdated": "تم تحديث الخطة: {before} -> {after}",
|
|
492
|
+
"panel.license.syncWithPolar": "المزامنة مع Polar",
|
|
493
|
+
"panel.license.errorWithCode": "خطا: {code}",
|
|
494
|
+
"panel.keyEditor.keyTooShort": "المفتاح قصير جدا (الحد الادنى 8 احرف).",
|
|
495
|
+
"panel.bridge.coordUnavailable": "التنسيق غير متاح.",
|
|
496
|
+
"panel.bridge.statusUnavailable": "غير متاح",
|
|
497
|
+
"panel.mcp.loadingBridges": "جار تحميل الجسور...",
|
|
498
|
+
"panel.tools.loading": "جار تحميل الادوات...",
|
|
499
|
+
"panel.agentsChat.backPairs": "< الازواج",
|
|
500
|
+
"panel.agentsChat.noMessages": "لا توجد رسائل في هذا الزوج.",
|
|
501
|
+
"panel.agentsChat.noAgents": "لا يوجد وكلاء",
|
|
502
|
+
"panel.agentsChat.pickAgent": "اختر وكيلا واكتب نصا قبل الارسال.",
|
|
503
|
+
"panel.agentsChat.sending": "جار الارسال...",
|
|
504
|
+
"panel.agentsChat.errorGeneric": "خطا: {err}",
|
|
505
|
+
"panel.whatsNew.dismiss": "اغلاق",
|
|
506
|
+
"panel.alert.noEditor": "لا يوجد محرر في PATH. انسخ المسار: {path}",
|
|
507
|
+
"panel.alert.pathRelative": "يجب ان يكون المسار نسبيا للمشروع (بدون \"/\" في البداية او \"..\").",
|
|
508
|
+
"panel.tip.saveTo": "حفظ في {path}",
|
|
509
|
+
"panel.tip.saveToMemory": "(الذاكرة)",
|
|
510
|
+
"panel.button.saveAs": "حفظ باسم...",
|
|
511
|
+
"panel.aria.concurrentRuns": "عمليات متزامنة",
|
|
512
|
+
"panel.activity.allProjects": "كل المشاريع",
|
|
513
|
+
"panel.activity.loadingFeed": "جار تحميل الموجز...",
|
|
514
|
+
"panel.feedback.savedShort": "تم الحفظ",
|
|
515
|
+
"panel.pair.qrFailed": "تعذر انشاء رمز QR.",
|
|
516
|
+
"panel.brain.modePlan": "Plan (اشتراك)",
|
|
517
|
+
"panel.brain.modeConsole": "Console (مفتاح API)",
|
|
518
|
+
"panel.brain.applying": "جار تطبيق {mode}...",
|
|
519
|
+
"panel.brain.applied": "تم تطبيق {mode}. الدور التالي يستخدم هذا الوضع بالفعل.",
|
|
520
|
+
"panel.brain.reopenHint": "يُطبق عند اعادة فتح اللوحة.",
|
|
521
|
+
"panel.brain.active": "{mode} نشط",
|
|
522
|
+
"panel.bridge.roleHost": "مضيف",
|
|
523
|
+
"panel.bridge.roleClient": "عميل",
|
|
524
|
+
"panel.bridge.instanceOne": "نسخة",
|
|
525
|
+
"panel.bridge.instanceMany": "نسخ",
|
|
526
|
+
"panel.bridge.you": "انت",
|
|
527
|
+
"panel.tip.deleteTask": "حذف المهمة",
|
|
528
|
+
"panel.tasks.cmdPlaceholder": "الامر (مثال: pnpm install)...",
|
|
529
|
+
"panel.readAloud.code": "كود",
|
|
530
|
+
"panel.readAloud.codeLang": "كود بلغة {lang}",
|
|
531
|
+
"panel.readAloud.file": "الملف {file}",
|
|
532
|
+
"panel.readAloud.content": "المحتوى: {content}",
|
|
533
|
+
"panel.pizarron.tabOne": "علامة تبويب",
|
|
534
|
+
"panel.pizarron.tabMany": "علامات تبويب"
|
|
535
|
+
}
|