feat(torrent): complete lifecycle controls and diagnostics

- add durable Torrent telemetry, availability, sharing, relocation, and web-seed workflows\n- fence queue ownership, lifecycle recovery, persistence, and native control races\n- add localized UI, generated bindings, regression coverage, and smoke validation
This commit is contained in:
NimBold
2026-08-04 01:18:24 +03:30
parent 55a905df14
commit 579a8f7f80
33 changed files with 3505 additions and 139 deletions
+49 -6
View File
@@ -96,6 +96,7 @@ const fa = {
completed: 'تکمیل‌شده',
failed: 'ناموفق',
retrying: 'در حال تلاش مجدد',
moving: 'در حال جابه‌جایی داده',
},
values: {
processing: 'در حال پردازش…',
@@ -288,11 +289,16 @@ const fa = {
torrentPieceProgressSummary: '{{completed}} از {{total}} قطعه کامل شده · هرکدام {{size}}',
torrentPieceProgressMap: 'نقشه تکمیل قطعه‌های تورنت',
torrentWebSeeds: 'وب‌سیدهای تورنت',
torrentWebSeedsHint: 'هر خط به‌شکل شماره فایل|نشانی HTTP(S). مسیر فایل‌های چندفایلی را Firelink در بخش native می‌سازد.',
torrentWebSeedsPlaceholder: '۰|https://mirror.example/torrent/',
torrentWebSeedsHint: 'برای هر فایل تورنت یک نشانی پایهٔ HTTP(S) اضافه کنید. Firelink مسیر فایل‌های چندفایلی را خودش می‌سازد.',
torrentWebSeedsApply: 'اعمال وب‌سیدها',
torrentWebSeedsLoading: 'در حال اعمال…',
torrentWebSeedsFailed: 'اعتبارسنجی یا اعمال وب‌سیدهای تورنت انجام نشد.',
torrentWebSeedsEmpty: 'وب‌سیدی تنظیم نشده است.',
torrentWebSeedsFile: 'فایل',
torrentWebSeedsUri: 'نشانی پایهٔ HTTP(S)',
torrentWebSeedsAdd: 'افزودن وب‌سید',
torrentWebSeedsRemove: 'حذف وب‌سید',
torrentWebSeedsInvalid: 'هر ردیف وب‌سید باید فایل معتبر تورنت و نشانی پایهٔ HTTP(S) بدون اطلاعات ورود یا fragment داشته باشد.',
torrentPeerCount: '{{total}} همتا · {{seeders}} سید',
torrentPeerDownload: 'دریافت',
torrentPeerUpload: 'آپلود',
@@ -300,12 +306,22 @@ const fa = {
torrentPeerAmChoking: 'محدودسازی از طرف Firelink',
torrentPeerChoking: 'محدودسازی از طرف همتا',
torrentPeerShowing: 'نمایش {{shown}} همتا از {{total}} همتا.',
torrentStatistics: 'آمار تورنت',
torrentUploaded: 'آپلودشده',
torrentRatio: 'نسبت',
torrentSeededDuration: 'مدت سید',
torrentConnectedPeers: 'همتاها',
torrentSeeders: 'سیدها',
torrentUploadSpeed: 'سرعت آپلود',
seconds: 'ثانیه',
torrentStopTimeout: 'توقف تورنتِ بدون سرعت پس از',
torrentStopTimeoutHint: 'آریا۲ پس از این تعداد ثانیه پیاپی با سرعت صفر، تورنت را متوقف می‌کند. ۰ این سیاست را غیرفعال می‌کند؛ تغییرات هنگام شروع یا تلاش مجدد اعمال می‌شوند.',
torrentStopTimeoutInvalid: 'مهلت توقف تورنت باید عددی صحیح بین ۰ و ۶۰۴۸۰۰ ثانیه باشد',
torrentPrioritizePiece: 'اولویت‌بندی قطعه‌های تورنت',
torrentPrioritizePieceHint: 'سیاست اختیاری پیش‌نمایش آریا۲: ابتدا، انتها یا هر دو؛ برای هرکدام می‌توان اندازه‌ای مثل 1M نوشت. تغییرات هنگام شروع یا تلاش مجدد اعمال می‌شوند.',
torrentPrioritizePiece: 'اولویت دادن به قطعه‌های ابتدا/انتها برای پیش‌نمایش',
torrentPrioritizePieceHead: 'اولویت قطعه‌های ابتدا',
torrentPrioritizePieceTail: 'اولویت قطعه‌های انتها',
torrentPrioritizePieceSize: 'اندازهٔ بازهٔ پیش‌نمایش',
torrentPrioritizePieceHint: 'سیاست اختیاری پیش‌نمایش. هر بازهٔ فعال به‌طور پیش‌فرض 1M است و هنگام شروع یا تلاش مجدد اعمال می‌شود.',
torrentPrioritizePieceInvalid: 'اولویت قطعه‌های تورنت باید شامل ابتدا یا انتها، با اندازه اختیاری بین 1K و 1024M باشد',
torrentEncryptionPolicy: 'سیاست رمزنگاری تورنت',
torrentFileAllocation: 'نحوهٔ تخصیص فایل تورنت',
@@ -313,6 +329,28 @@ const fa = {
torrentFileAllocationNone: 'تخصیص هنگام نیاز',
torrentFileAllocationHint: 'تخصیص از پیش فضای فایل‌های انتخاب‌شده را قبل از انتقال رزرو می‌کند؛ تخصیص هنگام نیاز این رزرو اولیه را انجام نمی‌دهد.',
torrentDetails: 'جزئیات تورنت',
torrentCopyMagnet: 'کپی پیوند مگنت',
torrentExportMetadata: 'خروجی .torrent',
torrentMagnetCopied: 'مگنت فقط-هویتی کپی شد.',
torrentMagnetCopyFailed: 'کپی پیوند مگنت ناموفق بود.',
torrentMetadataExported: 'فراداده تورنت خروجی گرفته شد.',
torrentMetadataExportFailed: 'خروجی فراداده تورنت ناموفق بود.',
torrentMove: 'جابه‌جایی داده…',
torrentMoveLoading: 'در حال جابه‌جایی…',
torrentMoveCancel: 'لغو جابه‌جایی',
torrentMoveCancelRequested: 'درخواست لغو جابه‌جایی ارسال شد…',
torrentMoveConfirm: 'داده تورنت مدیریت‌شده به این پوشه منتقل شود؟ فایل‌های موجود هرگز بازنویسی نمی‌شوند.',
torrentMoveCompleted: 'داده تورنت جابه‌جا شد.',
torrentMoveFailed: 'جابه‌جایی داده تورنت ناموفق بود.',
torrentAvailability: 'دسترس‌پذیری شبکه',
torrentAvailabilityRefresh: 'تازه‌سازی',
torrentAvailabilityLoading: 'در حال بارگیری دسترس‌پذیری…',
torrentAvailabilityUnavailable: 'دسترس‌پذیری برای تورنت فعال یا متوقف در دسترس است.',
torrentAvailabilityFailed: 'خواندن دسترس‌پذیری تورنت ناموفق بود.',
torrentAvailabilityHint: 'فقط شمارش کلی کپی‌ها نمایش داده می‌شود؛ هویت همتاها و بیت‌فیلد خام هرگز نمایش داده نمی‌شوند.',
torrentAvailabilitySummary: '{{availability}} کپی در دسترس · {{peers}} همتای متصل · {{pieces}} قطعه',
torrentAvailabilityMap: 'نقشه دسترس‌پذیری شبکه تورنت',
torrentAvailabilityBucket: 'حداقل {{copies}} کپی در این بازه',
torrentDetailsLoading: 'در حال دریافت جزئیات تورنت…',
torrentDetailsUnavailable: 'جزئیات تورنت در دسترس نیست.',
torrentDetailsDisplayName: 'نام نمایشی',
@@ -513,12 +551,14 @@ const fa = {
moveOneFailed: 'انتقال دانلود به صف ناموفق بود',
copyAddressesFailed: 'آدرس‌ها کپی نشدند',
copyAddressFailed: 'آدرس کپی نشد',
copyMagnetFailed: 'پیوند مگنت کپی نشد',
copyPathFailed: 'مسیر فایل کپی نشد',
missingFileName: 'نام فایل وجود ندارد',
redownloadFailed: 'دانلود مجدد ناموفق بود',
startResume: 'شروع/ادامه',
addToQueue: 'افزودن به صف',
copyAddress: 'کپی آدرس',
copyMagnet: 'کپی پیوند مگنت',
remove: 'حذف',
open: 'باز کردن',
showInFolder: 'نمایش در پوشه',
@@ -603,8 +643,11 @@ const fa = {
torrentStopTimeout: 'توقف تورنتِ بدون سرعت پس از',
torrentStopTimeoutHint: 'آریا۲ پس از این تعداد ثانیه پیاپی با سرعت صفر، تورنت را متوقف می‌کند. ۰ این سیاست را غیرفعال می‌کند.',
torrentStopTimeoutInvalid: 'مهلت توقف تورنت باید عددی صحیح بین ۰ و ۶۰۴۸۰۰ ثانیه باشد',
torrentPrioritizePiece: 'اولویت‌بندی قطعه‌های تورنت',
torrentPrioritizePieceHint: 'با این تورنت ذخیره و در شروع یا تلاش مجدد بعدی اعمال می‌شود. ابتدا، انتها یا هر دو را با اندازه اختیاری K یا M وارد کنید.',
torrentPrioritizePiece: 'اولویت دادن به قطعه‌های ابتدا/انتها برای پیش‌نمایش',
torrentPrioritizePieceHead: 'اولویت قطعه‌های ابتدا',
torrentPrioritizePieceTail: 'اولویت قطعه‌های انتها',
torrentPrioritizePieceSize: 'اندازهٔ بازهٔ پیش‌نمایش',
torrentPrioritizePieceHint: 'قطعه‌های ابتدا، انتها یا هر دو را برای پیش‌نمایش انتخاب کنید. هر بازهٔ فعال به‌طور پیش‌فرض 1M است و در شروع یا تلاش مجدد بعدی اعمال می‌شود.',
torrentPrioritizePieceInvalid: 'اولویت قطعه‌های تورنت باید شامل ابتدا یا انتها، با اندازه اختیاری بین 1K و 1024M باشد',
torrentEncryptionPolicy: 'سیاست رمزنگاری تورنت',
torrentEncryptionPolicyHint: 'با این تورنت ذخیره و در شروع یا تلاش مجدد بعدی اعمال می‌شود. سیاست انتخابی تنظیمات رمزنگاری آریا۲ را سازگار نگه می‌دارد.',