fix(ui): clarify download properties inputs

This commit is contained in:
NimBold
2026-08-06 23:58:06 +03:30
parent c9046f8273
commit e2654510af
12 changed files with 679 additions and 51 deletions
+20
View File
@@ -247,6 +247,20 @@ const common = {
connectionCountUnknown: '—/{{total}}',
connectionsUnavailable: '—',
speedCap: 'Speed cap',
inputFormat: 'Format: {{format}}',
inputFormatSpeedLimit: '512K, 2M, or 1G',
inputFormatMaxPeers: '01000; 0 means unlimited',
inputFormatSeedTime: 'minutes, e.g. 60',
inputFormatSeedRatio: 'decimal, e.g. 1.5; 0 means time-only',
inputFormatStopTimeout: 'whole seconds; 0 disables it',
inputFormatPiecePriority: 'head=1M,tail=1M',
inputExampleSpeedLimit: 'e.g. 512K',
inputExampleMaxPeers: 'e.g. 55',
inputExampleSeedTime: 'e.g. 60',
inputExampleSeedRatio: 'e.g. 1.5',
inputExampleStopTimeout: 'e.g. 300',
inputExamplePiecePriority: 'e.g. head=1M,tail=1M',
speedLimitHint: 'Leave blank to use the global default; enter a value to set a cap for this download.',
liveSpeedLimit: 'Live speed cap',
liveSpeedLimitHint: 'Applies to active normal downloads only. Media downloads cannot be changed while running.',
liveSpeedLimitPlaceholder: 'e.g. 1024K',
@@ -336,6 +350,7 @@ const common = {
torrentUploaded: 'Uploaded',
torrentRatio: 'Ratio',
torrentSeededDuration: 'Seeded',
torrentSeedTimeHint: 'How long this Torrent may continue seeding after its files finish downloading. Leave blank to use the default.',
torrentConnectedPeers: 'Peers',
torrentSeeders: 'Seeders',
torrentUploadSpeed: 'Upload speed',
@@ -354,6 +369,8 @@ const common = {
torrentFileAllocationPrealloc: 'Preallocate files',
torrentFileAllocationNone: 'Allocate as needed',
torrentFileAllocationHint: 'Preallocation reserves the selected files before transfer. Allocation as needed avoids that upfront disk reservation.',
torrentOptionsBehavior: 'Torrent behavior',
torrentOptionsBehaviorHint: 'Controls verification, storage allocation, encryption, and cleanup for this Torrent.',
torrentDetails: 'Torrent details',
torrentCopyMagnet: 'Copy magnet link',
torrentExportMetadata: 'Export .torrent',
@@ -412,6 +429,9 @@ const common = {
defaultValue: ' (default)',
savedTooltip: 'Saved for this download; Settings changes apply to new downloads.',
defaultTooltip: 'Using the current default for new downloads.',
blankUsesDefault: 'Leave blank · use default',
usingDefault: 'Using default',
customPerDownload: 'Custom for this download',
identityReadOnly: 'File identity is read-only. Transfer settings are saved for redownload.',
transferSettings: 'Transfer settings can be changed after stopping or pausing. Current transfers keep their existing backend options.',
download: 'Download',
+20
View File
@@ -247,6 +247,20 @@ const fa = {
connectionCountUnknown: '—/{{total}} فعال',
connectionsUnavailable: '—',
speedCap: 'سقف سرعت',
inputFormat: 'قالب: {{format}}',
inputFormatSpeedLimit: '512K، 2M یا 1G',
inputFormatMaxPeers: '0 تا 1000؛ 0 یعنی نامحدود',
inputFormatSeedTime: 'دقیقه، مثلاً 60',
inputFormatSeedRatio: 'عدد اعشاری، مثلاً 1.5؛ 0 یعنی فقط بر اساس زمان',
inputFormatStopTimeout: 'تعداد ثانیهٔ کامل؛ 0 غیرفعال می‌کند',
inputFormatPiecePriority: 'head=1M,tail=1M',
inputExampleSpeedLimit: 'مثلاً 512K',
inputExampleMaxPeers: 'مثلاً 55',
inputExampleSeedTime: 'مثلاً 60',
inputExampleSeedRatio: 'مثلاً 1.5',
inputExampleStopTimeout: 'مثلاً 300',
inputExamplePiecePriority: 'مثلاً head=1M,tail=1M',
speedLimitHint: 'برای استفاده از مقدار سراسری خالی بگذارید؛ برای این دانلود یک سقف مشخص وارد کنید.',
liveSpeedLimit: 'سقف سرعت زنده',
liveSpeedLimitHint: 'فقط برای دانلودهای عادیِ فعال اعمال می‌شود. سرعت دانلودهای رسانه‌ای هنگام اجرا قابل تغییر نیست.',
liveSpeedLimitPlaceholder: 'مثلاً 1024K',
@@ -336,6 +350,7 @@ const fa = {
torrentUploaded: 'آپلودشده',
torrentRatio: 'نسبت',
torrentSeededDuration: 'مدت سید',
torrentSeedTimeHint: 'مدتی که تورنت پس از تکمیل دانلود به سید ادامه می‌دهد. برای استفاده از پیش‌فرض خالی بگذارید.',
torrentConnectedPeers: 'همتاها',
torrentSeeders: 'سیدها',
torrentUploadSpeed: 'سرعت آپلود',
@@ -354,6 +369,8 @@ const fa = {
torrentFileAllocationPrealloc: 'تخصیص از پیش',
torrentFileAllocationNone: 'تخصیص هنگام نیاز',
torrentFileAllocationHint: 'تخصیص از پیش فضای فایل‌های انتخاب‌شده را قبل از انتقال رزرو می‌کند؛ تخصیص هنگام نیاز این رزرو اولیه را انجام نمی‌دهد.',
torrentOptionsBehavior: 'رفتار تورنت',
torrentOptionsBehaviorHint: 'بررسی صحت، تخصیص فضا، رمزنگاری و پاک‌سازی این تورنت را کنترل می‌کند.',
torrentDetails: 'جزئیات تورنت',
torrentCopyMagnet: 'کپی پیوند مگنت',
torrentExportMetadata: 'خروجی .torrent',
@@ -412,6 +429,9 @@ const fa = {
defaultValue: ' (پیش‌فرض)',
savedTooltip: 'برای این دانلود ذخیره‌شده است؛ تغییرات تنظیمات روی دانلودهای جدید اعمال می‌شود.',
defaultTooltip: 'استفاده از پیش‌فرض کنونی برای دانلودهای جدید.',
blankUsesDefault: 'خالی = استفاده از پیش‌فرض',
usingDefault: 'استفاده از پیش‌فرض',
customPerDownload: 'سفارشی برای این دانلود',
identityReadOnly: 'هویت فایل فقط‌خواندنی است. تنظیمات انتقال برای دانلود مجدد ذخیره می‌شوند.',
transferSettings: 'تنظیمات انتقال را می‌توان پس از توقف تغییر داد. انتقال‌های کنونی گزینه‌های فعلی خود را حفظ می‌کنند.',
download: 'دانلود',
+20
View File
@@ -247,6 +247,20 @@ const he = {
connectionCountUnknown: '—/{{total}} פעילות',
connectionsUnavailable: '—',
speedCap: 'הגבלת מהירות',
inputFormat: 'תבנית: {{format}}',
inputFormatSpeedLimit: '512K, 2M או 1G',
inputFormatMaxPeers: '01000; ‏0 פירושו ללא הגבלה',
inputFormatSeedTime: 'בדקות, למשל 60',
inputFormatSeedRatio: 'מספר עשרוני, למשל 1.5; ‏0 פירושו לפי זמן בלבד',
inputFormatStopTimeout: 'שניות שלמות; ‏0 משבית',
inputFormatPiecePriority: 'head=1M,tail=1M',
inputExampleSpeedLimit: 'לדוגמה 512K',
inputExampleMaxPeers: 'לדוגמה 55',
inputExampleSeedTime: 'לדוגמה 60',
inputExampleSeedRatio: 'לדוגמה 1.5',
inputExampleStopTimeout: 'לדוגמה 300',
inputExamplePiecePriority: 'לדוגמה head=1M,tail=1M',
speedLimitHint: 'השאר ריק כדי להשתמש בערך הגלובלי, או הזן הגבלה עבור הורדה זו.',
liveSpeedLimit: 'הגבלת מהירות בזמן אמת',
liveSpeedLimitHint: 'חל על הורדות רגילות פעילות בלבד. אי אפשר לשנות הורדות מדיה בזמן שהן פועלות.',
liveSpeedLimitPlaceholder: 'לדוגמה 1024K',
@@ -336,6 +350,7 @@ const he = {
torrentUploaded: 'הועלה',
torrentRatio: 'יחס',
torrentSeededDuration: 'משך שיתוף',
torrentSeedTimeHint: 'משך הזמן שבו הטורנט ימשיך לשתף לאחר סיום ההורדה. השאר ריק כדי להשתמש בברירת המחדל.',
torrentConnectedPeers: 'עמיתים',
torrentSeeders: 'משתפים',
torrentUploadSpeed: 'מהירות העלאה',
@@ -354,6 +369,8 @@ const he = {
torrentFileAllocationPrealloc: 'הקצאה מראש',
torrentFileAllocationNone: 'הקצאה לפי הצורך',
torrentFileAllocationHint: 'הקצאה מראש שומרת מקום לקבצים לפני ההעברה; הקצאה לפי הצורך נמנעת מהשמירה הראשונית.',
torrentOptionsBehavior: 'התנהגות Torrent',
torrentOptionsBehaviorHint: 'שולט באימות, הקצאת האחסון, ההצפנה והניקוי של Torrent זה.',
torrentDetails: 'פרטי טורנט',
torrentCopyMagnet: 'העתקת קישור מגנט',
torrentExportMetadata: 'ייצוא .torrent',
@@ -412,6 +429,9 @@ const he = {
defaultValue: ' (ברירת מחדל)',
savedTooltip: 'נשמר עבור הורדה זו; שינויים בהגדרות יחולו על הורדות חדשות.',
defaultTooltip: 'שימוש בברירת המחדל הנוכחית להורדות חדשות.',
blankUsesDefault: 'ריק · שימוש בברירת המחדל',
usingDefault: 'ברירת מחדל',
customPerDownload: 'מותאם להורדה זו',
identityReadOnly: 'זהות הקובץ היא לקריאה בלבד. הגדרות ההעברה נשמרות להורדה מחדש.',
transferSettings: 'ניתן לשנות את הגדרות ההעברה לאחר עצירה או השהייה. העברות נוכחיות שומרות על אפשרויות המנוע הקיימות שלהן.',
download: 'הורדה',
+20
View File
@@ -247,6 +247,20 @@ const ru = {
connectionCountUnknown: '—/{{total}} активных',
connectionsUnavailable: '—',
speedCap: 'Ограничение скорости',
inputFormat: 'Формат: {{format}}',
inputFormatSpeedLimit: '512K, 2M или 1G',
inputFormatMaxPeers: '01000; 0 — без ограничений',
inputFormatSeedTime: 'минуты, например 60',
inputFormatSeedRatio: 'десятичное число, например 1.5; 0 — только по времени',
inputFormatStopTimeout: 'целые секунды; 0 отключает',
inputFormatPiecePriority: 'head=1M,tail=1M',
inputExampleSpeedLimit: 'например, 512K',
inputExampleMaxPeers: 'например, 55',
inputExampleSeedTime: 'например, 60',
inputExampleSeedRatio: 'например, 1.5',
inputExampleStopTimeout: 'например, 300',
inputExamplePiecePriority: 'например, head=1M,tail=1M',
speedLimitHint: 'Оставьте пустым для глобального значения по умолчанию или задайте ограничение для этой загрузки.',
liveSpeedLimit: 'Текущее ограничение скорости',
liveSpeedLimitHint: 'Применяется только к активным обычным загрузкам. Скорость медиазагрузок нельзя изменить во время работы.',
liveSpeedLimitPlaceholder: 'например, 1024K',
@@ -336,6 +350,7 @@ const ru = {
torrentUploaded: 'Отдано',
torrentRatio: 'Коэффициент',
torrentSeededDuration: 'Время раздачи',
torrentSeedTimeHint: 'Как долго Torrent продолжает раздачу после завершения загрузки. Оставьте пустым для значения по умолчанию.',
torrentConnectedPeers: 'Пиры',
torrentSeeders: 'Сиды',
torrentUploadSpeed: 'Скорость отдачи',
@@ -354,6 +369,8 @@ const ru = {
torrentFileAllocationPrealloc: 'Предварительное выделение',
torrentFileAllocationNone: 'Выделять по мере необходимости',
torrentFileAllocationHint: 'Предварительное выделение резервирует место до передачи; выделение по мере необходимости не делает начальное резервирование.',
torrentOptionsBehavior: 'Поведение Torrent',
torrentOptionsBehaviorHint: 'Управляет проверкой, выделением места, шифрованием и очисткой этого Torrent.',
torrentEncryptionPolicyHint: 'Применяется при запуске или повторной попытке Torrent. Выберите одну политику, чтобы параметры handshake и шифрования payload оставались согласованными.',
torrentDetails: 'Сведения о Torrent',
torrentCopyMagnet: 'Копировать magnet-ссылку',
@@ -412,6 +429,9 @@ const ru = {
defaultValue: ' (по умолчанию)',
savedTooltip: 'Сохранено для этой загрузки. Изменения в Настройках будут применяться к новым загрузкам.',
defaultTooltip: 'Используется текущее значение по умолчанию для новых загрузок.',
blankUsesDefault: 'Пусто · значение по умолчанию',
usingDefault: 'По умолчанию',
customPerDownload: 'Для этой загрузки',
identityReadOnly: 'Идентификация файла доступна только для чтения. Настройки передачи сохранены для повторного скачивания.',
transferSettings: 'Настройки передачи можно изменить после остановки или приостановки. Текущие загрузки сохраняют свои параметры.',
download: 'Загрузка',
+20
View File
@@ -247,6 +247,20 @@ const uk = {
connectionCountUnknown: '—/{{total}} активних',
connectionsUnavailable: '—',
speedCap: 'Обмеження швидкості',
inputFormat: 'Формат: {{format}}',
inputFormatSpeedLimit: '512K, 2M або 1G',
inputFormatMaxPeers: '01000; 0 означає без обмежень',
inputFormatSeedTime: 'хвилини, наприклад 60',
inputFormatSeedRatio: 'десяткове число, наприклад 1.5; 0 — лише за часом',
inputFormatStopTimeout: 'цілі секунди; 0 вимикає',
inputFormatPiecePriority: 'head=1M,tail=1M',
inputExampleSpeedLimit: 'наприклад, 512K',
inputExampleMaxPeers: 'наприклад, 55',
inputExampleSeedTime: 'наприклад, 60',
inputExampleSeedRatio: 'наприклад, 1.5',
inputExampleStopTimeout: 'наприклад, 300',
inputExamplePiecePriority: 'наприклад, head=1M,tail=1M',
speedLimitHint: 'Залиште порожнім для глобального значення за замовчуванням або задайте обмеження для цього завантаження.',
liveSpeedLimit: 'Поточне обмеження швидкості',
liveSpeedLimitHint: 'Застосовується лише до активних звичайних завантажень. Швидкість медіазавантажень не можна змінити під час роботи.',
liveSpeedLimitPlaceholder: 'наприклад, 1024K',
@@ -336,6 +350,7 @@ const uk = {
torrentUploaded: 'Віддано',
torrentRatio: 'Коефіцієнт',
torrentSeededDuration: 'Час роздачі',
torrentSeedTimeHint: 'Як довго Torrent продовжує роздачу після завершення завантаження. Залиште порожнім для значення за замовчуванням.',
torrentConnectedPeers: 'Піри',
torrentSeeders: 'Сіди',
torrentUploadSpeed: 'Швидкість віддачі',
@@ -354,6 +369,8 @@ const uk = {
torrentFileAllocationPrealloc: 'Попереднє виділення',
torrentFileAllocationNone: 'Виділяти за потреби',
torrentFileAllocationHint: 'Попереднє виділення резервує місце до передачі; виділення за потреби не робить початкового резервування.',
torrentOptionsBehavior: 'Поведінка Torrent',
torrentOptionsBehaviorHint: 'Керує перевіркою, виділенням місця, шифруванням і очищенням цього Torrent.',
torrentEncryptionPolicyHint: 'Застосовується під час запуску або повторної спроби Torrent. Виберіть одну політику, щоб параметри handshake і шифрування payload залишалися узгодженими.',
torrentDetails: 'Відомості про Torrent',
torrentCopyMagnet: 'Копіювати magnet-посилання',
@@ -412,6 +429,9 @@ const uk = {
defaultValue: ' (за замовчуванням)',
savedTooltip: 'Збережено для цього завантаження; зміни в налаштуваннях застосовуються до нових завантажень.',
defaultTooltip: 'Використовується поточне значення за замовчуванням для нових завантажень.',
blankUsesDefault: 'Порожньо · значення за замовчуванням',
usingDefault: 'За замовчуванням',
customPerDownload: 'Для цього завантаження',
identityReadOnly: 'Ідентифікатор файлу доступний лише для читання. Налаштування передачі збережено для повторного завантаження.',
transferSettings: 'Налаштування передачі можна змінити після зупинки або призупинення. Поточні передачі зберігають свої існуючі налаштування бекенду.',
download: 'Завантаження',
+20
View File
@@ -247,6 +247,20 @@ const zhCN = {
connectionCountUnknown: '—/{{total}} 个连接',
connectionsUnavailable: '—',
speedCap: '速度上限',
inputFormat: '格式:{{format}}',
inputFormatSpeedLimit: '512K、2M 或 1G',
inputFormatMaxPeers: '010000 表示不限',
inputFormatSeedTime: '分钟,例如 60',
inputFormatSeedRatio: '小数,例如 1.50 表示仅按时间',
inputFormatStopTimeout: '整数秒;0 表示禁用',
inputFormatPiecePriority: 'head=1M,tail=1M',
inputExampleSpeedLimit: '例如 512K',
inputExampleMaxPeers: '例如 55',
inputExampleSeedTime: '例如 60',
inputExampleSeedRatio: '例如 1.5',
inputExampleStopTimeout: '例如 300',
inputExamplePiecePriority: '例如 head=1M,tail=1M',
speedLimitHint: '留空以使用全局默认值;输入数值可为此下载设置上限。',
liveSpeedLimit: '实时速度上限',
liveSpeedLimitHint: '仅适用于正在进行的普通下载。媒体下载运行时无法更改速度。',
liveSpeedLimitPlaceholder: '例如 1024K',
@@ -336,6 +350,7 @@ const zhCN = {
torrentUploaded: '已上传',
torrentRatio: '分享率',
torrentSeededDuration: '做种时长',
torrentSeedTimeHint: '文件下载完成后继续做种的时长。留空以使用默认值。',
torrentConnectedPeers: '连接数',
torrentSeeders: '种子数',
torrentUploadSpeed: '上传速度',
@@ -354,6 +369,8 @@ const zhCN = {
torrentFileAllocationPrealloc: '预分配文件',
torrentFileAllocationNone: '按需分配',
torrentFileAllocationHint: '预分配会在传输前为选中文件预留空间;按需分配不会进行初始磁盘预留。',
torrentOptionsBehavior: 'Torrent 行为',
torrentOptionsBehaviorHint: '控制此 Torrent 的校验、存储分配、加密和清理。',
torrentEncryptionPolicyHint: '在 Torrent 启动或重试时应用。选择单一策略,确保握手和 payload 加密设置保持一致。',
torrentDetails: 'Torrent 详细信息',
torrentCopyMagnet: '复制磁力链接',
@@ -412,6 +429,9 @@ const zhCN = {
defaultValue: ' (默认)',
savedTooltip: '已为此下载保存;设置中的更改将应用于新的下载。',
defaultTooltip: '对新的下载使用当前默认值。',
blankUsesDefault: '留空 · 使用默认值',
usingDefault: '使用默认值',
customPerDownload: '此下载的自定义值',
identityReadOnly: '文件标识为只读。传输设置会保存以备重新下载使用。',
transferSettings: '停止或暂停后可以更改传输设置。当前的传输会保留其现有的后端选项。',
download: '下载',
+1
View File
@@ -112,6 +112,7 @@ describe('translation catalogs', () => {
'settings.network.firefoxMacos',
'settings.network.safariMacos',
'settings.network.torrentExternalIpPlaceholder',
'properties.inputFormatPiecePriority',
]);
const unexpectedDuplicates = duplicates