/** * The ar (Arabic) dictionary for the betterSidebar namespace. * * Mirrors the key set of `zh` in `locales.ts`. The sidebar's `t()` * consults this dict when `attachBetterLocale(store)` has been called * with an active better-locale store whose `active` is `'ar'`; absent * that, the existing zh/en chain runs unchanged. * * Translation conventions: * - Modern Standard Arabic (فصحى); UI text is RTL-ready (the framework * handles direction). * - Git vocabulary follows standard Arabic localizations (إدراج، تثبيت، فرع). * - Placeholders keep `{name}` verbatim (interpolation runs after lookup). * - English brand names (VS Code, Cursor, Zed, SSH, Git, HTML, PDF, Markdown) * stay as-is. */ /** The ar dictionary (key-set-equal to zh, enforced by the type annotation in locales.ts). */ export const ar: Record = { files: 'الملفات', explorer: 'المستكشف', git: 'إدارة المصدر', terminal: 'الطرفية', editor: 'المحرّر', editorExplorer: 'سلوك فتح الملفات', editorExplorerDesc: 'يتحكّم في كيفية فتح الملفات', editorExplorerMerged: 'مدمج', editorExplorerMergedDesc: 'الملفات تتبدّل في مكانها داخل نفس النافذة؛ النوافذ الجديدة تبدأ بالشجرة مفتوحة', editorExplorerSplit: 'منفصل', editorExplorerSplitDesc: 'النوافذ بلا مسار هي المستكشف المستقل (شجرة فقط)؛ كل ملف يفتح نافذته الخاصة (الشجرة مرساة، مغلقة افتراضياً)', editorTreeToggle: 'لوحة شجرة الملفات', editorPathPlaceholder: 'مسار الملف (نسبي لدليل الجلسة أو مطلق)، Enter للفتح', editorSearchPlaceholder: 'البحث في الملفات بالاسم…', editorSearchNoResults: 'لا ملفات مطابقة', editorSearchTruncated: 'نتائج كثيرة جداً — عرض قائمة جزئية', editorEmptyHint: 'اختر ملفاً من لوحة الشجرة أو من حقل المسار بالأعلى لبدء المعاينة', openFileNewTab: 'فتح في تبويب جديد', openFileSide: 'فتح إلى الجانب', openWithMenu: 'فتح بواسطة', openWithSshSuffix: ' (SSH)', pinOpenWith: 'تثبيت في القائمة', unpinOpenWith: 'إلغاء التثبيت', openWithExplorer: 'مدير الملفات', openWithVscode: 'VS Code', openWithCursor: 'Cursor', openWithZed: 'Zed', openWithSettingsSshTitle: 'مضيف SSH البعيد', openWithSettingsSshDesc: 'فارغ = مساحة عمل محلية؛ مع user@host أو اسم مستعار SSH، تتحوّل فواتح عائلة VSCode إلى بروتوكول vscode-remote/ssh-remote ويُخفى مدير الملفات وZed والمحرّرات المخصّصة غير التابعة لعائلة VSCode من القائمة', openWithSettingsSshPlaceholder: 'user@host أو اسم مستعار SSH', openWithSettingsCustomTitle: 'محرّرات مخصّصة', openWithSettingsCustomDesc: 'اسم + قالب URL (عنصر نائب {path}) + علامة عائلة VSCode؛ في الوضع البعيد، يمكن فقط لمحرّرات عائلة VSCode فتح مسار بعيد', openWithSettingsAdd: 'إضافة', openWithSettingsName: 'الاسم', openWithSettingsTemplate: 'مثل cursor://file/{path}', openWithSettingsFamily: 'عائلة VSCode', openWithSettingsFamilyDesc: 'يتحدّث هذا المحرّر لهجة URL لـ VSCode (يدعم الفتح عبر SSH البعيد)', openWithSettingsRemove: 'إزالة', openWithSettingsInvalidHint: 'لن تظهر المحرّرات التي تفتقر إلى الاسم أو القالب (يلزم أن يحتوي على {path} ويبدأ بـ scheme://) في القائمة', newTab: 'تبويب جديد', openExplorer: 'المستكشف', brokenSymlink: 'رابط رمزي معطوب', openGit: 'لوحة Git', newTerminal: 'طرفية جديدة', terminalLimit: 'تم بلوغ حد الطرفيات (3)', close: 'إغلاق', closeOtherTabs: 'إغلاق التبويبات الأخرى', closeLeftTabs: 'إغلاق التبويبات على اليسار', closeRightTabs: 'إغلاق التبويبات على اليمين', moveToFreeWindow: 'النقل إلى نافذة حرة', floatDropHint: 'حرّك للفتح في نافذة حرة', dockToSidebar: 'العودة إلى الشريط الجانبي', pinTerminal: 'تثبيت الطرفية', pinAgentTerminal: 'تثبيت طرفية Agent', pinToWorkspace: 'تثبيت إلى مساحة العمل', pinToGlobal: 'تثبيت عام', unpinTerminal: 'إلغاء التثبيت', pinnedTerminalTooltip: '{kind} · {scope} · {cwd}', pinnedTerminalKindUi: 'واجهة طرفية', pinnedTerminalKindAgent: 'طرفية Agent', pinnedTerminalScopeWorkspace: 'مثبتة في مساحة العمل', pinnedTerminalScopeGlobal: 'مثبتة عام', pinnedRailLabel: 'الطرفيات المثبتة', closePinnedTerminal: 'إغلاق الطرفية', collapse: 'طي الشريط الجانبي', expand: 'توسيع الشريط الجانبي', collapseBottomPanel: 'طي اللوحة السفلية', expandBottomPanel: 'توسيع اللوحة السفلية', terminalError: 'فشل اتصال الطرفية', terminalConnectFailed: 'فشل اتصال الطرفية عدة مرات', terminalRetry: 'إعادة المحاولة', terminalDepsFailed: 'فشل تحميل تبعية الطرفية node-pty', terminalDepsHint: 'شغّل الأمر التالي في طرفية أو cmd على جهاز DSH للإصلاح، ثم أعد المحاولة (يبقى node-pty متزامناً مع إصدار نواة DSH):', terminalDepsProfile: ' (الملف الشخصي المكتشف: {profile})', preview: 'معاينة', toc: 'الفهرس', edit: 'تحرير', mermaidError: 'فشل رسم Mermaid', mermaidZoomIn: 'تكبير', mermaidZoomOut: 'تصغير', mermaidZoomReset: 'إعادة تعيين', mermaidZoomHint: 'العجلة للتقريب · السحب للتحريك · Esc للإغلاق', refresh: 'تحديث', showInFolder: 'إظهار في المجلد', refreshUnsavedConfirm: 'تغيّر الملف على القرص. سيؤدي التحديث إلى فقدان التعديلات غير المحفوظة. متابعة؟', save: 'حفظ', saved: 'تم الحفظ', unsaved: 'غير محفوظ', saveFailed: 'فشل الحفظ', truncation: 'الملف كبير جداً — عرض أول 512KB', binary: 'ملف ثنائي، المعاينة غير متاحة', loading: 'جارٍ التحميل…', error: 'فشل التحميل', retry: 'إعادة المحاولة', splitLeft: 'تقسيم يساراً', splitRight: 'تقسيم يميناً', splitUp: 'تقسيم لأعلى', splitDown: 'تقسيم لأسفل', notRepo: 'هذا الدليل ليس مستودع git', noChanges: 'لا تغييرات', statusTruncated: 'التغييرات كثيرة جدًا؛ يتم عرض أول 2000 إدخال فقط', stage: 'إدراج', unstage: 'إلغاء الإدراج', stageAll: 'إدراج الكل', unstageAll: 'إلغاء إدراج الكل', commitPlaceholder: 'رسالة التثبيت (Ctrl+Enter)', commit: 'تثبيت', commitError: 'فشل التثبيت', branch: 'الفرع', worktree: 'شجرة العمل', checkoutError: 'فشل تبديل الفرع', history: 'السجل', changes: 'التغييرات', staged: 'مُدرج', unstaged: 'غير مُدرج', cancel: 'إلغاء', diffEmpty: 'لا تغييرات نصية', diffLoadError: 'فشل تحميل الفرق', diffBinary: 'ثنائي', diffAdded: 'مُضاف', diffDeleted: 'محذوف', diffRenamed: 'إعادة تسمية', diffExpand: 'إظهار {count} صفوف أخرى', diffCollapse: 'طي', discard: 'تجاهل التغييرات', discardTitle: 'تجاهل التغييرات', discardDesc: 'هذا يتجاهل تغييرات مساحة العمل في "{path}" (غير قابل للاستعادة).', viewCommitDiff: 'عرض فرق التثبيت', copyShortHash: 'نسخ الهاش القصير', copyFullHash: 'نسخ الهاش الكامل', copySubject: 'نسخ موضوع التثبيت', revertCommit: 'عكس التثبيت', revertTitle: 'عكس التثبيت', revertDesc: 'ينشئ تثبيتاً جديداً على الفرع الحالي يعكس "{subject}".', cherryPickCommit: 'اقتطاف التثبيت', cherryPickTitle: 'اقتطاف التثبيت', cherryPickDesc: 'يطبّق تغييرات "{subject}" على الفرع الحالي.', timeJustNow: 'الآن', timeMinutesAgo: 'منذ {n} دقيقة', timeHoursAgo: 'منذ {n} ساعة', timeYesterday: 'أمس', loadMore: 'تحميل المزيد', historyLoadError: 'فشل تحميل المزيد من السجل', produced: 'النواتج', producedOpen: 'فتح في الشريط الجانبي', disconnected: 'انقطع اتصال الطرفية، جارٍ إعادة الاتصال…', exited: 'خرجت عملية الطرفية', noSession: 'اختر محادثة لاستخدام الشريط الجانبي', pluginNotLoaded: 'الإضافة غير محمّلة؛ التبويب غير متاح:', hiddenFiles: 'ملفات مخفية', parent: 'الدليل الأصل', copied: 'تم النسخ', copy: 'نسخ', newFile: 'ملف جديد', openEditor: 'فتح المحرّر', gitDetail: 'عرض تفاصيل التغيير', referenceFile: '@ملف', addToConversation: 'إضافة إلى المحادثة', copyRelative: 'نسخ المسار النسبي', copyAbsolute: 'نسخ المسار المطلق', download: 'تنزيل', uploadFiles: 'رفع ملفات', uploadFolder: 'رفع مجلد', uploadHere: 'ارفع هنا', uploadDropHint: 'أسقط الملفات/المجلدات هنا للرفع', uploadDropChat: 'الإسقاط على منطقة المحادثة: إضافة صور إلى المحادثة', uploadTo: 'رفع إلى {dir}', uploadingTo: 'جارٍ الرفع إلى {dir}…', uploadProgress: 'جارٍ الرفع {done}/{total}: {name}', uploadDone: 'تم رفع {count} ملف', uploadFailed: 'فشل الرفع: {error}', uploadFailedUnknown: 'خطأ غير معروف', uploadTooLarge: 'الملف كبير جداً (يتجاوز حد الرفع)', uploadCancelled: 'تم إلغاء الرفع', settingsNav: 'البطاقة الجانبية', settingsIntro: 'إدارة ما تعرضه البطاقة الجانبية وكيف تتصرف', settingsPopupDesc: 'تكوين خيارات ذات صلة بـ {feature}', settingsDone: 'تم', settingsOpenTitle: 'فتح افتراضياً للمحادثات الجديدة', settingsOpenDesc: 'توسيع البطاقة الجانبية تلقائياً للمحادثات الجديدة تماماً؛ المحادثات الموجودة تحتفظ بتخطيطاتها', settingsWidthTitle: 'الحصة الافتراضية للعرض', settingsWidthDesc: 'الحصة الافتراضية للبطاقة الجانبية من عرض النافذة للمحادثات الجديدة (20–60)', settingsWidthSuffix: '%', settingsOpenPathTitle: 'فتح ملفات المحادثة في الشريط الجانبي', settingsOpenPathDesc: 'فتح روابط الملفات في المحادثة (صفوف الأدوات، الملفات الناتجة، الإشارات) في محرّر الشريط الجانبي بدلاً من التطبيق الافتراضي للنظام', settingsOpenToolsTitle: 'حقن أداة فتح الشريط الجانبي للنموذج', settingsOpenToolsDesc: 'عند التفعيل، يمكن للنموذج فتح الملفات والمجلدات وصفحات HTTP(S) في الشريط الجانبي عبر أداة sidebar_open (معطّل افتراضياً)', settingsTitleBarTitle: 'وضع توافق الموضع', settingsTitleBarDesc: 'اختر نظام توافق الشريط العلوي: كشف تلقائي (افتراضي، محافظ) / ويب DSH الرسمي / أغلفة سطح المكتب المعروفة / مخصّص (مسافة الإزاحة + CSS مخصّص)', settingsTitleBarStripTitle: 'مسافة الإزاحة', settingsTitleBarStripDesc: 'ارتفاع شريط الشريط العلوي: كم بكسل تتحرك به أزرار الشريط الجانبي والمحتوى للأسفل (0–120، افتراضي 40؛ يسري تحت النظام المخصّص)', settingsSchemeAutoTitle: 'كشف تلقائي', settingsSchemeAutoDesc: 'محافظ: يساهم فقط معيار Window Controls Overlay API (ارتفاع التسمية التوضيحية الحقيقي)؛ بيئات الويب العادية لا تعدّل شيئاً', settingsSchemeWebTitle: 'ويب DSH الرسمي', settingsSchemeWebDesc: 'صراحة: الإعلان عن تشغيل في واجهة الويب الرسمية: لا أي تكيّف (حتى هندسة WCO القياسية لا تطبّق)', settingsSchemeCustomTitle: 'مخصّص', settingsSchemeCustomDesc: 'تحكّم كامل: حقن CSS مخصّص (يمكن أن يلغي الأنماط المدمجة) وتحديد مسافة إزاحة الشريط العلوي', settingsSchemeDetectedSuffix: 'تم الكشف', settingsCustomCssTitle: 'CSS مخصّص', settingsCustomCssDesc: 'أنماط تُضاف في نهاية الصفحة (المكتوب لاحقاً يكسر التعادل في نفس الأولوية؛ استخدم !important لتلغي المتغيرات المكتوبة بواسطة JS)', settingsCustomCssPlaceholder: '/* مثال: حجز 36px لغلاف له شريط علوي مرسوم ذاتياً */\nhtml[data-dsh-title-bar-height="36"] {\n --dsh-title-bar-strip: 36px !important;\n}', settingsSaveFailed: 'فشل الحفظ', settingsConflict: 'تغيّر الإعداد في نافذة أخرى — يُرجى إعادة المحاولة', binaryNoPreview: 'لا يمكن معاينة هذا النوع من الملفات', downloadToView: 'تنزيل للعرض', settingsSubagentTitle: 'فتح صفحة المهام تلقائياً عند ظهور وكيل فرعي', settingsSubagentDesc: 'توسيع البطاقة الجانبية وفتح صفحة المهام عند توليد المحادثة الحالية لوكيل فرعي جديد؛ أوقفها للفتح يدوياً', settingsJobsTitle: 'فتح صفحة المهام الخلفية تلقائياً عند مهمة خلفية جديدة', settingsJobsDesc: 'توسيع البطاقة الجانبية وفتح صفحة المهام الخلفية عند ظهور مهمة خلفية جديدة للمحادثة الحالية (كل مهمة جديدة تُطلق ذلك)؛ أوقفها للفتح يدوياً', settingsToolsTitle: 'حقن أدوات الطرفية للنموذج', settingsToolsDesc: 'عند التفعيل، يمكن للنموذج إنشاء وتشغيل طرفيات الشريط الجانبي عبر أدوات terminal_* الثمانية (معطّل افتراضياً)', settingsBottomTerminalTitle: 'فتح طرفية تلقائياً عند أول توسيع للوحة السفلية', settingsBottomTerminalDesc: 'عند توسيع اللوحة السفلية لأول مرة في الجلسة، حاول فتح تبويب طرفية جديد هناك (حصة الطرفيات ما زالت تسري؛ مفعّل افتراضياً)', settingsFontFamilyTitle: 'عائلة خط الطرفية', settingsFontFamilyDesc: 'عائلة خط الطرفية المخصّصة (مكدس CSS font-family مثل "JetBrains Mono", monospace؛ اتركه فارغاً لاتّباع خط السمة أحادي المسافة)', settingsFontFamilyPlaceholder: '"JetBrains Mono", monospace', settingsFontSizeTitle: 'حجم خط الطرفية', settingsFontSizeDesc: 'حجم خط الطرفية بالبكسل (9–32، افتراضي 13)', settingsFontSizeSuffix: 'px', settingsShellTitle: 'مسار الصدفة', settingsShellDesc: 'الصدفة التي تُطلق لطرفيات الواجهة والنموذج (مسار مطلق أو اسم تنفيذي مجرّد). الفراغ يحافظ على الترتيب القائم: yaml config.shell ← $SHELL / صدفة الدخول / Windows powershell.exe. يسري على الطرفيات المفتوحة لاحقاً', settingsShellPlaceholder: 'مثل /bin/zsh (فارغ = تلقائي)', settingsShellArgsTitle: 'وسائط الصدفة', settingsShellArgsDesc: 'وسائط صدفة صريحة، مفصولة بمسافات؛ عند عدم الفراغ تستبدل الافتراضيات بالكامل (نفس عقد yaml shellArgs)', settingsShellArgsPlaceholder: 'مثل -l (فارغ = الافتراضيات)', settingsTabsTitle: 'محتوى الشريط الجانبي', settingsViewersTitle: 'عارضات الملفات', settingsGeneralTitle: 'عام', settingsPopup: 'إعدادات الميزة', settingsViewerCatchAll: 'شامل: أي ملف', viewerImage: 'صورة', viewerPdf: 'PDF', viewerMarkdown: 'Markdown', viewerCode: 'كود', viewerBinary: 'تنزيل ثنائي', viewerHtml: 'HTML', browser: 'المتصفح', browserPlaceholder: 'أدخل عنوان URL، مثل example.com', browserGo: 'اذهب', browserBack: 'للخلف', browserForward: 'للأمام', browserStart: 'أدخل عنوان URL لبدء التصفح (وضع الحماية)', browserBlockedScheme: 'محظور: يُسمح فقط بعناوين URL من نوع http/https', browserBlockedLoopback: 'محظور: لا يمكن تصفّح العناوين المحلية والداخلية هنا', browserInvalid: 'عنوان URL غير صالح', browserNoSandboxWarning: 'الحماية معطّلة: الصفحة الحالية تعمل بكامل صلاحيات الواجهة (يمكن إعادة تفعيلها في الإعدادات)', htmlNoSandboxWarning: 'الحماية معطّلة: يعمل هذا HTML بنفس أصل الواجهة — يمكنه قراءة ملفات الجلسة وواجهات API الداخلية (يمكن إعادة تفعيلها في الإعدادات)', sandboxStatusOn: 'وضع الحماية: مفعّل · لا يمكن للصفحات الوصول إلى بيانات الواجهة أو الملفات المحلية؛ قد لا تعمل تسجيلات الدخول وملفات الارتباط التابعة لجهات خارجية', sandboxUnlock: 'تعطيل مؤقت (غير آمن)', sandboxRestore: 'استعادة الحماية', settingsHtmlDefaultUnsafeTitle: 'فتح معاينات HTML بدون حماية افتراضياً (غير آمن)', settingsHtmlDefaultUnsafeDesc: 'عند التفعيل، تبدأ كل معاينة HTML مفتوحة حديثاً في الحالة غير المحمية (نفس أصل الواجهة — يمكنها قراءة ملفات الجلسة وواجهات API الداخلية)؛ يوفر صف الحالة استعادة بلمسة واحدة', settingsHtmlSandboxTitle: 'تعطيل حماية معاينة HTML (غير آمن)', settingsHtmlSandboxDesc: 'مع تعطيل الحماية، يعمل HTML المعاين بنفس أصل الواجهة: يمكنه قراءة ملفات الجلسة والتخزين المحلي واستدعاء واجهات API الداخلية. فعّله فقط للملفات الموثوقة بالكامل', settingsBrowserSandboxTitle: 'تعطيل حماية المتصفح (غير آمن)', settingsBrowserSandboxDesc: 'مع تعطيل الحماية، يعمل أي موقع تزوره بنفس أصل الواجهة: يمكنه قراءة بيانات الجلسة وانتحال جلسة تسجيل الدخول الخاصة بك. فعّله فقط للمواقع الموثوقة بالكامل', settingsBrowserLinksTitle: 'فتح الروابط الخارجية للمحادثة في الشريط الجانبي', settingsBrowserLinksDesc: 'عند التفعيل، النقر على رابط خارجي في المحادثة أو الواجهة يفتح الشريط الجانبي بدلاً من نافذة جديدة؛ يتحكّم في HTTP وHTTPS بشكل منفصل بالمبدلات بالأسفل؛ Ctrl/Cmd+نقر يتجاوز دائماً', settingsBrowserHttpTitle: 'فتح صفحات HTTP في الشريط الجانبي', settingsBrowserHttpDesc: 'عند التفعيل، النقر على رابط HTTP خارجي في المحادثة أو الواجهة يفتح الشريط الجانبي (صفحات الإضافات المعرّفة عن urlTarget تفوز)؛ Ctrl/Cmd+نقر يتجاوز دائماً', settingsBrowserHttpsTitle: 'فتح صفحات HTTPS في الشريط الجانبي', settingsBrowserHttpsDesc: 'عند التفعيل، النقر على رابط HTTPS خارجي في المحادثة أو الواجهة يفتح الشريط الجانبي. معطّل افتراضياً: معظم مواقع HTTPS ترفض التضمين، لذا فالمتصفح الافتراضي للنظام هو الخيار الأنسب', settingsBrowserLoopbackTitle: 'العناوين المحلية المسموح بها', settingsBrowserLoopbackDesc: 'قائمة بيضاء مفصولة بفواصل لعناوين الاسترجاع المحلي (مثل localhost:5174 أو 127.0.0.1:8080) يمكن للمتصفح الجانبي زيارتها؛ فارغة افتراضيًا تمنع جميع العناوين المحلية. تظل صندوق الحماية سارية — لا يمكن للصفحات قراءة بيانات الواجهة', settingsBrowserLoopbackPlaceholder: 'مثال localhost:5174, 127.0.0.1:8080', browserOpenExternal: 'فتح في المتصفح', browserEmbedBlocked: 'رفض {host} التضمين', browserEmbedBlockedDesc: 'يحظر الموقع عرضه داخل صفحات أخرى (X-Frame-Options / frame-ancestors)، لذا لا يمكن تحميله في الشريط الجانبي. افتحه مباشرة في متصفحك بدلاً من ذلك.', browserEmbedAnyway: 'تحميل على أي حال', subagent: 'المهام', openSubagent: 'المهام', subagentMainAgent: 'الوكيل الرئيسي', subagentEmpty: 'لا وكلاء فرعيون', subagentEmptyDesc: 'الوكلاء الفرعيون المُنتَجون تحت الوكيل الرئيسي سيظهرون هنا', subagentRunning: 'قيد التشغيل', subagentInactive: 'خامل', subagentModeOneShot: 'مرة واحدة', subagentModeContinuable: 'قابل للاستئناف', subagentCount: '{count} وكلاء فرعيون', subagentCountRunning: '{count} وكلاء فرعيون · {running} قيد التشغيل', subagentDiagCorrupt: 'تالف', subagentDiagUnsupported: 'غير مدعوم', subagentDiagUnavailable: 'غير متاح', subagentThinking: 'جارٍ التفكير…', sideChat: 'محادثة جانبية (تجريبية)', sideChatNew: 'خيط جديد', sideChatUntitled: 'خيط جديد', sideChatEmpty: 'لا محادثات جانبية', sideChatEmptyDesc: 'كل محادثة جانبية هي تبويب مستقل في شريط التبويبات — ترث سياق الجلسة الحالية ولا تدخل المحادثة الرئيسية', sideChatCreating: 'جارٍ إنشاء محادثة جانبية…', sideChatRetry: 'إعادة المحاولة', sideChatThreads: 'تبديل خيط / جديد', sideChatSave: 'حفظ كجلسة جديدة', sideChatSaveTitle: 'ترقية هذا الخيط إلى جلسة عالية المستوى في قائمة الجلسات الرئيسية', sideChatSaved: 'تم الحفظ كجلسة جديدة', sideChatNoTurn: 'الحفظ متاح بعد أول دور مكتمل', sideChatPendingDrop: 'لن يُضمَّ آخر متابعة لم يُجَب عنها في الجلسة المحفوظة', sideChatFirstPlaceholder: 'اطرح السؤال الأول — السياق موروث…', sideChatComposerPlaceholder: 'متابعة…', sideChatThinking: 'جارٍ التعمّق…', sideChatThink: 'التفكير', sideChatInjection: 'تم حقن السياق', sideChatSend: 'إرسال', sideChatCancel: 'إيقاف', sideChatCancelTitle: 'إلغاء الدور الجاري (يُحتفظ بالعمل في قائمة الانتظار)', sideChatClose: 'إغلاق الخيط', sideChatCloseTitle: 'تحرير وكيل الخيط (يُحتفظ بالسجل)', sideChatError: 'خطأ في المحادثة الجانبية: {message}', jobs: 'المهام الخلفية', jobsCount: '{count} مهمة خلفية', jobsCountRunning: '{count} مهمة خلفية · {running} قيد التشغيل', jobStatusRunning: 'قيد التشغيل', jobStatusStopping: 'جارٍ الإيقاف', jobStatusCompleted: 'اكتمل', jobStatusKilled: 'تم الإنهاء', jobStatusFailed: 'فشل', jobDurationSeconds: '{seconds}ث', jobDurationMinutes: '{minutes}د {seconds}ث', jobDurationHours: '{hours}س {minutes}د', jobViewOutput: 'عرض الإخراج', jobHideOutput: 'إخفاء الإخراج', jobNoOutput: 'لا إخراج بعد', jobNotReadYet: 'في انتظار قراءة النموذج لإخراج هذه المهمة؛ سيظهر الإخراج هنا بمجرد أن يشغّل النموذج job_output', jobOutputTruncated: 'الإخراج مقطوع', jobOutputError: 'فشل قراءة الإخراج', jobKill: 'إنهاء', jobKillConfirm: 'انقر مجدداً للتأكيد على الإنهاء', jobKillError: 'فشل الإنهاء', addPluginsTabCard: 'إضافة إضافات تبويب', addPluginsTabCardDesc: 'تسجيل صفحة شريط جانبي جديدة', addPluginsViewerCard: 'إضافة إضافات معاينة', addPluginsViewerCardDesc: 'تسجيل معاينة نوع ملف', addPluginsTabDesc: 'يمكن توسيع صفحات الشريط الجانبي (التبويبات) بواسطة الإضافات. تُسجَّل الإضافات عبر خدمة ctx.betterSidebar؛ النقر على «تثبيت» ينسخ أمر التثبيت — الصقه في طرفية حيث يقيم ملف DSH الشخصي وشغّله.', addPluginsViewerDesc: 'يمكن توسيع عارضات الملفات بواسطة الإضافات. تُسجَّل الإضافات عبر خدمة ctx.betterSidebar؛ النقر على «تثبيت» ينسخ أمر التثبيت — الصقه في طرفية حيث يقيم ملف DSH الشخصي وشغّله.', addPluginsBrowseMore: 'تصفّح المزيد من الإضافات على GitHub (topic: dsh-better-sidebar)', addPluginsSearch: 'البحث باسم الإضافة / الوصف…', addPluginsNoMatch: 'لا إضافات مطابقة', addPluginsRecommended: 'إضافات موصى بها', addPluginsEmpty: 'لا إضافات منسّقة بعد — انشر إضافتك تحت موضوع GitHub', openPlugin: 'فتح', copyInstall: 'نسخ أمر التثبيت', pluginOfficeDesc: 'معاينة حزمة Office (.docx / .xlsx / .pptx) لمحرّر better-sidebar، مع إبقاء مكتبات عرض Office الثقيلة خارج الحزمة الأساسية، تُثبَّت عند الطلب', pluginFlowglassDesc: 'مخطط تدفق جلسة حيّ بثلاثة مسارات للمستخدم والمساعد واستدعاءات الأدوات، مع مجموعات متوازية وفروع وكلاء فرعيين وتعمّق تدريجي وحالة حيّة؛ يُسجِّل تبويب Flowglass الأصلي عند تثبيت better-sidebar ويحتفظ بدرجه المستقل كاحتياط', pluginGitForgeDesc: 'تبويب Git Forge: مكتبة حسابات GitHub/Gitea (وغيرها من Forges) + منح لكل مشروع + سياسة دفع صارمة؛ تبقى الرموز في الأسرار المحلية (لا تدخل سياق النموذج)؛ أداة GitForge للقراءة فقط ومساعد بيانات اعتماد HTTPS للوكيل', pluginGithubWorkbenchDesc: 'تبويب GitHub Workbench: شجرة المستودع البعيد + Issues / Pull requests / Actions مع دعم كامل للكتابة — إنشاء Issue/PR، والتعليق، والتعديل، والإغلاق/إعادة الفتح، والدمج عبر squash·merge·rebase (بتأكيد قوي)، وإعادة تشغيل CI أو إلغائها؛ يعرض مبدّل المستودعات تلقائيًا المستودعات المتاحة ويتيح البحث في المستودعات العامة؛ وبدون better-sidebar يتحول تلقائيًا إلى لوحة جانبية مستقلة على اليمين', pluginMdExportDesc: 'يضيف زر «تصدير» إلى شريط أدوات Markdown في better-sidebar: يعرض ملف .md الحالي بنقرة واحدة كملف HTML مستقل (الجداول/كتل الأكواد/مخططات Mermaid مدمجة، والتخطيط يتبع سمة المعاينة) ويحفظه بجوار الملف، أو يصدّره PDF عبر نافذة الطباعة', pluginCodeNavDesc: 'تنقل معاينة الكود: يكتشف اللغة تلقائياً من نوع الملف ويبرز الصياغة، مخطط الرموز (تصفية الفئات/الطرق/المتغيرات + قفزة بنقرة واحدة)، والبحث داخل الملف (إبراز كل التطابقات، السابق/التالي، مطابقة حالة الأحرف) — يتولى معاينة ملفات الكود في محرر better-sidebar', pluginSuhuangScrollDesc: 'يربط بيئة Suhuang Scroll المحلية بإعدادات DSH وbetter-sidebar لإعداد النموذج واختبار الاتصال والتحكم في التصحيح المتواصل؛ يتطلب Suhuang Scroll Runtime وdsh-better-sidebar', pluginGitRemotesDesc: 'تبويب Git Remotes: فرع/أصل/أمام-خلف، fetch (مع prune اختياري)، ff-only pull، والدفع فقط بعد تأكيد داخل التبويب. لا يستبدل تبويب Git المدمج للإدراج/التثبيت، ولا يقدّم force-push أو أداة دفع آلي للنموذج', pluginSentinelDesc: 'نظام إيقاظ وكيل يحرّكه تحقّق الشروط: مستشعرات ملف/عملية/منفذ/HTTP/أمر/webhook توقظ الجلسات الخاملة عند تحقّق الشرط؛ يُسجِّل تبويب «Sentinel» مع جدول مراقبة شامل للخادم', pluginServerDeckDesc: 'لوحة بطاقات الخوادم: بطاقة لكل خادم تعرض حالة الاتصال ونظام التشغيل ومدة التشغيل واستخدام المعالج/الذاكرة/القرص وزمن الاستجابة؛ انقر على البطاقة لفتح طرفية xterm.js تفاعلية؛ استيراد ~/.ssh/config بنقرة واحدة (يتم تجاهل أسماء مواقع Git المستعارة تلقائياً). يسجّل تبويب «الخوادم» الأصلي عند تثبيت better-sidebar ويحافظ على الدرج الجانبي المستقل كبديل', pluginSidebarQaDesc: 'حدِّد واسأل: تحديد نص المحادثة ← السؤال في اللوحة اليمنى ← جلسة متابعات مخصّصة في نفس مساحة العمل (❓ متابعة · موضوع): نموذج سريع بلا تفكير يضغط سياق المحادثة الرئيسي ويحقنه مع الاقتباس دون مقاطعة المحادثة الرئيسية؛ المتابعات تتداخل وتستمر وتُؤرشف', pluginSidenoteDesc: 'محادثة جانبية بأسلوب Codex + تعليقات على التحديد: أنشئ fork للجلسة الحالية في لوحة جانبية دائمة (تُؤرشف فتُخفى من قائمة الجلسات، تعمل نسخ متعددة معًا، أمر /side، تبقى بعد إعادة التحميل، والنموذج يتبع الجلسة الرئيسية)؛ حدِّد نص الـ assistant ← شارة مرقّمة + محرّر ملاحظات ← chip "N تعليقات" يُرفق برسالتك التالية، أو اسأل مباشرةً في محادثة جانبية', pluginSshTunnelDesc: 'تبويب «SSH Tunnel»: قائمة مضيفين متعددين + منح لكل مشروع + أسرار محلية؛ أداة SSHManager للنموذج (exec/SFTP/استراتيجيات الجلسة)؛ طرفية تفاعلية مركزية وSFTP ذو عمودين', pluginTurnReviewDesc: 'بوابة بشرية على فرق «الدور المنتهي للتو»: Approve / Request changes لكل مسار مع تعليق اختياري؛ المسارات مجمّعة حسب الجلسة الرئيسية / الوكيل الفرعي / غير منسوب؛ فرق snapshot-vs-now مضمّن قبل القرار. لا تفريع، لا /rewind', pluginVideoPreviewDesc: 'معاينة فيديو مضمّنة (.mp4/.webm/.mov/.mkv/.avi إلخ) في محرّر better-sidebar، مدعومة بمسار /video مخصّص يدعم HTTP Range (206) — التحكم بالتشغيل يعمل والملفات غير مقيدة بحد mediaLimit البالغ 20MB', pluginDocsPanelDesc: '«وثائق عامة» في شريط DSH الجانبي: ملاحظات Markdown عامة، قابلة للقراءة من أي مساحة عمل — قائمة ملفات، مخطط تفصيلي، فتح في Chrome / VS Code، وأزرار نسخ؛ دليل الوثائق قابل للتكوين (الافتراضي ~/.dsh/docs)', pluginEgoBrowserDesc: 'متصفح الوكيل لـ DeepSeek Harness: 32 أداة ego_* تقود متصفح Chromium حقيقي، مع تبويب «متصفح ego» أصلي في الشريط الجانبي يعرض مباشرة كل صفحة يزورها الوكيل — يمكنك النقر والسحب والكتابة لتولي التحكم. يسجّل التبويب تلقائيًا عند وجود better-sidebar، وإلا يظهر كفقاعة عائمة', pluginBilingualReaderDesc: 'اقرأ ملفات PDF في الشريط الجانبي لـ DSH: عرض PDF أصلي، حدد نصًا لترجمته بواسطة النموذج اللغوي مع السياق، معزولًا تمامًا عن المحادثة الرئيسية', }