feat: type the plugin host record, move plugin strings out of core and add lint checks

This commit is contained in:
LukeGus committed 2026-09-29 13:08:39 -05:00
1 parent bba06f7ff6
commit b8bbcd2196
626 files changed
+23884 -4590

No files matched your search

@@ -382,7 +382,10 @@
"defaultPathLabel": "المسار الافتراضي",
"fileManagerPathHint": "الدليل الذي سيتم فتحه عند تشغيل مدير الملفات لهذا المضيف.",
"fileManagerUrlCopied": "تم نسخ رابط مدير الملفات",
"copyFileManagerUrlAction": "نسخ رابط مدير الملفات"
"copyFileManagerUrlAction": "نسخ رابط مدير الملفات",
"docsLink": "عرض المستندات",
"hostNotFound": "المضيف غير موجود",
"loadingHost": "جارٍ تحميل المضيف..."
},
"settings": {
"host": {
@@ -406,5 +409,105 @@
"nav": {
"sftp": "SFTP",
"files": "الملفات"
},
"onboarding": {
"feature_files": "مدير الملفات",
"feature_files_desc": "تصفح الملفات وقم بتحميلها وتنزيلها وتعديلها عبر بروتوكول SFTP دون مغادرة التطبيق."
},
"terminal": {
"runTitle": "تشغيل {{command}} - {{host}}",
"terminalTitle": "الطرفية - {{host}}",
"terminalWithPath": "الطرفية - {{host}}:{{path}}"
},
"transfer": {
"browseFolders": "تصفح مجلدات الوجهة",
"browsePathError": "تعذر فتح هذا المسار على المضيف الوجهة.",
"browsePathWillBeCreated": "هذا المجلد غير موجود بعد. سيتم إنشاؤه عند بدء النقل.",
"cancel": "إلغاء",
"cleanupDestFiles": "تنظيف الوجهة",
"cleanupDestFilesError": "فشل التنظيف",
"cleanupDestFilesNothing": "لا شيء للتنظيف على الوجهة",
"cleanupDestFilesPartial": "تعذر إزالة بعض الملفات الجزئية",
"cleanupDestFilesSuccess": "تمت إزالة الملفات الجزئية من الوجهة",
"confirmCopy": "نسخ",
"confirmMove": "نقل",
"copyFolderToHost": "نسخ المجلد إلى المضيف…",
"copyItemsToHost": "نسخ {{count}} عناصر إلى المضيف…",
"copyToHost": "نسخ إلى المضيف…",
"destinationPath": "مسار الوجهة",
"destMustBeDirectory": "يجب أن تكون الوجهة مجلدًا لنقل عناصر متعددة",
"goUp": "للأعلى",
"hostAuthRequired": "المصادقة مطلوبة — افتح مدير الملفات على هذا المضيف أولاً",
"hostConnecting": "جارٍ الاتصال…",
"hostConnectionFailed": "فشل الاتصال",
"hostDisconnected": "غير متصل",
"hostReady": "جاهز",
"itemsSummary": "{{count}} عنصر",
"jumpHostLimitation": "يجب أن يكون كلا المضيفين قابلين للوصول من خادم Termix. التوجيه المباشر من مضيف إلى مضيف غير مدعوم.",
"methodAuto": "تلقائي",
"methodAutoHint": "يختار tar أو SFTP لكل ملف بناءً على عدد الملفات وحجمها وقابلية الضغط. الملفات المفردة تستخدم دائمًا SFTP التدفقي.",
"methodItemSftp": "SFTP لكل ملف",
"methodItemSftpHint": "نقل كل ملف على حدة عبر SFTP. يعمل على جميع المضيفين بما في ذلك Windows.",
"methodItemSftpLimitation": "يستخدم كل ملف نفس تدفق SFTP كنسخ الملف الواحد، واحداً تلو الآخر. يُجمع التقدم عبر جميع الملفات، لذا يتحرك الشريط ببطء أثناء الملفات الكبيرة.",
"methodLabel": "طريقة النقل",
"methodPreviewError": "تعذّر معاينة طريقة النقل. سيختار الخادم طريقة عند بدء النقل.",
"methodPreviewLoading": "جارٍ حساب طريقة النقل…",
"methodPreviewScanSummary": "{{fileCount}} ملفات، {{totalSize}} إجمالي (تم المسح على المضيف المصدر).",
"methodPreviewWillUseItemSftp": "سيُستخدم: SFTP لكل ملف",
"methodPreviewWillUseTar": "سيُستخدم: أرشيف Tar",
"methodReason": {
"user_item_sftp": "اخترت SFTP لكل ملف.",
"user_tar": "اخترت أرشيف tar.",
"tar_unavailable": "tar غير متوفر على أحد المضيفين أو كليهما — سيُستخدم SFTP لكل ملف بدلاً من ذلك.",
"windows_host": "يوجد مضيف Windows — لا يُستخدم tar.",
"auto_multi_large": "تلقائي: عدة ملفات بما فيها ملف كبير ({{largestSize}}) ببيانات قابلة للضغط — يجمعها tar في حزمة واحدة.",
"auto_single_large_in_archive": "تلقائي: ملف كبير واحد ({{largestSize}}) في هذه المجموعة — SFTP لكل ملف.",
"auto_many_incompressible": "تلقائي: البيانات غالبًا غير قابلة للضغط — SFTP لكل ملف.",
"auto_many_files": "تلقائي: عدة ملفات ({{fileCount}}) — يقلل tar الحمل لكل ملف.",
"auto_default": "تلقائي: SFTP لكل ملف لهذه المجموعة."
},
"methodTar": "أرشيف Tar",
"methodTarHint": "ضغط على المصدر، نقل أرشيف واحد، فك على الوجهة. يتطلب tar على كلا المضيفين Unix.",
"metricsCompress": "ضغط على المصدر: {{duration}}",
"metricsExtract": "فك على الوجهة: {{duration}}",
"metricsPrepare": "تحضير الوجهة: {{duration}}",
"metricsRouteBenchmark": "مسبار المسار — مباشر: {{direct}}، مرحل: {{relay}}",
"metricsSourceDelete": "إزالة من المصدر: {{duration}}",
"metricsTotal": "الإجمالي: {{duration}}",
"metricsTransfer": "نقل شامل: {{throughput}} ({{duration}})",
"metricsVerify": "تم التحقق من SHA-256: {{duration}}",
"moveFolderToHost": "نقل المجلد إلى المضيف…",
"moveItemsToHost": "نقل {{count}} عناصر إلى المضيف…",
"moveToHost": "نقل إلى المضيف…",
"noHostsConnected": "لا تتوفر مضيفات أخرى لمدير الملفات.",
"noHostsConnectedHint": "أضف مضيف SSH آخر مع تمكين مدير الملفات في مدير المضيفات.",
"parallelSegmentsHint": "تُقسم الملفات الكبيرة إلى أجزاء بحجم 256 ميغابايت. تستخدم المسارات المتعددة اتصالات منفصلة (مثل بدء عدة عمليات نقل) لتحقيق إنتاجية إجمالية أعلى.",
"parallelSegmentsLabel": "مسارات النقل المتوازية",
"parallelSegmentsOption": "{{count}} مسارات",
"progressBenchmarking": "اختيار أسرع مسار نقل…",
"progressBytes": "{{transferred}} / {{total}}",
"progressCancel": "إلغاء",
"progressCancelling": "جارٍ الإلغاء…",
"progressCompressing": "جارٍ الضغط على المضيف المصدر…",
"progressExtracting": "جارٍ الفك على الوجهة…",
"progressItems": "{{current}} / {{total}} ملفات",
"progressReconnecting": "جارٍ إعادة الاتصال…",
"progressStalled": "متوقف",
"progressTotalSpeed": "{{speed}} إجمالي ({{lanes}} مسارات)",
"progressTransferring": "جارٍ نقل البيانات…",
"progressTransferringItems": "جارٍ نقل الملفات ({{current}} من {{total}})…",
"progressVerifying": "التحقق من سلامة الملف…",
"recentDestinations": "الوجهات الأخيرة",
"resumedHint": "تمت إعادة الاتصال بنقل نشط بدأ في نافذة أخرى.",
"retryTransfer": "إعادة المحاولة",
"retryTransferError": "فشلت إعادة المحاولة",
"selectDestinationHost": "تحديد المضيف الوجهة",
"transferCancelled": "تم إلغاء النقل",
"transferCancelledCopyHint": "قد تبقى ملفات جزئية على الوجهة.",
"transferCancelledMoveHint": "قد تبقى ملفات جزئية على الوجهة. لم يتم حذف ملفات المصدر.",
"transferError": "فشل النقل",
"transferFailedRetryHint": "تم الاحتفاظ بالبيانات الجزئية على الوجهة. ستُستأنف إعادة المحاولة عند عودة الاتصال.",
"transferPartialHint": "تعذر النقل: {{paths}}",
"transferSuccess": "اكتمل النقل"
}
}