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 he = {
completed: 'הושלם',
failed: 'נכשל',
retrying: 'ניסיון חוזר',
moving: 'מעביר נתונים',
},
values: {
processing: 'מעבד…',
@@ -288,11 +289,16 @@ const he = {
torrentPieceProgressSummary: '{{completed}} מתוך {{total}} חלקים הושלמו · {{size}} לכל חלק',
torrentPieceProgressMap: 'מפת השלמת חלקי הטורנט',
torrentWebSeeds: 'זריעות Web של טורנט',
torrentWebSeedsHint: 'שורה אחת לכל זרע בפורמט file index|כתובת HTTP(S). Firelink מרחיב נתיבי קבצים מרובי-קבצים באופן מקורי.',
torrentWebSeedsPlaceholder: '0|https://מראה.example/torrent/',
torrentWebSeedsHint: 'הוסף כתובת בסיס HTTP(S) אחת לכל קובץ טורנט. Firelink מרחיב נתיבים של טורנטים מרובי-קבצים.',
torrentWebSeedsApply: 'החל זריעות Web',
torrentWebSeedsLoading: 'מיישם…',
torrentWebSeedsFailed: 'לא ניתן לאמת או להחיל את זריעות ה-Web של הטורנט.',
torrentWebSeedsEmpty: 'לא הוגדרו זריעות Web.',
torrentWebSeedsFile: 'קובץ',
torrentWebSeedsUri: 'כתובת בסיס HTTP(S)',
torrentWebSeedsAdd: 'הוסף זריעת Web',
torrentWebSeedsRemove: 'הסר זריעת Web',
torrentWebSeedsInvalid: 'כל שורת זריעת Web צריכה קובץ טורנט תקין וכתובת בסיס HTTP(S) ללא פרטי התחברות או fragment.',
torrentPeerCount: '{{total}} עמיתים · {{seeders}} משתפים',
torrentPeerDownload: 'הורדה',
torrentPeerUpload: 'העלאה',
@@ -300,12 +306,22 @@ const he = {
torrentPeerAmChoking: 'Firelink מגביל',
torrentPeerChoking: 'העמית מגביל',
torrentPeerShowing: 'מוצגים {{shown}} מתוך {{total}} עמיתים.',
torrentStatistics: 'סטטיסטיקות טורנט',
torrentUploaded: 'הועלה',
torrentRatio: 'יחס',
torrentSeededDuration: 'משך שיתוף',
torrentConnectedPeers: 'עמיתים',
torrentSeeders: 'משתפים',
torrentUploadSpeed: 'מהירות העלאה',
seconds: 'שניות',
torrentStopTimeout: 'עצירת טורנט תקוע לאחר',
torrentStopTimeoutHint: 'Aria2 יעצור את הטורנט לאחר מספר זה של שניות רצופות במהירות 0 B/s. 0 משבית את המדיניות; השינוי חל כשהטורנט מתחיל או מנסה שוב.',
torrentStopTimeoutInvalid: 'זמן העצירה של טורנט תקוע חייב להיות מספר שלם בין 0 ל-604800 שניות',
torrentPrioritizePiece: 'תעדוף חלקי טורנט',
torrentPrioritizePieceHint: 'מדיניות תצוגה מקדימה אופציונלית של Aria2: התחלה, סוף או שניהם; לכל אחד אפשר לציין גודל כמו 1M. השינוי חל בהפעלה או בניסיון חוזר.',
torrentPrioritizePiece: 'תעדוף החלקים הראשונים/האחרונים לתצוגה מקדימה',
torrentPrioritizePieceHead: 'תעדף חלקים ראשונים',
torrentPrioritizePieceTail: 'תעדף חלקים אחרונים',
torrentPrioritizePieceSize: 'גודל טווח התצוגה המקדימה',
torrentPrioritizePieceHint: 'מדיניות תצוגה מקדימה אופציונלית. כל טווח מופעל מתחיל ב־1M ומוחל כשהטורנט מופעל או מנסה שוב.',
torrentPrioritizePieceInvalid: 'תעדוף חלקי טורנט חייב לכלול התחלה ו/או סוף, עם גודל אופציונלי בין 1K ל-1024M',
torrentEncryptionPolicy: 'מדיניות הצפנת Torrent',
torrentFileAllocation: 'הקצאת קובצי Torrent',
@@ -313,6 +329,28 @@ const he = {
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 he = {
moveOneFailed: 'לא ניתן להעביר הורדה לתור',
copyAddressesFailed: 'לא ניתן להעתיק כתובות',
copyAddressFailed: 'לא ניתן להעתיק כתובת',
copyMagnetFailed: 'לא ניתן להעתיק את קישור המגנט',
copyPathFailed: 'לא ניתן להעתיק נתיב קובץ',
missingFileName: 'שם הקובץ חסר',
redownloadFailed: 'הורדה מחדש נכשלה',
startResume: 'הפעלה/חידוש',
addToQueue: 'הוספה לתור',
copyAddress: 'העתקת כתובת',
copyMagnet: 'העתקת קישור מגנט',
remove: 'הסרה',
open: 'פתיחה',
showInFolder: 'הצגה בתיקייה',
@@ -603,8 +643,11 @@ const he = {
torrentStopTimeout: 'עצירת טורנט תקוע לאחר',
torrentStopTimeoutHint: 'Aria2 יעצור את הטורנט לאחר מספר זה של שניות רצופות במהירות 0 B/s. 0 משבית את המדיניות.',
torrentStopTimeoutInvalid: 'זמן העצירה של טורנט תקוע חייב להיות מספר שלם בין 0 ל-604800 שניות',
torrentPrioritizePiece: 'תעדוף חלקי טורנט',
torrentPrioritizePieceHint: 'נשמר עם הטורנט ומוחל בהפעלה או בניסיון חוזר. יש להזין התחלה, סוף או שניהם עם גודל K או M אופציונלי.',
torrentPrioritizePiece: 'תעדוף החלקים הראשונים/האחרונים לתצוגה מקדימה',
torrentPrioritizePieceHead: 'תעדף חלקים ראשונים',
torrentPrioritizePieceTail: 'תעדף חלקים אחרונים',
torrentPrioritizePieceSize: 'גודל טווח התצוגה המקדימה',
torrentPrioritizePieceHint: 'בחר חלקים ראשונים, אחרונים או את שניהם לתצוגה מקדימה. כל טווח מופעל מתחיל ב־1M ומוחל בהפעלה או בניסיון חוזר הבא.',
torrentPrioritizePieceInvalid: 'תעדוף חלקי טורנט חייב לכלול התחלה ו/או סוף, עם גודל אופציונלי בין 1K ל-1024M',
torrentEncryptionPolicy: 'מדיניות הצפנת Torrent',
torrentEncryptionPolicyHint: 'נשמרת עם ה-Torrent ומוחלת בהפעלה או בניסיון חוזר. המדיניות שומרת על הגדרות ההצפנה של Aria2 עקביות.',