Merging upstream version 2.1.2~dev0+20231127.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e8cfe7bc1f
commit
11f26e4026
439 changed files with 3622 additions and 2691 deletions
11
.github/workflows/cd.yml
vendored
11
.github/workflows/cd.yml
vendored
|
@ -84,12 +84,13 @@ jobs:
|
|||
run: |
|
||||
pyinstaller --clean delugewin.spec --distpath freeze
|
||||
|
||||
- name: Fix OpenSSL for libtorrent x64
|
||||
if: ${{ matrix.arch == 'x64' }}
|
||||
working-directory: packaging/win/freeze/Deluge
|
||||
- name: Verify Deluge exes
|
||||
working-directory: packaging/win/freeze/Deluge/
|
||||
run: |
|
||||
cp libssl-1_1.dll libssl-1_1-x64.dll
|
||||
cp libcrypto-1_1.dll libcrypto-1_1-x64.dll
|
||||
deluge-debug.exe -v
|
||||
deluged-debug.exe -v
|
||||
deluge-web-debug.exe -v
|
||||
deluge-console -v
|
||||
|
||||
- name: Make Deluge Installer
|
||||
working-directory: ./packaging/win
|
||||
|
|
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
|
@ -37,7 +37,7 @@ jobs:
|
|||
- name: Install dependencies
|
||||
run: |
|
||||
pip install --upgrade pip wheel setuptools
|
||||
pip install -r requirements.txt -r requirements-tests.txt
|
||||
pip install -r requirements-ci.txt
|
||||
pip install -e .
|
||||
|
||||
- name: Install security dependencies
|
||||
|
@ -92,7 +92,7 @@ jobs:
|
|||
- name: Install dependencies
|
||||
run: |
|
||||
pip install --upgrade pip wheel setuptools
|
||||
pip install -r requirements.txt -r requirements-tests.txt
|
||||
pip install -r requirements-ci.txt
|
||||
pip install -e .
|
||||
|
||||
- name: Test with pytest
|
||||
|
|
|
@ -423,25 +423,31 @@ def translate_size_units():
|
|||
|
||||
|
||||
def fsize(fsize_b, precision=1, shortform=False):
|
||||
"""Formats the bytes value into a string with KiB, MiB or GiB units.
|
||||
"""Formats the bytes value into a string with KiB, MiB, GiB or TiB units.
|
||||
|
||||
Args:
|
||||
fsize_b (int): The filesize in bytes.
|
||||
precision (int): The filesize float precision.
|
||||
precision (int): The output float precision, 1 by default.
|
||||
shortform (bool): The output short|long form, False (long form) by default.
|
||||
|
||||
Returns:
|
||||
str: A formatted string in KiB, MiB or GiB units.
|
||||
str: A formatted string in KiB, MiB, GiB or TiB units.
|
||||
|
||||
Examples:
|
||||
>>> fsize(112245)
|
||||
'109.6 KiB'
|
||||
>>> fsize(112245, precision=0)
|
||||
'110 KiB'
|
||||
>>> fsize(112245, shortform=True)
|
||||
'109.6 K'
|
||||
|
||||
Note:
|
||||
This function has been refactored for performance with the
|
||||
fsize units being translated outside the function.
|
||||
|
||||
Notice that short forms K|M|G|T are synonymous here with
|
||||
KiB|MiB|GiB|TiB. They are powers of 1024, not 1000.
|
||||
|
||||
"""
|
||||
|
||||
if fsize_b >= 1024**4:
|
||||
|
@ -477,7 +483,7 @@ def fpcnt(dec, precision=2):
|
|||
|
||||
Args:
|
||||
dec (float): The ratio in the range [0.0, 1.0].
|
||||
precision (int): The percentage float precision.
|
||||
precision (int): The output float precision, 2 by default.
|
||||
|
||||
Returns:
|
||||
str: A formatted string representing a percentage.
|
||||
|
@ -501,6 +507,8 @@ def fspeed(bps, precision=1, shortform=False):
|
|||
|
||||
Args:
|
||||
bps (int): The speed in bytes per second.
|
||||
precision (int): The output float precision, 1 by default.
|
||||
shortform (bool): The output short|long form, False (long form) by default.
|
||||
|
||||
Returns:
|
||||
str: A formatted string representing transfer speed.
|
||||
|
@ -509,6 +517,10 @@ def fspeed(bps, precision=1, shortform=False):
|
|||
>>> fspeed(43134)
|
||||
'42.1 KiB/s'
|
||||
|
||||
Note:
|
||||
Notice that short forms K|M|G|T are synonymous here with
|
||||
KiB|MiB|GiB|TiB. They are powers of 1024, not 1000.
|
||||
|
||||
"""
|
||||
|
||||
if bps < 1024**2:
|
||||
|
@ -545,7 +557,7 @@ def fpeer(num_peers, total_peers):
|
|||
total_peers (int): The total number of peers.
|
||||
|
||||
Returns:
|
||||
str: A formatted string 'num_peers (total_peers)' or total_peers < 0, just 'num_peers'.
|
||||
str: A formatted string 'num_peers (total_peers)' or if total_peers < 0, just 'num_peers'.
|
||||
|
||||
Examples:
|
||||
>>> fpeer(10, 20)
|
||||
|
@ -594,16 +606,16 @@ def ftime(secs):
|
|||
time_str = f'{secs // 604800}w {secs // 86400 % 7}d'
|
||||
else:
|
||||
time_str = f'{secs // 31449600}y {secs // 604800 % 52}w'
|
||||
|
||||
return time_str
|
||||
|
||||
|
||||
def fdate(seconds, date_only=False, precision_secs=False):
|
||||
"""Formats a date time string in the locale's date representation based on the systems timezone.
|
||||
"""Formats a date time string in the locale's date representation based on the system's timezone.
|
||||
|
||||
Args:
|
||||
seconds (float): Time in seconds since the Epoch.
|
||||
precision_secs (bool): Include seconds in time format.
|
||||
date_only (bool): Whether to include only the date, False by default.
|
||||
precision_secs (bool): Include seconds in time format, False by default.
|
||||
|
||||
Returns:
|
||||
str: A string in the locale's datetime representation or "" if seconds < 0
|
||||
|
@ -628,10 +640,14 @@ def tokenize(text):
|
|||
Returns:
|
||||
list: A list of strings and/or numbers.
|
||||
|
||||
Note:
|
||||
This function is used to implement robust tokenization of user input
|
||||
It automatically coerces integer and floating point numbers, ignores
|
||||
whitespace and knows how to separate numbers from strings even without
|
||||
whitespace.
|
||||
|
||||
Possible optimization: move the 2 regexes outside of function.
|
||||
|
||||
"""
|
||||
tokenized_input = []
|
||||
for token in re.split(r'(\d+(?:\.\d+)?)', text):
|
||||
|
@ -652,12 +668,16 @@ def tokenize(text):
|
|||
{'prefix': 'GiB', 'divider': 1024**3},
|
||||
{'prefix': 'TiB', 'divider': 1024**4},
|
||||
{'prefix': 'PiB', 'divider': 1024**5},
|
||||
{'prefix': 'k', 'divider': 1000**1},
|
||||
{'prefix': 'm', 'divider': 1000**2},
|
||||
{'prefix': 'g', 'divider': 1000**3},
|
||||
{'prefix': 't', 'divider': 1000**4},
|
||||
{'prefix': 'p', 'divider': 1000**5},
|
||||
{'prefix': 'KB', 'divider': 1000**1},
|
||||
{'prefix': 'MB', 'divider': 1000**2},
|
||||
{'prefix': 'GB', 'divider': 1000**3},
|
||||
{'prefix': 'TB', 'divider': 1000**4},
|
||||
{'prefix': 'PB', 'divider': 1000**5},
|
||||
{'prefix': 'm', 'divider': 1000**2},
|
||||
]
|
||||
|
||||
|
||||
|
@ -841,7 +861,7 @@ def create_magnet_uri(infohash, name=None, trackers=None):
|
|||
Args:
|
||||
infohash (str): The info-hash of the torrent.
|
||||
name (str, optional): The name of the torrent.
|
||||
trackers (list or dict, optional): A list of trackers or dict or {tracker: tier} pairs.
|
||||
trackers (list or dict, optional): A list of trackers or a dict or some {tracker: tier} pairs.
|
||||
|
||||
Returns:
|
||||
str: A magnet URI string.
|
||||
|
|
|
@ -85,7 +85,7 @@ class Component:
|
|||
|
||||
**Stopped** - The Component has either been stopped or has yet to be started.
|
||||
|
||||
**Stopping** - The Component has had it's stop method called, but it hasn't
|
||||
**Stopping** - The Component has had its stop method called, but it hasn't
|
||||
fully stopped yet.
|
||||
|
||||
**Paused** - The Component has had its update timer stopped, but will
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
import pytest_twisted
|
||||
from twisted.internet import reactor
|
||||
from twisted.internet.defer import Deferred, maybeDeferred
|
||||
from twisted.internet.error import CannotListenError
|
||||
from twisted.internet.error import CannotListenError, ProcessTerminated
|
||||
from twisted.python.failure import Failure
|
||||
|
||||
import deluge.component as _component
|
||||
|
@ -42,11 +42,13 @@ def mock_callback():
|
|||
The returned Mock instance will have a `deferred` attribute which will complete when the callback has been called.
|
||||
"""
|
||||
|
||||
def reset():
|
||||
def reset(timeout=0.5, *args, **kwargs):
|
||||
if mock.called:
|
||||
original_reset_mock()
|
||||
deferred = Deferred()
|
||||
deferred.addTimeout(0.5, reactor)
|
||||
original_reset_mock(*args, **kwargs)
|
||||
if mock.deferred:
|
||||
mock.deferred.cancel()
|
||||
deferred = Deferred(canceller=lambda x: deferred.callback(None))
|
||||
deferred.addTimeout(timeout, reactor)
|
||||
mock.side_effect = lambda *args, **kw: deferred.callback((args, kw))
|
||||
mock.deferred = deferred
|
||||
|
||||
|
@ -118,7 +120,10 @@ async def daemon(request, config_dir, tmp_path):
|
|||
raise exception_error
|
||||
daemon.listen_port = listen_port
|
||||
yield daemon
|
||||
try:
|
||||
await daemon.kill()
|
||||
except ProcessTerminated:
|
||||
pass
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
|
|
|
@ -16,11 +16,11 @@
|
|||
"""
|
||||
import contextlib
|
||||
import logging
|
||||
import threading
|
||||
from collections import defaultdict
|
||||
from types import SimpleNamespace
|
||||
from typing import Any, Callable
|
||||
|
||||
from twisted.internet import reactor
|
||||
from twisted.internet import reactor, threads
|
||||
|
||||
import deluge.component as component
|
||||
from deluge._libtorrent import lt
|
||||
|
@ -34,7 +34,7 @@ class AlertManager(component.Component):
|
|||
|
||||
def __init__(self):
|
||||
log.debug('AlertManager init...')
|
||||
component.Component.__init__(self, 'AlertManager', interval=0.3)
|
||||
component.Component.__init__(self, 'AlertManager')
|
||||
self.session = component.get('Core').session
|
||||
|
||||
# Increase the alert queue size so that alerts don't get lost.
|
||||
|
@ -56,18 +56,73 @@ def __init__(self):
|
|||
|
||||
# handlers is a dictionary of lists {"alert_type": [handler1,h2,..]}
|
||||
self.handlers = defaultdict(list)
|
||||
self.handlers_retry_timeout = 0.3
|
||||
self.handlers_retry_count = 6
|
||||
self.delayed_calls = []
|
||||
self._event = threading.Event()
|
||||
|
||||
def update(self):
|
||||
self.delayed_calls = [dc for dc in self.delayed_calls if dc.active()]
|
||||
self.handle_alerts()
|
||||
pass
|
||||
|
||||
def start(self):
|
||||
thread = threading.Thread(
|
||||
target=self.wait_for_alert_in_thread, name='alert-poller', daemon=True
|
||||
)
|
||||
thread.start()
|
||||
self._event.set()
|
||||
|
||||
def stop(self):
|
||||
self.cancel_delayed_calls()
|
||||
|
||||
def pause(self):
|
||||
self._event.clear()
|
||||
|
||||
def resume(self):
|
||||
self._event.set()
|
||||
|
||||
def wait_for_alert_in_thread(self):
|
||||
while self._component_state not in ('Stopping', 'Stopped'):
|
||||
if self.session.wait_for_alert(1000) is None:
|
||||
continue
|
||||
if self._event.wait():
|
||||
threads.blockingCallFromThread(reactor, self.maybe_handle_alerts)
|
||||
|
||||
def cancel_delayed_calls(self):
|
||||
"""Cancel all delayed handlers."""
|
||||
for delayed_call in self.delayed_calls:
|
||||
if delayed_call.active():
|
||||
delayed_call.cancel()
|
||||
self.delayed_calls = []
|
||||
|
||||
def check_delayed_calls(self, retries: int = 0) -> bool:
|
||||
"""Returns True if any handler calls are delayed (upto retry limit)."""
|
||||
self.delayed_calls = [dc for dc in self.delayed_calls if dc.active()]
|
||||
if not self.delayed_calls:
|
||||
return False
|
||||
|
||||
if retries > self.handlers_retry_count:
|
||||
log.warning(
|
||||
'Alert handlers timeout reached, cancelling: %s', self.delayed_calls
|
||||
)
|
||||
self.cancel_delayed_calls()
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def maybe_handle_alerts(self, retries: int = 0) -> None:
|
||||
if self._component_state != 'Started':
|
||||
return
|
||||
|
||||
if self.check_delayed_calls(retries):
|
||||
log.debug('Waiting for delayed alerts: %s', self.delayed_calls)
|
||||
retries += 1
|
||||
reactor.callLater(
|
||||
self.handlers_retry_timeout, self.maybe_handle_alerts, retries
|
||||
)
|
||||
return
|
||||
|
||||
self.handle_alerts()
|
||||
|
||||
def register_handler(self, alert_type: str, handler: Callable[[Any], None]) -> None:
|
||||
"""
|
||||
Registers a function that will be called when 'alert_type' is pop'd
|
||||
|
@ -128,21 +183,7 @@ def handle_alerts(self):
|
|||
if log.isEnabledFor(logging.DEBUG):
|
||||
log.debug('Handling alert: %s', alert_type)
|
||||
|
||||
alert_copy = self.create_alert_copy(alert)
|
||||
self.delayed_calls.append(reactor.callLater(0, handler, alert_copy))
|
||||
|
||||
@staticmethod
|
||||
def create_alert_copy(alert):
|
||||
"""Create a Python copy of libtorrent alert
|
||||
|
||||
Avoid segfault if an alert is handled after next pop_alert call"""
|
||||
return SimpleNamespace(
|
||||
**{
|
||||
attr: getattr(alert, attr)
|
||||
for attr in dir(alert)
|
||||
if not attr.startswith('__')
|
||||
}
|
||||
)
|
||||
self.delayed_calls.append(reactor.callLater(0, handler, alert))
|
||||
|
||||
def set_alert_queue_size(self, queue_size):
|
||||
"""Sets the maximum size of the libtorrent alert queue"""
|
||||
|
|
|
@ -12,17 +12,16 @@
|
|||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
import threading
|
||||
from base64 import b64decode, b64encode
|
||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||
from urllib.request import URLError, urlopen
|
||||
|
||||
from twisted.internet import defer, reactor, task
|
||||
from twisted.internet import defer, reactor, task, threads
|
||||
from twisted.web.client import Agent, readBody
|
||||
|
||||
import deluge.common
|
||||
import deluge.component as component
|
||||
from deluge import path_chooser_common
|
||||
from deluge import metafile, path_chooser_common
|
||||
from deluge._libtorrent import LT_VERSION, lt
|
||||
from deluge.configmanager import ConfigManager, get_config_dir
|
||||
from deluge.core.alertmanager import AlertManager
|
||||
|
@ -992,30 +991,33 @@ def create_torrent(
|
|||
path,
|
||||
tracker,
|
||||
piece_length,
|
||||
comment,
|
||||
target,
|
||||
webseeds,
|
||||
private,
|
||||
created_by,
|
||||
trackers,
|
||||
add_to_session,
|
||||
comment=None,
|
||||
target=None,
|
||||
webseeds=None,
|
||||
private=False,
|
||||
created_by=None,
|
||||
trackers=None,
|
||||
add_to_session=False,
|
||||
torrent_format=metafile.TorrentFormat.V1,
|
||||
):
|
||||
if isinstance(torrent_format, str):
|
||||
torrent_format = metafile.TorrentFormat(torrent_format)
|
||||
|
||||
log.debug('creating torrent..')
|
||||
threading.Thread(
|
||||
target=self._create_torrent_thread,
|
||||
args=(
|
||||
return threads.deferToThread(
|
||||
self._create_torrent_thread,
|
||||
path,
|
||||
tracker,
|
||||
piece_length,
|
||||
comment,
|
||||
target,
|
||||
webseeds,
|
||||
private,
|
||||
created_by,
|
||||
trackers,
|
||||
add_to_session,
|
||||
),
|
||||
).start()
|
||||
comment=comment,
|
||||
target=target,
|
||||
webseeds=webseeds,
|
||||
private=private,
|
||||
created_by=created_by,
|
||||
trackers=trackers,
|
||||
add_to_session=add_to_session,
|
||||
torrent_format=torrent_format,
|
||||
)
|
||||
|
||||
def _create_torrent_thread(
|
||||
self,
|
||||
|
@ -1029,27 +1031,41 @@ def _create_torrent_thread(
|
|||
created_by,
|
||||
trackers,
|
||||
add_to_session,
|
||||
torrent_format,
|
||||
):
|
||||
from deluge import metafile
|
||||
|
||||
metafile.make_meta_file(
|
||||
filecontent = metafile.make_meta_file_content(
|
||||
path,
|
||||
tracker,
|
||||
piece_length,
|
||||
comment=comment,
|
||||
target=target,
|
||||
webseeds=webseeds,
|
||||
private=private,
|
||||
created_by=created_by,
|
||||
trackers=trackers,
|
||||
torrent_format=torrent_format,
|
||||
)
|
||||
|
||||
write_file = False
|
||||
if target or not add_to_session:
|
||||
write_file = True
|
||||
|
||||
if not target:
|
||||
target = metafile.default_meta_file_path(path)
|
||||
filename = os.path.split(target)[-1]
|
||||
|
||||
if write_file:
|
||||
with open(target, 'wb') as _file:
|
||||
_file.write(filecontent)
|
||||
|
||||
filedump = b64encode(filecontent)
|
||||
log.debug('torrent created!')
|
||||
if add_to_session:
|
||||
options = {}
|
||||
options['download_location'] = os.path.split(path)[0]
|
||||
with open(target, 'rb') as _file:
|
||||
filedump = b64encode(_file.read())
|
||||
self.add_torrent_file(os.path.split(target)[1], filedump, options)
|
||||
self.add_torrent_file(filename, filedump, options)
|
||||
return filename, filedump
|
||||
|
||||
@export
|
||||
def upload_plugin(self, filename: str, filedump: Union[str, bytes]) -> None:
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
1900
deluge/i18n/be.po
1900
deluge/i18n/be.po
File diff suppressed because it is too large
Load diff
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: deluge\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2019-11-12 14:55+0000\n"
|
||||
"PO-Revision-Date: 2019-12-30 00:59+0000\n"
|
||||
"PO-Revision-Date: 2022-12-21 00:21+0000\n"
|
||||
"Last-Translator: Pere Orga <Unknown>\n"
|
||||
"Language-Team: Catalan <ca@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
@ -1210,7 +1210,7 @@ msgstr "Namíbia"
|
|||
|
||||
#: deluge/ui/countries.py:162
|
||||
msgid "Nauru"
|
||||
msgstr "Nauru"
|
||||
msgstr "nauruà"
|
||||
|
||||
#: deluge/ui/countries.py:163
|
||||
msgid "Nepal"
|
||||
|
@ -1482,7 +1482,7 @@ msgstr "Togo"
|
|||
|
||||
#: deluge/ui/countries.py:230
|
||||
msgid "Tokelau"
|
||||
msgstr "Tokelau"
|
||||
msgstr "tokelauès"
|
||||
|
||||
#: deluge/ui/countries.py:231
|
||||
msgid "Tonga"
|
||||
|
@ -1800,7 +1800,7 @@ msgstr ""
|
|||
"Aquest programa és programari lliure (\"free software\" en anglès); podeu "
|
||||
"redistribuir-lo i/o modificar-lo sota els termes de la llicència GNU Public "
|
||||
"License tal com està publicada per la Free Software Foundation; ja sigui la "
|
||||
"versió 3 de la llicència, o (a la vostra decisió) qualsevol altre versió "
|
||||
"versió 3 de la llicència, o (a la vostra decisió) qualsevol altra versió "
|
||||
"posterior.\n"
|
||||
"Aquest programari es distribueix amb l'esperança de que serà útil, però "
|
||||
"SENSE CAP GARANTIA; fins i tot sense la garantia implícita de "
|
||||
|
@ -1841,7 +1841,7 @@ msgstr "Afegeix els torrents (%d)"
|
|||
|
||||
#: deluge/ui/gtk3/addtorrentdialog.py:238
|
||||
msgid "Duplicate torrent(s)"
|
||||
msgstr "Torrent(s) duplicat(s)."
|
||||
msgstr "Torrent(s) duplicat(s)"
|
||||
|
||||
#: deluge/ui/gtk3/addtorrentdialog.py:240
|
||||
#, python-format
|
||||
|
@ -1870,11 +1870,11 @@ msgstr "Seleccioneu un fitxer .torrent"
|
|||
|
||||
#: deluge/ui/gtk3/addtorrentdialog.py:777
|
||||
msgid "Invalid URL"
|
||||
msgstr "URL invàlida"
|
||||
msgstr "L'URL no és vàlid"
|
||||
|
||||
#: deluge/ui/gtk3/addtorrentdialog.py:778
|
||||
msgid "is not a valid URL."
|
||||
msgstr "no és una URL vàlida."
|
||||
msgstr "no és un URL vàlid."
|
||||
|
||||
#: deluge/ui/gtk3/addtorrentdialog.py:784
|
||||
msgid "Downloading..."
|
||||
|
@ -1975,7 +1975,7 @@ msgstr "_Afegeix"
|
|||
|
||||
#: deluge/ui/gtk3/dialogs.py:289
|
||||
msgid "Authentication Level:"
|
||||
msgstr "Nivel d'autenticació"
|
||||
msgstr "Nivel d'autenticació:"
|
||||
|
||||
#: deluge/ui/gtk3/dialogs.py:423
|
||||
msgid "Password Protected"
|
||||
|
@ -2296,7 +2296,7 @@ msgstr "Error en afegir l'amfitrió"
|
|||
|
||||
#: deluge/ui/gtk3/connectionmanager.py:464
|
||||
msgid "Error Updating Host"
|
||||
msgstr "Ha fallat l'actualització del l'amfitrió"
|
||||
msgstr "Ha fallat l'actualització de l'amfitrió"
|
||||
|
||||
#: deluge/ui/gtk3/preferences.py:131
|
||||
#: deluge/ui/console/cmdline/commands/connect.py:33
|
||||
|
@ -2535,8 +2535,8 @@ msgid ""
|
|||
"Add one or more torrent files, torrent URLs or magnet URIs to a currently "
|
||||
"running Deluge GTK instance"
|
||||
msgstr ""
|
||||
"Afegeix un o més fitxers torrent, URLs de fitxers torrent URIs magnet a una "
|
||||
"instància en execució del Deluge GTK."
|
||||
"Afegeix un o més fitxers torrent, URLs de fitxers torrent o URIs magnet a "
|
||||
"una instància GTK en execució del Deluge"
|
||||
|
||||
#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1
|
||||
msgid "Creating Torrent"
|
||||
|
@ -3064,7 +3064,7 @@ msgstr "Diàleg «Afegeix torrents»"
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
|
||||
msgid "Connection Attempts per Second:"
|
||||
msgstr "Intents de connexió per segon"
|
||||
msgstr "Intents de connexió per segon:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
|
||||
msgid "Half-Open Connections:"
|
||||
|
@ -3137,7 +3137,7 @@ msgid ""
|
|||
"to avoid exceeding the limits with the total traffic"
|
||||
msgstr ""
|
||||
"Si es marca, la sobrecàrrega TCP/IP estimada no es tindrà en compte en els "
|
||||
"límits de relació, per tal d'evitar excedir els límits amb el trànsit total."
|
||||
"límits de relació, per tal d'evitar excedir els límits amb el trànsit total"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
|
||||
msgid "Global Bandwidth Limits"
|
||||
|
@ -3442,7 +3442,7 @@ msgstr "Clients del servidor intermediari"
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144
|
||||
msgid "Proxy peer and web seed connections."
|
||||
msgstr "Connexions de clients del servidor intermediari i de llavors web"
|
||||
msgstr "Connexions de clients del servidor intermediari i de llavors web."
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:665
|
||||
|
@ -3726,7 +3726,7 @@ msgstr "_Troba'n més..."
|
|||
|
||||
#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
|
||||
msgid "Remove the selected torrent(s)?"
|
||||
msgstr "Voleu suprimit els torrents seleccionats?"
|
||||
msgstr "Voleu suprimir els torrents seleccionats?"
|
||||
|
||||
#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
|
||||
msgid "Include downloaded files"
|
||||
|
@ -3961,7 +3961,7 @@ msgstr "Nova versió"
|
|||
|
||||
#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3
|
||||
msgid "_Goto Website"
|
||||
msgstr "_Vés al lloc web"
|
||||
msgstr "_Ves al lloc web"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4
|
||||
msgid "New Release Available!"
|
||||
|
@ -4405,7 +4405,7 @@ msgstr "Conti_nua"
|
|||
#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4
|
||||
#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4
|
||||
msgid "Resume selected torrents."
|
||||
msgstr "Continua amb els torrents seleccionats"
|
||||
msgstr "Reprèn els torrents seleccionats."
|
||||
|
||||
#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5
|
||||
msgid "Opt_ions"
|
||||
|
@ -4561,11 +4561,11 @@ msgid ""
|
|||
"of the features provided."
|
||||
msgstr ""
|
||||
"El Deluge conté les funcions comunes dels clients BitTorrent, com ara el "
|
||||
"xifratge del protocol, DHT, descobriment de clients locals (LSD), "
|
||||
"intercanvi de clients (PEX), UPnP, NAT-PMP, suport per servidors "
|
||||
"intermediaris, llavors web i límits de velocitat globals i per torrent. El "
|
||||
"Deluge es basa en la biblioteca libtorrent, i per tant incorpora la llista "
|
||||
"completa de les funcions que proporciona."
|
||||
"xifratge del protocol, DHT, descobriment de clients locals (LSD), intercanvi "
|
||||
"de clients (PEX), UPnP, NAT-PMP, suport per servidors intermediaris, llavors "
|
||||
"web i límits de velocitat globals i per torrent. El Deluge es basa en la "
|
||||
"biblioteca libtorrent, i, per tant, incorpora la llista completa de les "
|
||||
"funcions que proporciona."
|
||||
|
||||
#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4
|
||||
msgid ""
|
||||
|
@ -4701,7 +4701,8 @@ msgstr ""
|
|||
#: deluge/ui/console/cmdline/commands/pause.py:29
|
||||
msgid "One or more torrent ids. Use \"*\" to pause all torrents"
|
||||
msgstr ""
|
||||
"Un o més identificadors de torrent. Useu \"*\" per pausar tots els torrents"
|
||||
"Un o més identificadors de torrent. Useu \"*\" per posar en pausa tots els "
|
||||
"torrents"
|
||||
|
||||
#: deluge/ui/console/cmdline/commands/add.py:38
|
||||
msgid "Download folder for torrent"
|
||||
|
@ -4745,7 +4746,7 @@ msgid ""
|
|||
"scripts that want to do their own parsing)"
|
||||
msgstr ""
|
||||
"Valors en brut de les velocitats de pujada i baixada (sense el sufix KiB/s) "
|
||||
"(útil per a scripts que vulguin fer el seu propi anàlisi)"
|
||||
"(útil per a scripts que vulguin analitzar-ho)"
|
||||
|
||||
#: deluge/ui/console/cmdline/commands/status.py:46
|
||||
msgid "Do not show torrent status (Improves command speed)"
|
||||
|
@ -4792,7 +4793,7 @@ msgstr "Mostra més informació detallada com ara els fitxers i clients."
|
|||
#: deluge/ui/console/cmdline/commands/info.py:116
|
||||
#, python-format
|
||||
msgid "Show torrents with state STATE: %s."
|
||||
msgstr "Mostra els torrents amb l'estat: %s"
|
||||
msgstr "Mostra els torrents amb l'estat: %s."
|
||||
|
||||
#: deluge/ui/console/cmdline/commands/info.py:132
|
||||
msgid "Same as --sort but items are in reverse order."
|
||||
|
@ -4802,7 +4803,7 @@ msgstr "El mateix que --sort però els elements estan amb ordre invers."
|
|||
msgid "One or more torrent ids. If none is given, list all"
|
||||
msgstr ""
|
||||
"Un o més identificadors de torrent. Si no se'n proporciona cap, mostra'ls "
|
||||
"tots."
|
||||
"tots"
|
||||
|
||||
#: deluge/ui/console/modes/connectionmanager.py:44
|
||||
msgid "Select Host"
|
||||
|
@ -5116,7 +5117,7 @@ msgstr "L'adreça IP \"%s\" està mal formada"
|
|||
|
||||
#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
|
||||
msgid "Emule IP list (GZip)"
|
||||
msgstr "Llistat de les IP d'Emule (GZip)"
|
||||
msgstr "Llistat d'IPs de l'eMule (GZip)"
|
||||
|
||||
#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22
|
||||
msgid "SafePeer Text (Zipped)"
|
||||
|
@ -5281,7 +5282,7 @@ msgstr "Camí"
|
|||
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
|
||||
msgid "Watch folder does not exist."
|
||||
msgstr "La carpeta vigilada no existeix"
|
||||
msgstr "La carpeta vigilada no existeix."
|
||||
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
|
||||
|
@ -5740,7 +5741,7 @@ msgstr ""
|
|||
|
||||
#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1
|
||||
msgid "Tray icon blinks enabled"
|
||||
msgstr "El parpadeig de les icones de la safata del sistema està activat"
|
||||
msgstr "El parpelleig de les icones de la safata del sistema està activat"
|
||||
|
||||
#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2
|
||||
msgid "Popups enabled"
|
||||
|
@ -5826,7 +5827,7 @@ msgstr "Torrents actius:"
|
|||
|
||||
#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328
|
||||
msgid "Active Downloading:"
|
||||
msgstr "Nombre màxim de connexions actives"
|
||||
msgstr "Nombre de connexions actives:"
|
||||
|
||||
#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337
|
||||
msgid "Active Seeding:"
|
||||
|
@ -6056,7 +6057,7 @@ msgstr "S'ha perdut la connexió amb el servidor web."
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/UI.js:160
|
||||
msgid "Lost connection to webserver"
|
||||
msgstr "Connexió al servidor web perduda."
|
||||
msgstr "S'ha perdut la connexió al servidor"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/Menus.js:72
|
||||
msgid "D/L Speed Limit"
|
||||
|
@ -6353,7 +6354,7 @@ msgstr "Temps estimat:"
|
|||
|
||||
#: deluge/ui/web/render/tab_status.html:26
|
||||
msgid "Date Added:"
|
||||
msgstr "Data d'addició"
|
||||
msgstr "Data d'addició:"
|
||||
|
||||
#~ msgid "<b>Language</b>"
|
||||
#~ msgstr "<b>Idioma</b>"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: deluge\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2019-11-12 14:55+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 08:19+0000\n"
|
||||
"Last-Translator: Dan Cooper <Unknown>\n"
|
||||
"PO-Revision-Date: 2023-11-06 17:15+0000\n"
|
||||
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
@ -1580,7 +1580,7 @@ msgstr "Simbabwe"
|
|||
|
||||
#: deluge/ui/ui_entry.py:51
|
||||
msgid "UI Options"
|
||||
msgstr ""
|
||||
msgstr "UI-Optionen"
|
||||
|
||||
#: deluge/ui/ui_entry.py:57
|
||||
msgid "Set the default UI to be run, when no UI is specified"
|
||||
|
@ -2013,7 +2013,7 @@ msgstr "<b>IP</b> <small>%s</small>"
|
|||
#: deluge/ui/console/widgets/statusbars.py:121
|
||||
#: deluge/ui/web/js/deluge-all/Statusbar.js:358
|
||||
msgid "n/a"
|
||||
msgstr ""
|
||||
msgstr "n/v"
|
||||
|
||||
#: deluge/ui/gtk3/statusbar.py:220
|
||||
msgid "<b><small>Port Issue</small></b>"
|
||||
|
@ -2174,7 +2174,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/gtk3/gtkui.py:350
|
||||
msgid "Change User Interface Mode"
|
||||
msgstr ""
|
||||
msgstr "Benutzeroberflächenmodus ändern"
|
||||
|
||||
#: deluge/ui/gtk3/connectionmanager.py:52
|
||||
#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56
|
||||
|
@ -2819,7 +2819,7 @@ msgstr "Mit einem Deluge-Daemon verbinden (deluged)"
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
|
||||
msgid "Application Mode"
|
||||
msgstr ""
|
||||
msgstr "Anwendungsmodus"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
|
||||
|
@ -3208,7 +3208,7 @@ msgstr ""
|
|||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108
|
||||
#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38
|
||||
msgid "Incoming Address"
|
||||
msgstr ""
|
||||
msgstr "Eingangsadresse"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109
|
||||
msgid "Random"
|
||||
|
@ -3229,7 +3229,7 @@ msgstr "Aktiven Port testen"
|
|||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113
|
||||
#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58
|
||||
msgid "Incoming Port"
|
||||
msgstr ""
|
||||
msgstr "Eingangsport"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114
|
||||
msgid ""
|
||||
|
@ -3706,7 +3706,7 @@ msgstr "Pfadeintrag anzeigen"
|
|||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
|
||||
msgid "Show file chooser"
|
||||
msgstr ""
|
||||
msgstr "Dateiauswahl anzeigen"
|
||||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7
|
||||
msgid "Show folder name"
|
||||
|
@ -3762,7 +3762,7 @@ msgstr "Strg+D"
|
|||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22
|
||||
msgid "Toggle hidden files"
|
||||
msgstr ""
|
||||
msgstr "Versteckte Dateien umschalten"
|
||||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23
|
||||
msgid "Default path"
|
||||
|
@ -3770,7 +3770,7 @@ msgstr "Standardpfad"
|
|||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24
|
||||
msgid "Shortcuts"
|
||||
msgstr ""
|
||||
msgstr "Tastenkombinationen"
|
||||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25
|
||||
msgid "Select a Directory"
|
||||
|
@ -3813,7 +3813,7 @@ msgstr "Hinzufügen"
|
|||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32
|
||||
msgid "Add the current entry value to the list"
|
||||
msgstr ""
|
||||
msgstr "Den aktuellen Eintragswert zur Liste hinzufügen"
|
||||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33
|
||||
#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98
|
||||
|
@ -3864,7 +3864,7 @@ msgstr "Datei-Quersumme hinzufügen"
|
|||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
|
||||
msgid "From Infohash"
|
||||
msgstr ""
|
||||
msgstr "Von Infohash"
|
||||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
|
||||
msgid "Infohash:"
|
||||
|
@ -4018,7 +4018,7 @@ msgstr "Gesamtgröße:"
|
|||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21
|
||||
#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27
|
||||
msgid "Total Files:"
|
||||
msgstr ""
|
||||
msgstr "Dateien insgesamt:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22
|
||||
#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24
|
||||
|
@ -4067,7 +4067,7 @@ msgstr "Aktueller Tracker:"
|
|||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47
|
||||
msgid "Total Trackers:"
|
||||
msgstr ""
|
||||
msgstr "Tracker insgesamt:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
|
||||
#: deluge/ui/web/render/tab_status.html:6
|
||||
|
@ -4827,7 +4827,7 @@ msgstr "Festplattenspeicher vorbelegen"
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:304
|
||||
msgid "Incomming Ports"
|
||||
msgstr ""
|
||||
msgstr "Eingangsports"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:313
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:337
|
||||
|
@ -4846,7 +4846,7 @@ msgstr "Benutze Zufallsports"
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:352
|
||||
msgid "Incoming Interface"
|
||||
msgstr ""
|
||||
msgstr "Eingangsschnittstelle"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:355
|
||||
msgid "IP address of the interface to listen on (leave empty for default):"
|
||||
|
@ -4935,7 +4935,7 @@ msgstr "Tauschverhältnis"
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:601
|
||||
msgid "Time Ratio"
|
||||
msgstr ""
|
||||
msgstr "Zeitverhältnis"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:609
|
||||
msgid "Time (m)"
|
||||
|
@ -4971,7 +4971,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:712
|
||||
msgid "Blocks Written"
|
||||
msgstr ""
|
||||
msgstr "Geschriebene Blöcke"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:716
|
||||
msgid "Writes"
|
||||
|
@ -4983,7 +4983,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:725
|
||||
msgid "Blocks Read"
|
||||
msgstr ""
|
||||
msgstr "Gelesene Blöcke"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:729
|
||||
msgid "Blocks Read hit"
|
||||
|
@ -5400,7 +5400,7 @@ msgstr "Uploadfarbe:"
|
|||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
|
||||
msgid "<b>Connections Graph</b>"
|
||||
msgstr ""
|
||||
msgstr "<b>Verbindungsgraph</b>"
|
||||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4
|
||||
msgid "<b>Bandwidth Graph</b>"
|
||||
|
@ -5408,7 +5408,7 @@ msgstr "<b>Bandbreitengraph</b>"
|
|||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
|
||||
msgid "DHT nodes:"
|
||||
msgstr ""
|
||||
msgstr "DHT-Knoten:"
|
||||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
|
||||
msgid "Cached DHT nodes:"
|
||||
|
@ -5424,7 +5424,7 @@ msgstr "<b>Seeds / Peers</b>"
|
|||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
|
||||
msgid "<b>Graph Colors</b>"
|
||||
msgstr ""
|
||||
msgstr "<b>Graphfarben</b>"
|
||||
|
||||
#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35
|
||||
#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47
|
||||
|
@ -5997,7 +5997,7 @@ msgstr "Erzwinge erneute Überprüfung"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/Menus.js:359
|
||||
msgid "Expand All"
|
||||
msgstr ""
|
||||
msgstr "Alles ausklappen"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
|
||||
msgid "Details"
|
||||
|
@ -6119,7 +6119,7 @@ msgstr "Zufälligen Port verwenden"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241
|
||||
msgid "Type Of Service"
|
||||
msgstr ""
|
||||
msgstr "Diensttyp"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53
|
||||
msgid "Show filters with zero torrents"
|
||||
|
@ -6151,7 +6151,7 @@ msgstr "Server"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
|
||||
msgid "Session Timeout:"
|
||||
msgstr ""
|
||||
msgstr "Zeitüberschreitung der Sitzung:"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
|
||||
msgid "Enable SSL (paths relative to Deluge config folder)"
|
||||
|
@ -6221,7 +6221,7 @@ msgstr "Datei"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
|
||||
msgid "Infohash"
|
||||
msgstr ""
|
||||
msgstr "Infohash"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
|
||||
msgid "Uploading your torrent..."
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: deluge\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2019-11-12 14:55+0000\n"
|
||||
"PO-Revision-Date: 2020-04-26 10:56+0000\n"
|
||||
"PO-Revision-Date: 2022-06-10 17:48+0000\n"
|
||||
"Last-Translator: Jiri Grönroos <Unknown>\n"
|
||||
"Language-Team: Finnish <fi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
@ -120,11 +120,11 @@ msgstr ""
|
|||
|
||||
#: deluge/argparserbase.py:200
|
||||
msgid "Output to specified logfile instead of stdout"
|
||||
msgstr ""
|
||||
msgstr "Ohjaa tuloste määritettyyn lokitiedostoon stdoutin sijaan"
|
||||
|
||||
#: deluge/argparserbase.py:206
|
||||
msgid "Set the log level (none, error, warning, info, debug)"
|
||||
msgstr ""
|
||||
msgstr "Aseta lokituksen taso (none, error, warning, info, debug)"
|
||||
|
||||
#: deluge/argparserbase.py:215
|
||||
#, python-format
|
||||
|
@ -166,7 +166,7 @@ msgstr ""
|
|||
|
||||
#: deluge/core/daemon_entry.py:25
|
||||
msgid "Daemon Options"
|
||||
msgstr ""
|
||||
msgstr "Taustaprosessin valinnat"
|
||||
|
||||
#: deluge/core/daemon_entry.py:31
|
||||
msgid "IP address to listen for UI connections"
|
||||
|
@ -325,7 +325,7 @@ msgstr "Yhteyksiä enintään"
|
|||
|
||||
#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
|
||||
msgid "Max Upload Slots"
|
||||
msgstr ""
|
||||
msgstr "Jakopaikkoja enintään"
|
||||
|
||||
#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
|
||||
|
@ -336,7 +336,7 @@ msgstr "Vertaiset"
|
|||
#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
|
||||
msgid "Seeds"
|
||||
msgstr ""
|
||||
msgstr "Jakajat"
|
||||
|
||||
#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
|
||||
|
@ -346,7 +346,7 @@ msgstr "Saat."
|
|||
#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
|
||||
msgid "Seeds:Peers"
|
||||
msgstr ""
|
||||
msgstr "Jakajia:vertaisia"
|
||||
|
||||
#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
|
||||
#: deluge/ui/gtk3/torrentview.py:387
|
||||
|
@ -371,15 +371,15 @@ msgstr "Latauskansio"
|
|||
|
||||
#: deluge/ui/common.py:75
|
||||
msgid "Seeding Time"
|
||||
msgstr ""
|
||||
msgstr "Jakoaika"
|
||||
|
||||
#: deluge/ui/common.py:76
|
||||
msgid "Active Time"
|
||||
msgstr ""
|
||||
msgstr "Aktiivisuusaika"
|
||||
|
||||
#: deluge/ui/common.py:78
|
||||
msgid "Last Activity"
|
||||
msgstr ""
|
||||
msgstr "Viimeisin toiminta"
|
||||
|
||||
#: deluge/ui/common.py:81
|
||||
msgid "Finished Time"
|
||||
|
@ -404,7 +404,7 @@ msgstr "Aikaa jäljellä"
|
|||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
|
||||
msgid "Shared"
|
||||
msgstr ""
|
||||
msgstr "Jaettu"
|
||||
|
||||
#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
|
||||
#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
|
||||
|
@ -415,7 +415,7 @@ msgstr "Suosi ensimmäistä/viimeistä"
|
|||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
|
||||
#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
|
||||
msgid "Sequential Download"
|
||||
msgstr ""
|
||||
msgstr "Peräkkäinen lataus"
|
||||
|
||||
#: deluge/ui/common.py:97 deluge/ui/common.py:98
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
|
||||
|
@ -427,15 +427,15 @@ msgstr "Automaattisesti hallittu"
|
|||
|
||||
#: deluge/ui/common.py:99
|
||||
msgid "Stop At Ratio"
|
||||
msgstr ""
|
||||
msgstr "Pysäytä suhteessa"
|
||||
|
||||
#: deluge/ui/common.py:100
|
||||
msgid "Stop Ratio"
|
||||
msgstr ""
|
||||
msgstr "Pysäytyssuhde"
|
||||
|
||||
#: deluge/ui/common.py:101
|
||||
msgid "Remove At Ratio"
|
||||
msgstr ""
|
||||
msgstr "Poista suhteessa"
|
||||
|
||||
#: deluge/ui/common.py:102 deluge/ui/common.py:108
|
||||
msgid "Move On Completed"
|
||||
|
@ -443,7 +443,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/common.py:104
|
||||
msgid "Move Completed Path"
|
||||
msgstr ""
|
||||
msgstr "Siirrä valmistuneet -polku"
|
||||
|
||||
#: deluge/ui/common.py:112
|
||||
msgid "Move On Completed Path"
|
||||
|
@ -1614,7 +1614,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/web/json_api.py:868
|
||||
msgid "Daemon does not exist"
|
||||
msgstr ""
|
||||
msgstr "Taustaprosessia ei ole olemassa"
|
||||
|
||||
#: deluge/ui/web/json_api.py:875
|
||||
msgid "Daemon not running"
|
||||
|
@ -1969,15 +1969,15 @@ msgstr "Ei yhdistetty"
|
|||
|
||||
#: deluge/ui/gtk3/statusbar.py:175
|
||||
msgid "Connections (Limit)"
|
||||
msgstr ""
|
||||
msgstr "Yhteydet (raja)"
|
||||
|
||||
#: deluge/ui/gtk3/statusbar.py:182
|
||||
msgid "Download Speed (Limit)"
|
||||
msgstr ""
|
||||
msgstr "Latausnopeus (raja)"
|
||||
|
||||
#: deluge/ui/gtk3/statusbar.py:189
|
||||
msgid "Upload Speed (Limit)"
|
||||
msgstr ""
|
||||
msgstr "Lähetysnopeus (raja)"
|
||||
|
||||
#: deluge/ui/gtk3/statusbar.py:196
|
||||
msgid "Protocol Traffic (Down:Up)"
|
||||
|
@ -2450,11 +2450,11 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/gtk3/menubar.py:466
|
||||
msgid "Set the maximum upload slots"
|
||||
msgstr ""
|
||||
msgstr "Aseta lähetyspaikkojen enimmäismäärä"
|
||||
|
||||
#: deluge/ui/gtk3/menubar.py:471
|
||||
msgid "Stop Seed At Ratio"
|
||||
msgstr ""
|
||||
msgstr "Lopeta jakaminen suhteessa"
|
||||
|
||||
#: deluge/ui/gtk3/menubar.py:606
|
||||
msgid "Ownership Change Error"
|
||||
|
@ -2494,7 +2494,7 @@ msgstr "Torrentit jonossa"
|
|||
|
||||
#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4
|
||||
msgid "Add Queued Torrents"
|
||||
msgstr ""
|
||||
msgstr "Lisää jonotetut torrentit"
|
||||
|
||||
#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7
|
||||
|
@ -2775,7 +2775,7 @@ msgstr "Socks5"
|
|||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10
|
||||
#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36
|
||||
msgid "Socks5 Auth"
|
||||
msgstr ""
|
||||
msgstr "Socks5-todennus"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11
|
||||
#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37
|
||||
|
@ -2785,7 +2785,7 @@ msgstr "HTTP"
|
|||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12
|
||||
#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38
|
||||
msgid "HTTP Auth"
|
||||
msgstr ""
|
||||
msgstr "HTTP-todennus"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13
|
||||
#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39
|
||||
|
@ -2802,11 +2802,11 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21
|
||||
msgid "Connect to a Deluge daemon (deluged)"
|
||||
msgstr ""
|
||||
msgstr "Yhdistä Deluge-taustaprosessiin (deluged)"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22
|
||||
msgid "Application Mode"
|
||||
msgstr ""
|
||||
msgstr "Sovellustila"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46
|
||||
|
@ -2841,11 +2841,11 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31
|
||||
msgid "Waiting:"
|
||||
msgstr ""
|
||||
msgstr "Odottaa:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32
|
||||
msgid "Missing:"
|
||||
msgstr ""
|
||||
msgstr "Puuttuu:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33
|
||||
msgid "_Revert"
|
||||
|
@ -2853,7 +2853,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34
|
||||
msgid "Revert color to default"
|
||||
msgstr ""
|
||||
msgstr "Palauta väri oletukseksi"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35
|
||||
msgid "Piece Colors"
|
||||
|
@ -2889,7 +2889,7 @@ msgstr "Suojaa ilmoitusalueelle pienennetty Deluge salasanalla"
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44
|
||||
msgid "System Tray"
|
||||
msgstr ""
|
||||
msgstr "Ilmoitusalue"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45
|
||||
msgid "Notify about new releases"
|
||||
|
@ -2939,7 +2939,7 @@ msgstr "Lataa kansioon:"
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54
|
||||
msgid "Download Folders"
|
||||
msgstr ""
|
||||
msgstr "Latauskansiot"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55
|
||||
#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93
|
||||
|
@ -2975,15 +2975,15 @@ msgstr "Lisää torrentit keskeytettyinä"
|
|||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:65
|
||||
#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:120
|
||||
msgid "Pre-allocate disk space"
|
||||
msgstr ""
|
||||
msgstr "Ennakkovaraa levytila"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66
|
||||
msgid "Pre-allocate the disk space for the torrent files"
|
||||
msgstr ""
|
||||
msgstr "Ennakkovaraa levytila torrent-tiedostoille"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67
|
||||
msgid "Add Torrent Options"
|
||||
msgstr ""
|
||||
msgstr "Lisää torrent -valinnat"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68
|
||||
msgid "Always show"
|
||||
|
@ -2995,15 +2995,15 @@ msgstr "Tuo valintaikkuna eteen"
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70
|
||||
msgid "Add Torrents Dialog"
|
||||
msgstr ""
|
||||
msgstr "Lisää torrentti -ikkuna"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71
|
||||
msgid "Connection Attempts per Second:"
|
||||
msgstr ""
|
||||
msgstr "Yhteysyrityksiä per sekunti:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72
|
||||
msgid "Half-Open Connections:"
|
||||
msgstr ""
|
||||
msgstr "Puoliksi avoimet yhteydet:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73
|
||||
msgid "The maximum number of connections allowed. Set -1 for unlimited."
|
||||
|
@ -3028,7 +3028,7 @@ msgstr ""
|
|||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:32
|
||||
#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:5
|
||||
msgid "Upload Slots:"
|
||||
msgstr ""
|
||||
msgstr "Lähetyspaikkoja:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77
|
||||
msgid "The maximum download speed for all torrents. Set -1 for unlimited."
|
||||
|
@ -3073,7 +3073,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85
|
||||
msgid "Global Bandwidth Limits"
|
||||
msgstr ""
|
||||
msgstr "Yleiset kaistanleveyden rajoitukset"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86
|
||||
msgid "The maximum upload slots per torrent. Set -1 for unlimited."
|
||||
|
@ -3095,19 +3095,19 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90
|
||||
msgid "Per-Torrent Bandwidth Limits"
|
||||
msgstr ""
|
||||
msgstr "Torrent-kohtaiset kaistanleveyden rajoitukset"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:91
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:556
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:42
|
||||
msgid "Queue to top"
|
||||
msgstr ""
|
||||
msgstr "Jonota ylimmäksi"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:92
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:554
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:30
|
||||
msgid "New Torrents"
|
||||
msgstr ""
|
||||
msgstr "Uudet torrentit"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85
|
||||
|
@ -3117,7 +3117,7 @@ msgstr ""
|
|||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59
|
||||
msgid "Total:"
|
||||
msgstr ""
|
||||
msgstr "Yhteensä:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102
|
||||
|
@ -3143,7 +3143,7 @@ msgstr ""
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:558
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50
|
||||
msgid "Active Torrents"
|
||||
msgstr ""
|
||||
msgstr "Aktiiviset torrentit"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7
|
||||
|
@ -3161,7 +3161,7 @@ msgstr ""
|
|||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
|
||||
msgid "Time (m):"
|
||||
msgstr ""
|
||||
msgstr "Aika (min):"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:590
|
||||
|
@ -3177,7 +3177,7 @@ msgstr "Keskeytä torrent"
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:627
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
|
||||
msgid "Share Ratio Reached"
|
||||
msgstr ""
|
||||
msgstr "Jakosuhde saavutettu"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
|
||||
msgid ""
|
||||
|
@ -3223,7 +3223,7 @@ msgstr ""
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:359
|
||||
#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101
|
||||
msgid "Outgoing Interface"
|
||||
msgstr ""
|
||||
msgstr "Lähtevä sovitin"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118
|
||||
#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
|
||||
|
@ -3240,7 +3240,7 @@ msgstr "Päättyen:"
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:328
|
||||
#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120
|
||||
msgid "Outgoing Ports"
|
||||
msgstr ""
|
||||
msgstr "Lähtevät portit"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121
|
||||
#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59
|
||||
|
@ -3318,7 +3318,7 @@ msgstr "Vertaisen TOS-tavu:"
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:372
|
||||
#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181
|
||||
msgid "Network Extras"
|
||||
msgstr ""
|
||||
msgstr "Verkon lisäasetukset"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137
|
||||
#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4
|
||||
|
@ -3368,7 +3368,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147
|
||||
msgid "Force Proxy Use"
|
||||
msgstr ""
|
||||
msgstr "Pakota välityspalvelimen käyttö"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:671
|
||||
|
@ -3386,7 +3386,7 @@ msgstr ""
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:669
|
||||
#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120
|
||||
msgid "Force Proxy"
|
||||
msgstr ""
|
||||
msgstr "Pakota välityspalvelin"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151
|
||||
msgid "Cache Size (16 KiB blocks):"
|
||||
|
@ -3449,7 +3449,7 @@ msgstr "Osumasuhde kirjoitetulle välimuistille:"
|
|||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:709
|
||||
msgid "Write"
|
||||
msgstr ""
|
||||
msgstr "Kirjoitettu"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162
|
||||
msgid ""
|
||||
|
@ -3491,7 +3491,7 @@ msgstr "Luettu:"
|
|||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:723
|
||||
msgid "Read"
|
||||
msgstr ""
|
||||
msgstr "Luettu"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171
|
||||
msgid ""
|
||||
|
@ -3554,11 +3554,11 @@ msgstr "GeoIP-tietokanta"
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183
|
||||
msgid "Associate with Deluge"
|
||||
msgstr ""
|
||||
msgstr "Liitä Delugeen"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184
|
||||
msgid "Magnet Links"
|
||||
msgstr ""
|
||||
msgstr "Magneettilinkit"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185
|
||||
#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37
|
||||
|
@ -3629,11 +3629,11 @@ msgstr "_Asenna"
|
|||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202
|
||||
msgid "_Find More..."
|
||||
msgstr ""
|
||||
msgstr "_Löydä enemmän..."
|
||||
|
||||
#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4
|
||||
msgid "Remove the selected torrent(s)?"
|
||||
msgstr ""
|
||||
msgstr "Poistetaanko valitut torrentit?"
|
||||
|
||||
#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5
|
||||
msgid "Include downloaded files"
|
||||
|
@ -3641,7 +3641,7 @@ msgstr "Sisällytä ladatut tiedostot"
|
|||
|
||||
#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
|
||||
msgid "(This is permanent!)"
|
||||
msgstr ""
|
||||
msgstr "(Tätä ei voi perua!)"
|
||||
|
||||
#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
|
||||
msgid "Add Peer"
|
||||
|
@ -3691,7 +3691,7 @@ msgstr "Näytä piilotetut tiedostot"
|
|||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11
|
||||
msgid "Set new key"
|
||||
msgstr ""
|
||||
msgstr "Aseta uusi avain"
|
||||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12
|
||||
msgid "Press this key to set new key accelerators to trigger auto-complete"
|
||||
|
@ -3829,7 +3829,7 @@ msgstr "Lisää Infohash"
|
|||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
|
||||
msgid "From Infohash"
|
||||
msgstr ""
|
||||
msgstr "Infohashista"
|
||||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
|
||||
msgid "Infohash:"
|
||||
|
@ -3892,13 +3892,13 @@ msgstr "Älä näytä tätä ilmoitusta tulevaisuudessa"
|
|||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26
|
||||
#: deluge/ui/web/render/tab_status.html:9
|
||||
msgid "Down Speed:"
|
||||
msgstr ""
|
||||
msgstr "Latausnopeus:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:2
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
|
||||
#: deluge/ui/web/render/tab_status.html:10
|
||||
msgid "Up Speed:"
|
||||
msgstr ""
|
||||
msgstr "Lähetysnopeus:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
|
||||
#: deluge/ui/web/render/tab_status.html:2
|
||||
|
@ -3913,7 +3913,7 @@ msgstr "Lähetetty:"
|
|||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
|
||||
#: deluge/ui/web/render/tab_status.html:16
|
||||
msgid "Seeds:"
|
||||
msgstr ""
|
||||
msgstr "Jakajia:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10
|
||||
|
@ -3924,7 +3924,7 @@ msgstr "Vertaiset:"
|
|||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8
|
||||
#: deluge/ui/web/render/tab_status.html:18
|
||||
msgid "Availability:"
|
||||
msgstr ""
|
||||
msgstr "Saatavuus:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9
|
||||
#: deluge/ui/web/render/tab_status.html:25
|
||||
|
@ -3933,7 +3933,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
|
||||
msgid "ETA Time:"
|
||||
msgstr ""
|
||||
msgstr "Arvioitu valmistumisaika:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
|
||||
#: deluge/ui/web/render/tab_status.html:13
|
||||
|
@ -3943,7 +3943,7 @@ msgstr ""
|
|||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
|
||||
#: deluge/ui/web/render/tab_status.html:23
|
||||
msgid "Active Time:"
|
||||
msgstr ""
|
||||
msgstr "Aktiivisuusaika:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
|
||||
#: deluge/ui/web/render/tab_status.html:20
|
||||
|
@ -3953,7 +3953,7 @@ msgstr ""
|
|||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
|
||||
#: deluge/ui/web/render/tab_status.html:24
|
||||
msgid "Seeding Time:"
|
||||
msgstr ""
|
||||
msgstr "Jakoaika:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16
|
||||
#: deluge/ui/web/render/tab_status.html:12
|
||||
|
@ -4024,7 +4024,7 @@ msgstr "Poista, kun jakosuhde on"
|
|||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
|
||||
msgid "Bandwidth Limits"
|
||||
msgstr ""
|
||||
msgstr "Kaistanleveyden rajoitukset"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46
|
||||
msgid "Current Tracker:"
|
||||
|
@ -4037,7 +4037,7 @@ msgstr ""
|
|||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48
|
||||
#: deluge/ui/web/render/tab_status.html:6
|
||||
msgid "Tracker Status:"
|
||||
msgstr ""
|
||||
msgstr "Seurantapalvelimen tila:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49
|
||||
#: deluge/ui/web/render/tab_status.html:5
|
||||
|
@ -4095,16 +4095,16 @@ msgstr "Suosi ensimmäisiä / viimeisiä osia"
|
|||
#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:46
|
||||
#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:152
|
||||
msgid "Skip File Hash Check"
|
||||
msgstr ""
|
||||
msgstr "Ohita tiedoston tiivisteen tarkistus"
|
||||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:23
|
||||
#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:170
|
||||
msgid "Preallocate Disk Space"
|
||||
msgstr ""
|
||||
msgstr "Ennakkovaraa levytila"
|
||||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24
|
||||
msgid "Preallocate the disk space for the torrent files"
|
||||
msgstr ""
|
||||
msgstr "Ennakkovaraa levytila torrent-tiedostoille"
|
||||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25
|
||||
msgid "Maximum torrent download speed"
|
||||
|
@ -4116,7 +4116,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29
|
||||
msgid "Maximum torrent connections"
|
||||
msgstr ""
|
||||
msgstr "Torrent-yhteyksien enimmäismäärä"
|
||||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31
|
||||
msgid "Maximum torrent upload slots"
|
||||
|
@ -4391,7 +4391,7 @@ msgstr "Lisää verkko-osoite"
|
|||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4
|
||||
msgid "From URL"
|
||||
msgstr ""
|
||||
msgstr "Verkko-osoitteesta"
|
||||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5
|
||||
#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1
|
||||
|
@ -4400,7 +4400,7 @@ msgstr "Osoite:"
|
|||
|
||||
#: deluge/ui/gtk3/glade/connection_manager.ui.h:9
|
||||
msgid "Deluge Daemons"
|
||||
msgstr ""
|
||||
msgstr "Deluge-taustaprosessit"
|
||||
|
||||
#: deluge/ui/gtk3/glade/connection_manager.ui.h:10
|
||||
msgid "Auto-connect to selected Daemon"
|
||||
|
@ -4612,7 +4612,7 @@ msgstr "Ottaa liitännäisen käyttöön"
|
|||
|
||||
#: deluge/ui/console/cmdline/commands/plugin.py:43
|
||||
msgid "Disables a plugin"
|
||||
msgstr ""
|
||||
msgstr "Poistaa liitännäisen käytöstä"
|
||||
|
||||
#: deluge/ui/console/cmdline/commands/plugin.py:51
|
||||
msgid "Reload list of available plugins"
|
||||
|
@ -4620,7 +4620,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/console/cmdline/commands/plugin.py:54
|
||||
msgid "Install a plugin from an .egg file"
|
||||
msgstr ""
|
||||
msgstr "Asenna liitännäinen .egg-tiedostosta"
|
||||
|
||||
#: deluge/ui/console/cmdline/commands/status.py:36
|
||||
msgid ""
|
||||
|
@ -4656,7 +4656,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/console/cmdline/commands/help.py:29
|
||||
msgid "One or more commands"
|
||||
msgstr ""
|
||||
msgstr "Yksi tai useampi komento"
|
||||
|
||||
#: deluge/ui/console/cmdline/commands/config.py:79
|
||||
msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]"
|
||||
|
@ -4764,7 +4764,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:254
|
||||
msgid "Move completed to"
|
||||
msgstr ""
|
||||
msgstr "Siirrä valmistuneet sijaintiin"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:269
|
||||
msgid "Copy of .torrent files to"
|
||||
|
@ -4776,7 +4776,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:293
|
||||
msgid "Pre-Allocate disk space"
|
||||
msgstr ""
|
||||
msgstr "Ennakkovaraa levytila"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:304
|
||||
msgid "Incomming Ports"
|
||||
|
@ -4822,7 +4822,7 @@ msgstr "Ulos"
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:413
|
||||
#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
|
||||
msgid "Global Bandwidth Usage"
|
||||
msgstr ""
|
||||
msgstr "Yleinen kaistankäyttö"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:416
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:469
|
||||
|
@ -4860,7 +4860,7 @@ msgstr "Nopeusraja IP:n yläpuolella"
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:466
|
||||
#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
|
||||
msgid "Per Torrent Bandwidth Usage"
|
||||
msgstr ""
|
||||
msgstr "Torrent-kohtainen kaistankäyttö"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:513
|
||||
msgid "Yes, please send anonymous statistics."
|
||||
|
@ -4868,7 +4868,7 @@ msgstr "Kyllä, lähetä anonyymeja tilastoja."
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:531
|
||||
msgid "Daemon Port"
|
||||
msgstr ""
|
||||
msgstr "Taustaprosessin portti"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:538
|
||||
msgid "Allow remote connections"
|
||||
|
@ -4884,11 +4884,11 @@ msgstr "Jakosuhde"
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:601
|
||||
msgid "Time Ratio"
|
||||
msgstr ""
|
||||
msgstr "Aikasuhde"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:609
|
||||
msgid "Time (m)"
|
||||
msgstr ""
|
||||
msgstr "Aika (min)"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:633
|
||||
msgid "Remove torrent (Unchecked pauses torrent)"
|
||||
|
@ -4912,11 +4912,11 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:697
|
||||
msgid "Cache Size (16 KiB blocks)"
|
||||
msgstr ""
|
||||
msgstr "Välimuistin koko (16 KiB:in lohkoissa)"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:704
|
||||
msgid "Cache Expiry (seconds)"
|
||||
msgstr ""
|
||||
msgstr "Välimuistin vanheneminen (sekuntia)"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:712
|
||||
msgid "Blocks Written"
|
||||
|
@ -4981,7 +4981,7 @@ msgstr ""
|
|||
#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118
|
||||
#, python-format
|
||||
msgid "The IP address \"%s\" is badly formed"
|
||||
msgstr ""
|
||||
msgstr "IP-osoite \"%s\" on väärin muodostettu"
|
||||
|
||||
#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21
|
||||
msgid "Emule IP list (GZip)"
|
||||
|
@ -5253,7 +5253,7 @@ msgstr "Pää"
|
|||
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31
|
||||
msgid "The user selected here will be the owner of the torrent."
|
||||
msgstr ""
|
||||
msgstr "Tässä valittu käyttäjä tulee olemaan torrentin omistaja."
|
||||
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32
|
||||
msgid "<b>Owner</b>"
|
||||
|
@ -5306,7 +5306,7 @@ msgstr "<b>Tarkkaile hakemistoja:</b>"
|
|||
|
||||
#: deluge/plugins/Stats/deluge_stats/gtkui.py:60
|
||||
msgid "minutes"
|
||||
msgstr ""
|
||||
msgstr "minuuttia"
|
||||
|
||||
#: deluge/plugins/Stats/deluge_stats/gtkui.py:62
|
||||
msgid "1 minute"
|
||||
|
@ -5322,7 +5322,7 @@ msgstr "sekuntia"
|
|||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1
|
||||
msgid "Stats"
|
||||
msgstr ""
|
||||
msgstr "Tilastot"
|
||||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2
|
||||
msgid "Resolution"
|
||||
|
@ -5330,15 +5330,15 @@ msgstr ""
|
|||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5
|
||||
msgid "Seeds/Peers"
|
||||
msgstr ""
|
||||
msgstr "Jakajat/vertaiset"
|
||||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1
|
||||
msgid "Download color:"
|
||||
msgstr ""
|
||||
msgstr "Latausväri:"
|
||||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2
|
||||
msgid "Upload color:"
|
||||
msgstr ""
|
||||
msgstr "Lähetysväri:"
|
||||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3
|
||||
msgid "<b>Connections Graph</b>"
|
||||
|
@ -5350,11 +5350,11 @@ msgstr "<b>Kaistanleveyden kuvaaja</b>"
|
|||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5
|
||||
msgid "DHT nodes:"
|
||||
msgstr ""
|
||||
msgstr "DHT-solmut:"
|
||||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6
|
||||
msgid "Cached DHT nodes:"
|
||||
msgstr ""
|
||||
msgstr "Välimuistissa olevat DHT-solmut:"
|
||||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7
|
||||
msgid "DHT torrents:"
|
||||
|
@ -5362,7 +5362,7 @@ msgstr "DHT-torrentit:"
|
|||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9
|
||||
msgid "<b>Seeds / Peers</b>"
|
||||
msgstr ""
|
||||
msgstr "<b>Jakajat / vertaiset</b>"
|
||||
|
||||
#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11
|
||||
msgid "<b>Graph Colors</b>"
|
||||
|
@ -5462,7 +5462,7 @@ msgstr "Käytä jonoasetuksia:"
|
|||
|
||||
#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17
|
||||
msgid "Apply folder settings:"
|
||||
msgstr ""
|
||||
msgstr "Toteuta kansioasetukset:"
|
||||
|
||||
#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19
|
||||
msgid "<i>(1 line per tracker)</i>"
|
||||
|
@ -5664,7 +5664,7 @@ msgstr "Ajastin"
|
|||
|
||||
#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289
|
||||
msgid "<b>Schedule</b>"
|
||||
msgstr ""
|
||||
msgstr "<b>Aikataulu</b>"
|
||||
|
||||
#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301
|
||||
msgid "Download Limit:"
|
||||
|
@ -5867,7 +5867,7 @@ msgstr "Yhdistä"
|
|||
#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197
|
||||
#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379
|
||||
msgid "Stop Daemon"
|
||||
msgstr ""
|
||||
msgstr "Pysäytä taustaprosessi"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185
|
||||
msgid "Disconnect"
|
||||
|
@ -5875,7 +5875,7 @@ msgstr "Katkaise yhteys"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204
|
||||
msgid "Start Daemon"
|
||||
msgstr ""
|
||||
msgstr "Käynnistä taustaprosessi"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322
|
||||
msgid "Change Default Password"
|
||||
|
@ -5953,7 +5953,7 @@ msgstr "Tila:"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
|
||||
msgid "Move Completed:"
|
||||
msgstr ""
|
||||
msgstr "Siirrä valmistuneet:"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272
|
||||
#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116
|
||||
|
@ -6040,11 +6040,11 @@ msgstr "Lähetyspaikkojen enimmäismäärä:"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43
|
||||
msgid "Cache Size (16 KiB Blocks):"
|
||||
msgstr ""
|
||||
msgstr "Välimuistin koko (16 KiB:in lohkoissa):"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132
|
||||
msgid "Force Use of Proxy"
|
||||
msgstr ""
|
||||
msgstr "Pakota välityspalvelimen käyttö"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116
|
||||
msgid "Find More"
|
||||
|
@ -6088,7 +6088,7 @@ msgstr "Palvelin"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140
|
||||
msgid "Session Timeout:"
|
||||
msgstr ""
|
||||
msgstr "Istunnon aikakatkaisu:"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165
|
||||
msgid "Enable SSL (paths relative to Deluge config folder)"
|
||||
|
@ -6173,15 +6173,15 @@ msgstr "Torrent ei ole kelvollinen"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50
|
||||
msgid "Move Completed Folder"
|
||||
msgstr ""
|
||||
msgstr "Siirrä valmistuneet -kansio"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85
|
||||
msgid "Max Down Speed"
|
||||
msgstr ""
|
||||
msgstr "Latausnopeus enintään"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93
|
||||
msgid "Max Up Speed"
|
||||
msgstr ""
|
||||
msgstr "Lähetysnopeus enintään"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125
|
||||
msgid "Add In Paused State"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
"X-Poedit-Language: Galician\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: deluge\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2019-11-12 14:55+0000\n"
|
||||
"PO-Revision-Date: 2019-06-06 10:57+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2023-02-17 20:51+0000\n"
|
||||
"Last-Translator: Hemish <Unknown>\n"
|
||||
"Language-Team: Hindi <hi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
@ -198,7 +198,7 @@ msgstr "सभी"
|
|||
#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
|
||||
#: deluge/ui/web/js/deluge-all/UI.js:19
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
msgstr "सक्रिय"
|
||||
|
||||
#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
|
||||
msgid "Allocating"
|
||||
|
@ -223,11 +223,11 @@ msgstr "सीड किया जा रहा है"
|
|||
|
||||
#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
|
||||
msgid "Paused"
|
||||
msgstr "ठहराया हुआ"
|
||||
msgstr "ठहरा हुआ"
|
||||
|
||||
#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
|
||||
msgid "Queued"
|
||||
msgstr "क़तार-बद्ध"
|
||||
msgstr "पंक्तिबद्ध"
|
||||
|
||||
#: deluge/ui/common.py:45 deluge/ui/common.py:122
|
||||
#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
|
||||
|
@ -288,7 +288,7 @@ msgstr "अपलोडेड"
|
|||
#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
|
||||
msgid "Remaining"
|
||||
msgstr ""
|
||||
msgstr "बाकी"
|
||||
|
||||
#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
|
||||
|
@ -393,7 +393,7 @@ msgstr ""
|
|||
#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
|
||||
msgid "Completed"
|
||||
msgstr ""
|
||||
msgstr "पूर्ण"
|
||||
|
||||
#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
|
||||
|
@ -404,7 +404,7 @@ msgstr "इ टी ए (E T A)"
|
|||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
|
||||
msgid "Shared"
|
||||
msgstr ""
|
||||
msgstr "साझा किए गए"
|
||||
|
||||
#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
|
||||
#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
|
||||
|
@ -455,7 +455,7 @@ msgstr ""
|
|||
#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
|
||||
msgid "Owner"
|
||||
msgstr ""
|
||||
msgstr "मालिक"
|
||||
|
||||
#: deluge/ui/common.py:116
|
||||
msgid "Pieces"
|
||||
|
@ -539,7 +539,7 @@ msgstr "प्रॉक्सी"
|
|||
#: deluge/ui/console/modes/preferences/preferences.py:97
|
||||
#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18
|
||||
msgid "Cache"
|
||||
msgstr ""
|
||||
msgstr "कैश"
|
||||
|
||||
#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:499
|
||||
|
@ -567,22 +567,22 @@ msgstr "प्लग-इन्स"
|
|||
#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
|
||||
#: deluge/ui/web/js/deluge-all/Menus.js:365
|
||||
msgid "Skip"
|
||||
msgstr ""
|
||||
msgstr "अभी नहीं"
|
||||
|
||||
#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
|
||||
#: deluge/ui/web/js/deluge-all/Menus.js:371
|
||||
msgid "Low"
|
||||
msgstr ""
|
||||
msgstr "कम"
|
||||
|
||||
#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
|
||||
#: deluge/ui/web/js/deluge-all/Menus.js:377
|
||||
msgid "Normal"
|
||||
msgstr ""
|
||||
msgstr "सामान्य"
|
||||
|
||||
#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
|
||||
#: deluge/ui/web/js/deluge-all/Menus.js:383
|
||||
msgid "High"
|
||||
msgstr ""
|
||||
msgstr "उच्च"
|
||||
|
||||
#: deluge/ui/client.py:681
|
||||
msgid ""
|
||||
|
@ -592,7 +592,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/countries.py:10
|
||||
msgid "Afghanistan"
|
||||
msgstr ""
|
||||
msgstr "अफ़ग़ानिस्तान"
|
||||
|
||||
#: deluge/ui/countries.py:11
|
||||
msgid "Aland Islands"
|
||||
|
@ -644,15 +644,15 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/countries.py:23
|
||||
msgid "Australia"
|
||||
msgstr ""
|
||||
msgstr "ऑस्ट्रेलिया"
|
||||
|
||||
#: deluge/ui/countries.py:24
|
||||
msgid "Austria"
|
||||
msgstr ""
|
||||
msgstr "ऑस्ट्रिया"
|
||||
|
||||
#: deluge/ui/countries.py:25
|
||||
msgid "Azerbaijan"
|
||||
msgstr ""
|
||||
msgstr "अज़रबैजान"
|
||||
|
||||
#: deluge/ui/countries.py:26
|
||||
msgid "Bahamas"
|
||||
|
@ -664,7 +664,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/countries.py:28
|
||||
msgid "Bangladesh"
|
||||
msgstr ""
|
||||
msgstr "बांग्लादेश"
|
||||
|
||||
#: deluge/ui/countries.py:29
|
||||
msgid "Barbados"
|
||||
|
@ -672,11 +672,11 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/countries.py:30
|
||||
msgid "Belarus"
|
||||
msgstr ""
|
||||
msgstr "बेलारूस"
|
||||
|
||||
#: deluge/ui/countries.py:31
|
||||
msgid "Belgium"
|
||||
msgstr ""
|
||||
msgstr "बेल्जियम"
|
||||
|
||||
#: deluge/ui/countries.py:32
|
||||
msgid "Belize"
|
||||
|
@ -1887,7 +1887,7 @@ msgstr ""
|
|||
#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65
|
||||
#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74
|
||||
msgid "Username:"
|
||||
msgstr "उपयोगकर्ता का नाम:"
|
||||
msgstr "उपयोगक्ता का नाम:"
|
||||
|
||||
#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310
|
||||
#: deluge/ui/gtk3/dialogs.py:437
|
||||
|
@ -2264,7 +2264,7 @@ msgstr "स्तर"
|
|||
#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67
|
||||
#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71
|
||||
msgid "Enabled"
|
||||
msgstr "सक्रिय किया"
|
||||
msgstr "सक्रिय"
|
||||
|
||||
#: deluge/ui/gtk3/preferences.py:162
|
||||
#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87
|
||||
|
@ -3223,7 +3223,7 @@ msgstr ""
|
|||
#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11
|
||||
#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155
|
||||
msgid "From:"
|
||||
msgstr "द्वारा:"
|
||||
msgstr "प्रेषक:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119
|
||||
#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165
|
||||
|
@ -3403,7 +3403,7 @@ msgstr ""
|
|||
#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29
|
||||
#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
msgstr "सेटिंग्स"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155
|
||||
msgid ""
|
||||
|
@ -5023,7 +5023,7 @@ msgstr "चालु होने पर ब्लॉकलिस्ट आय
|
|||
#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:6
|
||||
#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:4
|
||||
msgid "<b>Settings</b>"
|
||||
msgstr "<b>सेटिंग</b>"
|
||||
msgstr "<b>सेटिंग्स</b>"
|
||||
|
||||
#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7
|
||||
msgid "Download the blocklist file if necessary and import the file."
|
||||
|
@ -5126,7 +5126,7 @@ msgstr ""
|
|||
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507
|
||||
msgid "Path"
|
||||
msgstr ""
|
||||
msgstr "पाथ"
|
||||
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125
|
||||
msgid "Watch folder does not exist."
|
||||
|
@ -5135,7 +5135,7 @@ msgstr ""
|
|||
#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443
|
||||
msgid "Path does not exist."
|
||||
msgstr ""
|
||||
msgstr "पाथ मौजूद नहीं है"
|
||||
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1
|
||||
msgid "Watch Folder Properties"
|
||||
|
@ -5372,7 +5372,7 @@ msgstr ""
|
|||
|
||||
#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3
|
||||
msgid "Listening port:"
|
||||
msgstr ""
|
||||
msgstr "सुनने का पोर्ट:"
|
||||
|
||||
#: deluge/plugins/Label/deluge_label/core.py:184
|
||||
msgid "Invalid label, valid characters:[a-z0-9_-]"
|
||||
|
@ -5495,7 +5495,7 @@ msgstr ""
|
|||
|
||||
#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194
|
||||
msgid "pygame is not installed"
|
||||
msgstr ""
|
||||
msgstr "pygame स्थापित नहीं है"
|
||||
|
||||
#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206
|
||||
#, python-format
|
||||
|
@ -5573,7 +5573,7 @@ msgstr ""
|
|||
|
||||
#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3
|
||||
msgid "Sound enabled"
|
||||
msgstr ""
|
||||
msgstr "ध्वनि सक्षम हैं"
|
||||
|
||||
#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4
|
||||
msgid "<b>UI Notifications</b>"
|
||||
|
@ -5724,7 +5724,7 @@ msgstr "स्थानान्तर"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/MoveStorage.js:54
|
||||
msgid "Browse"
|
||||
msgstr ""
|
||||
msgstr "ब्राउज़ करें"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17
|
||||
msgid "Edit Connection"
|
||||
|
@ -5757,7 +5757,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/Deluge.js:158
|
||||
msgid "Mixed"
|
||||
msgstr ""
|
||||
msgstr "मिश्रित"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/Statusbar.js:87
|
||||
msgid "Set Maximum Connections"
|
||||
|
@ -5906,7 +5906,7 @@ msgstr "बलपूर्वक पुनः जांच"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/Menus.js:359
|
||||
msgid "Expand All"
|
||||
msgstr ""
|
||||
msgstr "सभी फैलाएँ"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13
|
||||
msgid "Details"
|
||||
|
@ -5914,11 +5914,11 @@ msgstr "विवरण"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28
|
||||
msgid "Comment:"
|
||||
msgstr ""
|
||||
msgstr "टिप्पणीः"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29
|
||||
msgid "Status:"
|
||||
msgstr ""
|
||||
msgstr "स्थिति:"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242
|
||||
msgid "Move Completed:"
|
||||
|
@ -5935,7 +5935,7 @@ msgstr "निजी"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39
|
||||
msgid "Loading"
|
||||
msgstr ""
|
||||
msgstr "लोड हो रहा है"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118
|
||||
msgid "True"
|
||||
|
@ -5962,7 +5962,7 @@ msgstr ""
|
|||
#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33
|
||||
#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109
|
||||
msgid "Install"
|
||||
msgstr ""
|
||||
msgstr "स्थापित करें"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45
|
||||
msgid "Select an egg"
|
||||
|
@ -6041,11 +6041,11 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110
|
||||
msgid "Old:"
|
||||
msgstr ""
|
||||
msgstr "पुराना:"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114
|
||||
msgid "New:"
|
||||
msgstr ""
|
||||
msgstr "नया:"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118
|
||||
msgid "Confirm:"
|
||||
|
@ -6081,11 +6081,11 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210
|
||||
msgid "Refresh"
|
||||
msgstr ""
|
||||
msgstr "ताज़ा करें"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244
|
||||
msgid "Invalid Password"
|
||||
msgstr ""
|
||||
msgstr "अवैध पासवर्ड"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245
|
||||
msgid "Your passwords don't match!"
|
||||
|
@ -6114,7 +6114,7 @@ msgstr "यूआरएल"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45
|
||||
msgid "Cookies"
|
||||
msgstr ""
|
||||
msgstr "कुकी"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99
|
||||
msgid "Failed to download torrent"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
"Language: hr\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: deluge\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2019-11-12 14:55+0000\n"
|
||||
"PO-Revision-Date: 2019-06-06 10:57+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2022-08-03 16:14+0000\n"
|
||||
"Last-Translator: Coool <Unknown>\n"
|
||||
"Language-Team: Latvian <lv@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
@ -125,6 +125,8 @@ msgstr ""
|
|||
#: deluge/argparserbase.py:206
|
||||
msgid "Set the log level (none, error, warning, info, debug)"
|
||||
msgstr ""
|
||||
"Iestatīt žurnāla līmeni (nežurnalēt, kļūda, brīdinājums, informācija, "
|
||||
"atkļūdošana)"
|
||||
|
||||
#: deluge/argparserbase.py:215
|
||||
#, python-format
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
6164
deluge/i18n/mo.po
Normal file
6164
deluge/i18n/mo.po
Normal file
File diff suppressed because it is too large
Load diff
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -8,18 +8,18 @@ msgstr ""
|
|||
"Project-Id-Version: deluge\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2019-11-12 14:55+0000\n"
|
||||
"PO-Revision-Date: 2019-06-06 10:57+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2021-12-23 05:43+0000\n"
|
||||
"Last-Translator: Sam van Kampen <sam@tehsvk.net>\n"
|
||||
"Language-Team: Dutch <nl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
msgstr ""
|
||||
msgstr "B"
|
||||
|
||||
#: deluge/common.py:412
|
||||
msgid "KiB"
|
||||
|
@ -35,7 +35,7 @@ msgstr "GiB"
|
|||
|
||||
#: deluge/common.py:415
|
||||
msgid "TiB"
|
||||
msgstr ""
|
||||
msgstr "TiB"
|
||||
|
||||
#: deluge/common.py:416
|
||||
msgid "K"
|
||||
|
@ -80,7 +80,7 @@ msgstr "KiB/s"
|
|||
|
||||
#: deluge/common.py:521
|
||||
msgid "M/s"
|
||||
msgstr ""
|
||||
msgstr "M/s"
|
||||
|
||||
#: deluge/common.py:521
|
||||
msgid "MiB/s"
|
||||
|
@ -88,7 +88,7 @@ msgstr "MiB/s"
|
|||
|
||||
#: deluge/common.py:527
|
||||
msgid "G/s"
|
||||
msgstr ""
|
||||
msgstr "G/s"
|
||||
|
||||
#: deluge/common.py:527
|
||||
msgid "GiB/s"
|
||||
|
@ -96,11 +96,11 @@ msgstr "GiB/s"
|
|||
|
||||
#: deluge/common.py:533
|
||||
msgid "T/s"
|
||||
msgstr ""
|
||||
msgstr "T/s"
|
||||
|
||||
#: deluge/common.py:533
|
||||
msgid "TiB/s"
|
||||
msgstr ""
|
||||
msgstr "TiB/s"
|
||||
|
||||
#: deluge/argparserbase.py:172
|
||||
msgid "Common Options"
|
||||
|
@ -108,11 +108,11 @@ msgstr ""
|
|||
|
||||
#: deluge/argparserbase.py:175
|
||||
msgid "Print this help message"
|
||||
msgstr ""
|
||||
msgstr "Dit Help-bericht afdrukken"
|
||||
|
||||
#: deluge/argparserbase.py:182
|
||||
msgid "Print version information"
|
||||
msgstr ""
|
||||
msgstr "Versie-informatie afdrukken"
|
||||
|
||||
#: deluge/argparserbase.py:194
|
||||
msgid "Set the config directory path"
|
||||
|
@ -278,12 +278,12 @@ msgstr "Grootte"
|
|||
#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244
|
||||
msgid "Downloaded"
|
||||
msgstr "Gedownloaded"
|
||||
msgstr "Binnengehaald"
|
||||
|
||||
#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252
|
||||
msgid "Uploaded"
|
||||
msgstr "Geupload"
|
||||
msgstr "Geüpload"
|
||||
|
||||
#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
|
||||
|
@ -3901,17 +3901,17 @@ msgstr ""
|
|||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:28
|
||||
#: deluge/ui/web/render/tab_status.html:10
|
||||
msgid "Up Speed:"
|
||||
msgstr ""
|
||||
msgstr "Uploadsnelheid:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3
|
||||
#: deluge/ui/web/render/tab_status.html:2
|
||||
msgid "Downloaded:"
|
||||
msgstr ""
|
||||
msgstr "Binnengehaald:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4
|
||||
#: deluge/ui/web/render/tab_status.html:3
|
||||
msgid "Uploaded:"
|
||||
msgstr ""
|
||||
msgstr "Geüpload:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5
|
||||
#: deluge/ui/web/render/tab_status.html:16
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -8,18 +8,18 @@ msgstr ""
|
|||
"Project-Id-Version: deluge\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2019-11-12 14:55+0000\n"
|
||||
"PO-Revision-Date: 2019-06-06 10:57+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2023-11-06 18:51+0000\n"
|
||||
"Last-Translator: Cas <Unknown>\n"
|
||||
"Language-Team: Polish <pl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
msgstr ""
|
||||
msgstr "B"
|
||||
|
||||
#: deluge/common.py:412
|
||||
msgid "KiB"
|
||||
|
@ -35,7 +35,7 @@ msgstr "GiB"
|
|||
|
||||
#: deluge/common.py:415
|
||||
msgid "TiB"
|
||||
msgstr ""
|
||||
msgstr "TiB"
|
||||
|
||||
#: deluge/common.py:416
|
||||
msgid "K"
|
||||
|
@ -51,7 +51,7 @@ msgstr "G"
|
|||
|
||||
#: deluge/common.py:419
|
||||
msgid "T"
|
||||
msgstr ""
|
||||
msgstr "T"
|
||||
|
||||
#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442
|
||||
#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464
|
||||
|
@ -62,7 +62,7 @@ msgstr ""
|
|||
#: deluge/ui/gtk3/systemtray.py:274 deluge/ui/gtk3/systemtray.py:442
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:40
|
||||
msgid "K/s"
|
||||
msgstr ""
|
||||
msgstr "K/s"
|
||||
|
||||
#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449
|
||||
#: deluge/ui/gtk3/menubar.py:455
|
||||
|
@ -80,7 +80,7 @@ msgstr "KiB/s"
|
|||
|
||||
#: deluge/common.py:521
|
||||
msgid "M/s"
|
||||
msgstr ""
|
||||
msgstr "M/s"
|
||||
|
||||
#: deluge/common.py:521
|
||||
msgid "MiB/s"
|
||||
|
@ -88,7 +88,7 @@ msgstr "MiB/s"
|
|||
|
||||
#: deluge/common.py:527
|
||||
msgid "G/s"
|
||||
msgstr ""
|
||||
msgstr "G/s"
|
||||
|
||||
#: deluge/common.py:527
|
||||
msgid "GiB/s"
|
||||
|
@ -96,11 +96,11 @@ msgstr "GiB/s"
|
|||
|
||||
#: deluge/common.py:533
|
||||
msgid "T/s"
|
||||
msgstr ""
|
||||
msgstr "T/s"
|
||||
|
||||
#: deluge/common.py:533
|
||||
msgid "TiB/s"
|
||||
msgstr ""
|
||||
msgstr "TiB/s"
|
||||
|
||||
#: deluge/argparserbase.py:172
|
||||
msgid "Common Options"
|
||||
|
@ -198,36 +198,36 @@ msgstr "Wszystkie"
|
|||
#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534
|
||||
#: deluge/ui/web/js/deluge-all/UI.js:19
|
||||
msgid "Active"
|
||||
msgstr "Aktywny"
|
||||
msgstr "Aktywne"
|
||||
|
||||
#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20
|
||||
msgid "Allocating"
|
||||
msgstr ""
|
||||
msgstr "Alokowane"
|
||||
|
||||
#: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21
|
||||
#: deluge/ui/web/js/deluge-all/UI.js:25
|
||||
msgid "Checking"
|
||||
msgstr "Sprawdzanie"
|
||||
msgstr "Sprawdzane"
|
||||
|
||||
#: deluge/ui/common.py:41
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:568
|
||||
#: deluge/ui/web/js/deluge-all/UI.js:22
|
||||
msgid "Downloading"
|
||||
msgstr "Pobieranie"
|
||||
msgstr "Pobierane"
|
||||
|
||||
#: deluge/ui/common.py:42
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:575
|
||||
#: deluge/ui/web/js/deluge-all/UI.js:23
|
||||
msgid "Seeding"
|
||||
msgstr "Wysyłanie"
|
||||
msgstr "Wysyłane"
|
||||
|
||||
#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24
|
||||
msgid "Paused"
|
||||
msgstr "Pauza"
|
||||
msgstr "Wstrzymane"
|
||||
|
||||
#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26
|
||||
msgid "Queued"
|
||||
msgstr "W kolejce"
|
||||
msgstr "Zakolejkowane"
|
||||
|
||||
#: deluge/ui/common.py:45 deluge/ui/common.py:122
|
||||
#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131
|
||||
|
@ -243,7 +243,7 @@ msgstr "W kolejce"
|
|||
#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291
|
||||
#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316
|
||||
msgid "Error"
|
||||
msgstr "Błąd"
|
||||
msgstr "Błędne"
|
||||
|
||||
#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793
|
||||
#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276
|
||||
|
@ -288,26 +288,26 @@ msgstr "Wysłano"
|
|||
#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260
|
||||
msgid "Remaining"
|
||||
msgstr ""
|
||||
msgstr "Pozostało"
|
||||
|
||||
#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
|
||||
msgid "Ratio"
|
||||
msgstr "Ratio"
|
||||
msgstr "Ułamek"
|
||||
|
||||
#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
|
||||
#: deluge/ui/gtk3/peers_tab.py:133
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:144
|
||||
#: deluge/ui/web/js/deluge-all/details/PeersTab.js:87
|
||||
msgid "Down Speed"
|
||||
msgstr "Szybk. pobierania"
|
||||
msgstr "Szybkość pobierania"
|
||||
|
||||
#: deluge/ui/common.py:60 deluge/ui/gtk3/torrentview.py:346
|
||||
#: deluge/ui/gtk3/peers_tab.py:146
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:151
|
||||
#: deluge/ui/web/js/deluge-all/details/PeersTab.js:94
|
||||
msgid "Up Speed"
|
||||
msgstr "Szybk. wysyłania"
|
||||
msgstr "Szybkość wysyłania"
|
||||
|
||||
#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268
|
||||
|
@ -321,11 +321,11 @@ msgstr "Limit Wysyłania"
|
|||
|
||||
#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101
|
||||
msgid "Max Connections"
|
||||
msgstr ""
|
||||
msgstr "Maksymalnie Połączeń"
|
||||
|
||||
#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109
|
||||
msgid "Max Upload Slots"
|
||||
msgstr ""
|
||||
msgstr "Maksymalnie Slotów Wysyłania"
|
||||
|
||||
#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136
|
||||
|
@ -336,17 +336,17 @@ msgstr "Uczestnicy"
|
|||
#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128
|
||||
msgid "Seeds"
|
||||
msgstr ""
|
||||
msgstr "Posiadacze"
|
||||
|
||||
#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173
|
||||
msgid "Avail"
|
||||
msgstr "Dost."
|
||||
msgstr "Dostępność"
|
||||
|
||||
#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284
|
||||
msgid "Seeds:Peers"
|
||||
msgstr ""
|
||||
msgstr "Posiadaczy:Uczestników"
|
||||
|
||||
#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203
|
||||
#: deluge/ui/gtk3/torrentview.py:387
|
||||
|
@ -367,33 +367,33 @@ msgstr "Tracker"
|
|||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213
|
||||
#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31
|
||||
msgid "Download Folder"
|
||||
msgstr ""
|
||||
msgstr "Folder pobrania"
|
||||
|
||||
#: deluge/ui/common.py:75
|
||||
msgid "Seeding Time"
|
||||
msgstr ""
|
||||
msgstr "Razem wysyłano czasu"
|
||||
|
||||
#: deluge/ui/common.py:76
|
||||
msgid "Active Time"
|
||||
msgstr ""
|
||||
msgstr "Razem aktywności czasu"
|
||||
|
||||
#: deluge/ui/common.py:78
|
||||
msgid "Last Activity"
|
||||
msgstr ""
|
||||
msgstr "Ostatnia aktywność"
|
||||
|
||||
#: deluge/ui/common.py:81
|
||||
msgid "Finished Time"
|
||||
msgstr ""
|
||||
msgstr "Zakończono o"
|
||||
|
||||
#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189
|
||||
msgid "Complete Seen"
|
||||
msgstr ""
|
||||
msgstr "Ostatnio widziano cały o"
|
||||
|
||||
#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197
|
||||
msgid "Completed"
|
||||
msgstr ""
|
||||
msgstr "Zakończono o"
|
||||
|
||||
#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158
|
||||
|
@ -404,7 +404,7 @@ msgstr "Pozostało"
|
|||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236
|
||||
msgid "Shared"
|
||||
msgstr ""
|
||||
msgstr "Współdzielony"
|
||||
|
||||
#: deluge/ui/common.py:90 deluge/ui/gtk3/glade/main_window.tabs.ui.h:31
|
||||
#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:287
|
||||
|
@ -415,7 +415,7 @@ msgstr "Kolejkuj Pierwszy/Ostatni"
|
|||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14
|
||||
#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143
|
||||
msgid "Sequential Download"
|
||||
msgstr ""
|
||||
msgstr "Sekwencyjne pobieranie"
|
||||
|
||||
#: deluge/ui/common.py:97 deluge/ui/common.py:98
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35
|
||||
|
@ -427,19 +427,19 @@ msgstr "Automatycznie zarządzany"
|
|||
|
||||
#: deluge/ui/common.py:99
|
||||
msgid "Stop At Ratio"
|
||||
msgstr ""
|
||||
msgstr "Zatrzymaj na ułamku"
|
||||
|
||||
#: deluge/ui/common.py:100
|
||||
msgid "Stop Ratio"
|
||||
msgstr ""
|
||||
msgstr "Ułamek do zatrzymania"
|
||||
|
||||
#: deluge/ui/common.py:101
|
||||
msgid "Remove At Ratio"
|
||||
msgstr ""
|
||||
msgstr "Usuń na ułamku"
|
||||
|
||||
#: deluge/ui/common.py:102 deluge/ui/common.py:108
|
||||
msgid "Move On Completed"
|
||||
msgstr ""
|
||||
msgstr "Przenieś po zakończeniu"
|
||||
|
||||
#: deluge/ui/common.py:104
|
||||
msgid "Move Completed Path"
|
||||
|
@ -455,7 +455,7 @@ msgstr ""
|
|||
#: deluge/ui/web/js/deluge-all/FilterPanel.js:32
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221
|
||||
msgid "Owner"
|
||||
msgstr ""
|
||||
msgstr "Właściciel"
|
||||
|
||||
#: deluge/ui/common.py:116
|
||||
msgid "Pieces"
|
||||
|
@ -463,13 +463,13 @@ msgstr "Fragmentów"
|
|||
|
||||
#: deluge/ui/common.py:117
|
||||
msgid "Seed Rank"
|
||||
msgstr ""
|
||||
msgstr "Cyklów seedowania"
|
||||
|
||||
#: deluge/ui/common.py:118 deluge/ui/gtk3/glade/main_window.tabs.ui.h:33
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:22
|
||||
#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:294
|
||||
msgid "Super Seeding"
|
||||
msgstr ""
|
||||
msgstr "Początkowe seedowanie"
|
||||
|
||||
#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122
|
||||
msgid "Warning"
|
||||
|
@ -506,7 +506,7 @@ msgstr "Pobierane"
|
|||
#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21
|
||||
#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73
|
||||
msgid "Bandwidth"
|
||||
msgstr "Łącze"
|
||||
msgstr "Przepustowość"
|
||||
|
||||
#: deluge/ui/common.py:132
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:550
|
||||
|
@ -532,7 +532,7 @@ msgstr "Sieć"
|
|||
#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21
|
||||
#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
msgstr "Pośrednik sieciowy"
|
||||
|
||||
#: deluge/ui/common.py:135
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:685
|
||||
|
@ -567,22 +567,22 @@ msgstr "Wtyczki"
|
|||
#: deluge/ui/common.py:150 deluge/ui/web/js/deluge-all/Deluge.js:154
|
||||
#: deluge/ui/web/js/deluge-all/Menus.js:365
|
||||
msgid "Skip"
|
||||
msgstr ""
|
||||
msgstr "Nie pobieraj"
|
||||
|
||||
#: deluge/ui/common.py:151 deluge/ui/web/js/deluge-all/Deluge.js:155
|
||||
#: deluge/ui/web/js/deluge-all/Menus.js:371
|
||||
msgid "Low"
|
||||
msgstr ""
|
||||
msgstr "Niski priorytet"
|
||||
|
||||
#: deluge/ui/common.py:152 deluge/ui/web/js/deluge-all/Deluge.js:156
|
||||
#: deluge/ui/web/js/deluge-all/Menus.js:377
|
||||
msgid "Normal"
|
||||
msgstr ""
|
||||
msgstr "Średni priorytet"
|
||||
|
||||
#: deluge/ui/common.py:153 deluge/ui/web/js/deluge-all/Deluge.js:157
|
||||
#: deluge/ui/web/js/deluge-all/Menus.js:383
|
||||
msgid "High"
|
||||
msgstr ""
|
||||
msgstr "Wysoki priorytet"
|
||||
|
||||
#: deluge/ui/client.py:681
|
||||
msgid ""
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
1298
deluge/i18n/ru.po
1298
deluge/i18n/ru.po
File diff suppressed because it is too large
Load diff
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -16,8 +16,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
"Language: sv\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: deluge\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2019-11-12 14:55+0000\n"
|
||||
"PO-Revision-Date: 2021-07-07 20:36+0000\n"
|
||||
"PO-Revision-Date: 2021-12-23 09:01+0000\n"
|
||||
"Last-Translator: ma$terok <Unknown>\n"
|
||||
"Language-Team: Ukrainian <uk@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
@ -301,7 +301,7 @@ msgstr "Залишилося"
|
|||
#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373
|
||||
#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165
|
||||
msgid "Ratio"
|
||||
msgstr "Відношення"
|
||||
msgstr "Рейтинг"
|
||||
|
||||
#: deluge/ui/common.py:59 deluge/ui/gtk3/torrentview.py:340
|
||||
#: deluge/ui/gtk3/peers_tab.py:133
|
||||
|
@ -1797,28 +1797,28 @@ msgid ""
|
|||
"delete this exception statement from all source files in the program, then "
|
||||
"also delete it here."
|
||||
msgstr ""
|
||||
"Ця проґрама є вільним проґрамним забезпеченням, Ви можете розповсюджувати та "
|
||||
"/ або модифікувати його на умовах GNU General Public License, опублікованій "
|
||||
"Free Software Foundation, версії 3, або (за вашим вибором) будь-якої "
|
||||
"пізнішої версії.\n"
|
||||
"Ця програма є безкоштовним програмним забезпеченням; ви можете поширювати "
|
||||
"його та/або змінювати відповідно до умов Загальної публічної ліцензії GNU, "
|
||||
"опублікованої Фондом вільного програмного забезпечення; або версії 3 "
|
||||
"Ліцензії, або (на ваш вибір) будь якої пізнішої версії.\n"
|
||||
"\n"
|
||||
"Ця проґрама поширюється зі сподіванням, що вона буде корисною, але БЕЗ БУДЬ-"
|
||||
"ЯКИХ ЗАПОРУК, навіть без запорук КОМЕРЦІЙНОЇ ЦІННОСТІ чи ПРИДАТНОСТІ ДЛЯ "
|
||||
"КОНКРЕТНИХ ЦІЛЕЙ. Див громадської ліцензії GNU General ліцензії для більш "
|
||||
"докладної інформації.\n"
|
||||
"Ця програма розповсюджується в надії, що вона буде корисною, але БЕЗ БУДЬ "
|
||||
"ЯКИХ ГАРАНТІЙ; навіть без прихованої гарантії КОМЕРЦІЙНОЇ ВИГОДИ чи "
|
||||
"ПРИДАТНОСТІ ДЛЯ КОНКРЕТНИХ ЦІЛЕЙ. Докладніше дивися у Загальнодоступній "
|
||||
"ліцензії GNU.\n"
|
||||
"\n"
|
||||
"Ви повинні були отримати копію Public License GNU General разом з цією "
|
||||
"проґрамою, якщо ні, див <http://www.gnu.org/licenses>.\n"
|
||||
"Ви повинні були отримати копію Загальної публічної ліцензії GNU разом із "
|
||||
"цією програмою; якщо ні, дивися <http://www.gnu.org/licenses>.\n"
|
||||
"\n"
|
||||
"Крім того, в якості особливого винятку, власників авторських прав дати "
|
||||
"дозвіл, щоб зв'язати код частини цієї проґрами з бібліотекою OpenSSL. Ви "
|
||||
"повинні коритися GNU General Public License у всіх відношеннях для всіх код, "
|
||||
"що використовується, крім OpenSSL.\n"
|
||||
"Крім того, як особливий виняток, власники авторських прав дають дозвіл "
|
||||
"пов'язувати код частин цієї програми з бібліотекою OpenSSL. Ви повинні "
|
||||
"дотримуватись Загальної загальнодоступної ліцензії GNU у всіх відношеннях до "
|
||||
"всього коду, що використовується, крім OpenSSL.\n"
|
||||
"\n"
|
||||
"Якщо ви зміните файл (и) з виключенням цього, ви можете розширити це виняток "
|
||||
"для вашої версії файлу (ів), але ви не зобов'язані це робити. Якщо ви не "
|
||||
"хочете зробити це, вилучіть це виняток заява від вашої версії. Якщо ви "
|
||||
"вилучите це виняток заява всі вихідні файли в проґраму, то і вилучати її тут."
|
||||
"Якщо ви змінюєте файл (и) з цим винятком, ви можете поширити цей виняток на "
|
||||
"свою версію файлу (ів), але ви не зобов’язані це робити. Якщо ви не хочете "
|
||||
"цього робити, видаліть цей виняток із своєї версії. Якщо ви видалите цей "
|
||||
"виняток із усіх вихідних файлів програми, також видаліть його тут."
|
||||
|
||||
#: deluge/ui/gtk3/aboutdialog.py:829
|
||||
#: deluge/ui/web/js/deluge-all/AboutWindow.js:65
|
||||
|
@ -3223,12 +3223,12 @@ msgstr "Активні торенти"
|
|||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187
|
||||
#: deluge/ui/web/render/tab_status.html:4
|
||||
msgid "Share Ratio:"
|
||||
msgstr "Співвідношення:"
|
||||
msgstr "Рейтинг:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142
|
||||
msgid "Time Ratio:"
|
||||
msgstr ""
|
||||
msgstr "Співвідношення часу:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157
|
||||
|
@ -3239,7 +3239,7 @@ msgstr "Час(хв)"
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:590
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118
|
||||
msgid "Seeding Rotation"
|
||||
msgstr ""
|
||||
msgstr "Ротація завершених"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104
|
||||
msgid "Pause Torrent"
|
||||
|
@ -3249,7 +3249,7 @@ msgstr "Призупинити торент"
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:627
|
||||
#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173
|
||||
msgid "Share Ratio Reached"
|
||||
msgstr ""
|
||||
msgstr "Співвідношення досягнуто"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107
|
||||
msgid ""
|
||||
|
@ -3456,7 +3456,7 @@ msgstr "Примусово використовувати проксі"
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:671
|
||||
#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141
|
||||
msgid "Hide Client Identity"
|
||||
msgstr ""
|
||||
msgstr "Приховати дані клієнта"
|
||||
|
||||
#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149
|
||||
msgid ""
|
||||
|
@ -3728,7 +3728,7 @@ msgstr "Додати завантажені файли"
|
|||
|
||||
#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6
|
||||
msgid "(This is permanent!)"
|
||||
msgstr "(Це постійно!)"
|
||||
msgstr "Назавжди"
|
||||
|
||||
#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1
|
||||
msgid "Add Peer"
|
||||
|
@ -3754,7 +3754,7 @@ msgstr "<b>Загальні</b>"
|
|||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5
|
||||
msgid "Show path entry"
|
||||
msgstr ""
|
||||
msgstr "Вказати шлях"
|
||||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6
|
||||
msgid "Show file chooser"
|
||||
|
@ -3766,7 +3766,7 @@ msgstr "Показати ім'я теки"
|
|||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8
|
||||
msgid "Path Chooser Type"
|
||||
msgstr ""
|
||||
msgstr "Тип вибору шляху"
|
||||
|
||||
#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9
|
||||
msgid "Enable autocomplete"
|
||||
|
@ -3917,7 +3917,7 @@ msgstr "Додати хеш даних"
|
|||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4
|
||||
msgid "From Infohash"
|
||||
msgstr ""
|
||||
msgstr "З хешу"
|
||||
|
||||
#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5
|
||||
msgid "Infohash:"
|
||||
|
@ -4021,12 +4021,12 @@ msgstr "Рейтинг роздачі:"
|
|||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10
|
||||
msgid "ETA Time:"
|
||||
msgstr ""
|
||||
msgstr "Строк завантаження:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11
|
||||
#: deluge/ui/web/render/tab_status.html:13
|
||||
msgid "Last Transfer:"
|
||||
msgstr ""
|
||||
msgstr "Остання передача:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12
|
||||
#: deluge/ui/web/render/tab_status.html:23
|
||||
|
@ -4036,7 +4036,7 @@ msgstr "Час активности:"
|
|||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13
|
||||
#: deluge/ui/web/render/tab_status.html:20
|
||||
msgid "Complete Seen:"
|
||||
msgstr ""
|
||||
msgstr "Завершені:"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14
|
||||
#: deluge/ui/web/render/tab_status.html:24
|
||||
|
@ -4108,7 +4108,7 @@ msgstr "Зупинити роздачу при коефіцієнті:"
|
|||
#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:13
|
||||
#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:233
|
||||
msgid "Remove at ratio"
|
||||
msgstr "Вилучити при коефіцієнті"
|
||||
msgstr "Вилучити при рейтингу"
|
||||
|
||||
#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44
|
||||
msgid "Bandwidth Limits"
|
||||
|
@ -4450,7 +4450,7 @@ msgstr "Межа _слотів роздачі"
|
|||
|
||||
#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5
|
||||
msgid "Stop seed at _ratio"
|
||||
msgstr ""
|
||||
msgstr "Зупинити при спів_відношенні"
|
||||
|
||||
#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6
|
||||
msgid "_Auto Managed"
|
||||
|
@ -4458,7 +4458,7 @@ msgstr "Автоматичне керування"
|
|||
|
||||
#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7
|
||||
msgid "_Super Seeding"
|
||||
msgstr ""
|
||||
msgstr "_Супер-сід"
|
||||
|
||||
#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8
|
||||
msgid "_Change Ownership"
|
||||
|
@ -4657,7 +4657,7 @@ msgstr "Встановлюване значення"
|
|||
#: deluge/ui/console/cmdline/commands/manage.py:53
|
||||
#: deluge/ui/console/cmdline/commands/config.py:98
|
||||
msgid "one or more keys separated by space"
|
||||
msgstr ""
|
||||
msgstr "один або кілька ключів, розділених пробілами"
|
||||
|
||||
#: deluge/ui/console/cmdline/commands/rm.py:33
|
||||
msgid "Also removes the torrent data"
|
||||
|
@ -4681,15 +4681,19 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/console/cmdline/commands/resume.py:22
|
||||
msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]"
|
||||
msgstr ""
|
||||
msgstr "Використання: відновити [ * | <torrent-id> [<torrent-id> ...] ]"
|
||||
|
||||
#: deluge/ui/console/cmdline/commands/resume.py:29
|
||||
msgid "One or more torrent ids. Use \"*\" to resume all torrents"
|
||||
msgstr ""
|
||||
"Один або кілька ідентифікаторів торрентів. Для відновлення всіх торрентів "
|
||||
"використовуйте \"*\""
|
||||
|
||||
#: deluge/ui/console/cmdline/commands/pause.py:29
|
||||
msgid "One or more torrent ids. Use \"*\" to pause all torrents"
|
||||
msgstr ""
|
||||
"Один або кілька ідентифікаторів торрентів. Використовуйте \"*\" для "
|
||||
"призупинення всіх торрентів"
|
||||
|
||||
#: deluge/ui/console/cmdline/commands/add.py:38
|
||||
msgid "Download folder for torrent"
|
||||
|
@ -4760,7 +4764,7 @@ msgstr "Шлях для переміщення торентів"
|
|||
|
||||
#: deluge/ui/console/cmdline/commands/debug.py:26
|
||||
msgid "The new state"
|
||||
msgstr ""
|
||||
msgstr "Новий стан"
|
||||
|
||||
#: deluge/ui/console/cmdline/commands/help.py:29
|
||||
msgid "One or more commands"
|
||||
|
@ -4861,10 +4865,12 @@ msgstr ""
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:216
|
||||
msgid "Third tab lists all remaining torrents in command line mode"
|
||||
msgstr ""
|
||||
"На третій вкладці перераховані всі торренти, що залишилися, у режимі "
|
||||
"командного рядка"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:221
|
||||
msgid "Torrents per tab press"
|
||||
msgstr ""
|
||||
msgstr "Торренти за натисненням вкладки"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:234
|
||||
#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18
|
||||
|
@ -4939,7 +4945,7 @@ msgstr "Вихідні"
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:413
|
||||
#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:38
|
||||
msgid "Global Bandwidth Usage"
|
||||
msgstr ""
|
||||
msgstr "Глобальне використання пропускної здатності"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:416
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:469
|
||||
|
@ -4977,7 +4983,7 @@ msgstr "Обмежувати швидкість із урахуванням ви
|
|||
#: deluge/ui/console/modes/preferences/preference_panes.py:466
|
||||
#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:148
|
||||
msgid "Per Torrent Bandwidth Usage"
|
||||
msgstr ""
|
||||
msgstr "Налаштування швидкості торенту"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:513
|
||||
msgid "Yes, please send anonymous statistics."
|
||||
|
@ -4997,11 +5003,11 @@ msgstr "Загалом"
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:593
|
||||
msgid "Share Ratio"
|
||||
msgstr "Коефіцієнт обміну"
|
||||
msgstr "Рейтинг"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:601
|
||||
msgid "Time Ratio"
|
||||
msgstr ""
|
||||
msgstr "Співвідношення часу"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:609
|
||||
msgid "Time (m)"
|
||||
|
@ -5009,7 +5015,7 @@ msgstr "Час (хв)"
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:633
|
||||
msgid "Remove torrent (Unchecked pauses torrent)"
|
||||
msgstr ""
|
||||
msgstr "Видалити торент (Не позначені призупиняют торент)"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:646
|
||||
msgid "Proxy Settings"
|
||||
|
@ -5037,7 +5043,7 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:712
|
||||
msgid "Blocks Written"
|
||||
msgstr ""
|
||||
msgstr "Записано блоків"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:716
|
||||
msgid "Writes"
|
||||
|
@ -5049,11 +5055,11 @@ msgstr ""
|
|||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:725
|
||||
msgid "Blocks Read"
|
||||
msgstr ""
|
||||
msgstr "Зчитано блоків"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:729
|
||||
msgid "Blocks Read hit"
|
||||
msgstr ""
|
||||
msgstr "Зчитано блоків з кешу"
|
||||
|
||||
#: deluge/ui/console/modes/preferences/preference_panes.py:732
|
||||
msgid "Reads"
|
||||
|
@ -5245,6 +5251,8 @@ msgid ""
|
|||
"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory "
|
||||
"cannot be the same!"
|
||||
msgstr ""
|
||||
"\"Тека для стеження\" і тека \"Копіювати .torrent файли до\" не можуть бути "
|
||||
"однаковими!"
|
||||
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466
|
||||
|
@ -5334,6 +5342,9 @@ msgid ""
|
|||
"the .torrent will copied to the chosen directory\n"
|
||||
"and deleted from the watch folder."
|
||||
msgstr ""
|
||||
"Після додавання торрента,\n"
|
||||
".torrent буде скопійовано до вибраної теки\n"
|
||||
"і видалено з теки для стеження."
|
||||
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20
|
||||
msgid ""
|
||||
|
@ -5361,7 +5372,7 @@ msgstr "<b>Тека для завантаження</b>"
|
|||
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26
|
||||
msgid "Set move completed folder"
|
||||
msgstr ""
|
||||
msgstr "Вкажіть теку для переміщення завершених"
|
||||
|
||||
#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27
|
||||
msgid "<b>Move Completed</b>"
|
||||
|
@ -5628,7 +5639,7 @@ msgstr "Спливні вікна вимкнено"
|
|||
|
||||
#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177
|
||||
msgid "libnotify is not installed"
|
||||
msgstr ""
|
||||
msgstr "libnotify не встановлено"
|
||||
|
||||
#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185
|
||||
msgid "Failed to popup notification"
|
||||
|
@ -6291,7 +6302,7 @@ msgstr "Файл"
|
|||
|
||||
#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149
|
||||
msgid "Infohash"
|
||||
msgstr ""
|
||||
msgstr "Хеш-сума"
|
||||
|
||||
#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260
|
||||
msgid "Uploading your torrent..."
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: deluge\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2019-11-12 14:55+0000\n"
|
||||
"PO-Revision-Date: 2019-12-06 05:38+0000\n"
|
||||
"PO-Revision-Date: 2022-12-28 05:35+0000\n"
|
||||
"Last-Translator: 玉堂白鹤 <yjwork@qq.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
"Language: zh_CN\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
|
@ -132,18 +132,18 @@ msgstr "设置日志级别(无、错误、警告、信息、调试)"
|
|||
msgid ""
|
||||
"Enable logfile rotation, with optional maximum logfile size, default: "
|
||||
"%(const)s (Logfile rotation count is 5)"
|
||||
msgstr ""
|
||||
msgstr "启用日志文件循环,使用可选的最大日志文件大小,默认值:%(const)s (日志文件循环计数为 5)"
|
||||
|
||||
#: deluge/argparserbase.py:223
|
||||
msgid "Quieten logging output (Same as `--loglevel none`)"
|
||||
msgstr ""
|
||||
msgstr "静态日志记录输出(与“--loglevel none”相同)"
|
||||
|
||||
#: deluge/argparserbase.py:231
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is "
|
||||
"specified"
|
||||
msgstr ""
|
||||
msgstr "使用 cProfile 的配置文件 %(prog)s 。除非指定了文件名,否则输出到标准输出"
|
||||
|
||||
#: deluge/argparserbase.py:351
|
||||
msgid "Process Control Options"
|
||||
|
@ -151,7 +151,7 @@ msgstr "进程控制选项"
|
|||
|
||||
#: deluge/argparserbase.py:357
|
||||
msgid "Pidfile to store the process id"
|
||||
msgstr ""
|
||||
msgstr "用于存储进程 id 的 Pidfile"
|
||||
|
||||
#: deluge/argparserbase.py:365
|
||||
msgid "Do not daemonize (fork) this process"
|
||||
|
@ -2421,7 +2421,7 @@ msgstr " 种子已加入队列"
|
|||
|
||||
#: deluge/ui/gtk3/torrentview.py:421
|
||||
msgid "Torrent is shared between other Deluge users or not."
|
||||
msgstr ""
|
||||
msgstr "Torrent 是否在其他 Deluge 用户之间共享。"
|
||||
|
||||
#: deluge/ui/gtk3/removetorrentdialog.py:67
|
||||
msgid "Remove the selected torrents?"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
msgid "B"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-09-10 18:01+0000\n"
|
||||
"X-Generator: Launchpad (build aca2013fd8cd2fea408d75f89f9bc012fbab307d)\n"
|
||||
"X-Launchpad-Export-Date: 2023-11-06 19:12+0000\n"
|
||||
"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n"
|
||||
"Language: zh_TW\n"
|
||||
|
||||
#: deluge/common.py:411
|
||||
|
|
|
@ -10,10 +10,13 @@
|
|||
# See LICENSE for more details.
|
||||
#
|
||||
|
||||
import copy
|
||||
import logging
|
||||
import os.path
|
||||
import time
|
||||
from enum import Enum
|
||||
from hashlib import sha1 as sha
|
||||
from hashlib import sha256
|
||||
|
||||
import deluge.component as component
|
||||
from deluge.bencode import bencode
|
||||
|
@ -41,6 +44,35 @@ def dummy(*v):
|
|||
pass
|
||||
|
||||
|
||||
class TorrentFormat(str, Enum):
|
||||
V1 = 'v1'
|
||||
V2 = 'v2'
|
||||
HYBRID = 'hybrid'
|
||||
|
||||
@classmethod
|
||||
def _missing_(cls, value):
|
||||
if not value:
|
||||
return None
|
||||
|
||||
value = value.lower()
|
||||
for member in cls:
|
||||
if member.value == value:
|
||||
return member
|
||||
|
||||
def to_lt_flag(self):
|
||||
if self.value == 'v1':
|
||||
return 64
|
||||
if self.value == 'v2':
|
||||
return 32
|
||||
return 0
|
||||
|
||||
def includes_v1(self):
|
||||
return self == self.__class__.V1 or self == self.__class__.HYBRID
|
||||
|
||||
def includes_v2(self):
|
||||
return self == self.__class__.V2 or self == self.__class__.HYBRID
|
||||
|
||||
|
||||
class RemoteFileProgress:
|
||||
def __init__(self, session_id):
|
||||
self.session_id = session_id
|
||||
|
@ -51,7 +83,7 @@ def __call__(self, piece_count, num_pieces):
|
|||
)
|
||||
|
||||
|
||||
def make_meta_file(
|
||||
def make_meta_file_content(
|
||||
path,
|
||||
url,
|
||||
piece_length,
|
||||
|
@ -60,24 +92,16 @@ def make_meta_file(
|
|||
comment=None,
|
||||
safe=None,
|
||||
content_type=None,
|
||||
target=None,
|
||||
webseeds=None,
|
||||
name=None,
|
||||
private=False,
|
||||
created_by=None,
|
||||
trackers=None,
|
||||
torrent_format=TorrentFormat.V1,
|
||||
):
|
||||
data = {'creation date': int(gmtime())}
|
||||
if url:
|
||||
data['announce'] = url.strip()
|
||||
a, b = os.path.split(path)
|
||||
if not target:
|
||||
if b == '':
|
||||
f = a + '.torrent'
|
||||
else:
|
||||
f = os.path.join(a, b + '.torrent')
|
||||
else:
|
||||
f = target
|
||||
|
||||
if progress is None:
|
||||
progress = dummy
|
||||
|
@ -89,10 +113,20 @@ def make_meta_file(
|
|||
if session_id:
|
||||
progress = RemoteFileProgress(session_id)
|
||||
|
||||
info = makeinfo(path, piece_length, progress, name, content_type, private)
|
||||
info, piece_layers = makeinfo(
|
||||
path,
|
||||
piece_length,
|
||||
progress,
|
||||
name,
|
||||
content_type,
|
||||
private,
|
||||
torrent_format,
|
||||
)
|
||||
|
||||
# check_info(info)
|
||||
data['info'] = info
|
||||
if piece_layers is not None:
|
||||
data['piece layers'] = piece_layers
|
||||
if title:
|
||||
data['title'] = title.encode('utf8')
|
||||
if comment:
|
||||
|
@ -121,8 +155,55 @@ def make_meta_file(
|
|||
data['announce-list'] = trackers
|
||||
|
||||
data['encoding'] = 'UTF-8'
|
||||
with open(f, 'wb') as file_:
|
||||
file_.write(bencode(utf8_encode_structure(data)))
|
||||
return bencode(utf8_encode_structure(data))
|
||||
|
||||
|
||||
def default_meta_file_path(content_path):
|
||||
a, b = os.path.split(content_path)
|
||||
if b == '':
|
||||
f = a + '.torrent'
|
||||
else:
|
||||
f = os.path.join(a, b + '.torrent')
|
||||
return f
|
||||
|
||||
|
||||
def make_meta_file(
|
||||
path,
|
||||
url,
|
||||
piece_length,
|
||||
progress=None,
|
||||
title=None,
|
||||
comment=None,
|
||||
safe=None,
|
||||
content_type=None,
|
||||
target=None,
|
||||
webseeds=None,
|
||||
name=None,
|
||||
private=False,
|
||||
created_by=None,
|
||||
trackers=None,
|
||||
):
|
||||
if not target:
|
||||
target = default_meta_file_path(path)
|
||||
|
||||
file_content = make_meta_file_content(
|
||||
path,
|
||||
url,
|
||||
piece_length,
|
||||
progress=progress,
|
||||
title=title,
|
||||
comment=comment,
|
||||
safe=safe,
|
||||
content_type=content_type,
|
||||
webseeds=webseeds,
|
||||
name=name,
|
||||
private=private,
|
||||
created_by=created_by,
|
||||
trackers=trackers,
|
||||
)
|
||||
|
||||
with open(target, 'wb') as file_:
|
||||
file_.write(file_content)
|
||||
|
||||
|
||||
def calcsize(path):
|
||||
|
@ -132,101 +213,237 @@ def calcsize(path):
|
|||
return total
|
||||
|
||||
|
||||
def makeinfo(path, piece_length, progress, name=None, content_type=None, private=False):
|
||||
# HEREDAVE. If path is directory, how do we assign content type?
|
||||
path = os.path.abspath(path)
|
||||
piece_count = 0
|
||||
if os.path.isdir(path):
|
||||
subs = sorted(subfiles(path))
|
||||
pieces = []
|
||||
sh = sha()
|
||||
done = 0
|
||||
fs = []
|
||||
totalsize = 0.0
|
||||
totalhashed = 0
|
||||
for p, f in subs:
|
||||
totalsize += os.path.getsize(f)
|
||||
if totalsize >= piece_length:
|
||||
def _next_pow2(num):
|
||||
import math
|
||||
|
||||
num_pieces = math.ceil(totalsize / piece_length)
|
||||
else:
|
||||
num_pieces = 1
|
||||
if not num:
|
||||
return 1
|
||||
return 2 ** math.ceil(math.log2(num))
|
||||
|
||||
for p, f in subs:
|
||||
pos = 0
|
||||
size = os.path.getsize(f)
|
||||
p2 = [n.encode('utf8') for n in p]
|
||||
if content_type:
|
||||
fs.append(
|
||||
{'length': size, 'path': p2, 'content_type': content_type}
|
||||
) # HEREDAVE. bad for batch!
|
||||
else:
|
||||
fs.append({'length': size, 'path': p2})
|
||||
with open(f, 'rb') as file_:
|
||||
while pos < size:
|
||||
a = min(size - pos, piece_length - done)
|
||||
sh.update(file_.read(a))
|
||||
done += a
|
||||
pos += a
|
||||
totalhashed += a
|
||||
|
||||
if done == piece_length:
|
||||
pieces.append(sh.digest())
|
||||
piece_count += 1
|
||||
done = 0
|
||||
sh = sha()
|
||||
progress(piece_count, num_pieces)
|
||||
if done > 0:
|
||||
pieces.append(sh.digest())
|
||||
piece_count += 1
|
||||
progress(piece_count, num_pieces)
|
||||
def _sha256_merkle_root(leafs, nb_leafs, padding, in_place=True) -> bytes:
|
||||
"""
|
||||
Build the root of the merkle hash tree from the (possibly incomplete) leafs layer.
|
||||
If len(leafs) < nb_leafs, it will be padded with the padding repeated as many times
|
||||
as needed to have nb_leafs in total.
|
||||
"""
|
||||
if not in_place:
|
||||
leafs = copy.copy(leafs)
|
||||
|
||||
while nb_leafs > 1:
|
||||
nb_leafs = nb_leafs // 2
|
||||
for i in range(nb_leafs):
|
||||
node1 = leafs[2 * i] if 2 * i < len(leafs) else padding
|
||||
node2 = leafs[2 * i + 1] if 2 * i + 1 < len(leafs) else padding
|
||||
h = sha256(node1)
|
||||
h.update(node2)
|
||||
if i < len(leafs):
|
||||
leafs[i] = h.digest()
|
||||
else:
|
||||
leafs.append(h.digest())
|
||||
return leafs[0] if leafs else padding
|
||||
|
||||
|
||||
def _sha256_buffer_blocks(buffer, block_len):
|
||||
import math
|
||||
|
||||
nb_blocks = math.ceil(len(buffer) / block_len)
|
||||
blocks = [
|
||||
sha256(buffer[i * block_len : (i + 1) * block_len]).digest()
|
||||
for i in range(nb_blocks)
|
||||
]
|
||||
return blocks
|
||||
|
||||
|
||||
def makeinfo_lt(
|
||||
path, piece_length, name=None, private=False, torrent_format=TorrentFormat.V1
|
||||
):
|
||||
"""
|
||||
Make info using via the libtorrent library.
|
||||
"""
|
||||
from deluge._libtorrent import lt
|
||||
|
||||
if not name:
|
||||
name = os.path.split(path)[1]
|
||||
|
||||
return {
|
||||
'pieces': b''.join(pieces),
|
||||
'piece length': piece_length,
|
||||
'files': fs,
|
||||
'name': name.encode('utf8'),
|
||||
'private': private,
|
||||
}
|
||||
fs = lt.file_storage()
|
||||
if os.path.isfile(path):
|
||||
lt.add_files(fs, path)
|
||||
else:
|
||||
size = os.path.getsize(path)
|
||||
if size >= piece_length:
|
||||
num_pieces = size // piece_length
|
||||
else:
|
||||
num_pieces = 1
|
||||
for p, f in subfiles(path):
|
||||
fs.add_file(os.path.join(name, *p), os.path.getsize(f))
|
||||
torrent = lt.create_torrent(
|
||||
fs, piece_size=piece_length, flags=torrent_format.to_lt_flag()
|
||||
)
|
||||
|
||||
lt.set_piece_hashes(torrent, os.path.dirname(path))
|
||||
torrent.set_priv(private)
|
||||
|
||||
t = torrent.generate()
|
||||
info = t[b'info']
|
||||
pieces_layers = t.get(b'piece layers', None)
|
||||
|
||||
return info, pieces_layers
|
||||
|
||||
|
||||
def makeinfo(
|
||||
path,
|
||||
piece_length,
|
||||
progress,
|
||||
name=None,
|
||||
content_type=None,
|
||||
private=False,
|
||||
torrent_format=TorrentFormat.V1,
|
||||
):
|
||||
# HEREDAVE. If path is directory, how do we assign content type?
|
||||
|
||||
v2_block_len = 2**14 # 16 KiB
|
||||
v2_blocks_per_piece = 1
|
||||
v2_block_padding = b''
|
||||
v2_piece_padding = b''
|
||||
if torrent_format.includes_v2():
|
||||
if _next_pow2(piece_length) != piece_length or piece_length < v2_block_len:
|
||||
raise ValueError(
|
||||
'Bittorrent v2 piece size must be a power of 2; and bigger than 16 KiB'
|
||||
)
|
||||
|
||||
v2_blocks_per_piece = piece_length // v2_block_len
|
||||
v2_block_padding = bytes(32) # 32 = size of sha256 in bytes
|
||||
v2_piece_padding = _sha256_merkle_root(
|
||||
[], nb_leafs=v2_blocks_per_piece, padding=v2_block_padding
|
||||
)
|
||||
|
||||
path = os.path.abspath(path)
|
||||
files = []
|
||||
pieces = []
|
||||
p = 0
|
||||
with open(path, 'rb') as _file:
|
||||
while p < size:
|
||||
x = _file.read(min(piece_length, size - p))
|
||||
pieces.append(sha(x).digest())
|
||||
piece_count += 1
|
||||
p += piece_length
|
||||
if p > size:
|
||||
p = size
|
||||
progress(piece_count, num_pieces)
|
||||
name = os.path.split(path)[1].encode('utf8')
|
||||
if content_type is not None:
|
||||
return {
|
||||
'pieces': b''.join(pieces),
|
||||
'piece length': piece_length,
|
||||
'length': size,
|
||||
'name': name,
|
||||
'content_type': content_type,
|
||||
'private': private,
|
||||
file_tree = {}
|
||||
piece_layers = {}
|
||||
if os.path.isdir(path):
|
||||
if not name:
|
||||
name = os.path.split(path)[1]
|
||||
subs = subfiles(path)
|
||||
if torrent_format.includes_v2():
|
||||
subs = sorted(subs)
|
||||
length = None
|
||||
totalsize = 0.0
|
||||
for p, f in subs:
|
||||
totalsize += os.path.getsize(f)
|
||||
else:
|
||||
name = os.path.split(path)[1]
|
||||
subs = [([name], path)]
|
||||
length = os.path.getsize(path)
|
||||
totalsize = length
|
||||
is_multi_file = len(subs) > 1
|
||||
sh = sha()
|
||||
done = 0
|
||||
totalhashed = 0
|
||||
|
||||
next_progress_event = piece_length
|
||||
for p, f in subs:
|
||||
file_pieces_v2 = []
|
||||
pos = 0
|
||||
size = os.path.getsize(f)
|
||||
p2 = [n.encode('utf8') for n in p]
|
||||
if content_type:
|
||||
files.append(
|
||||
{b'length': size, b'path': p2, b'content_type': content_type}
|
||||
) # HEREDAVE. bad for batch!
|
||||
else:
|
||||
files.append({b'length': size, b'path': p2})
|
||||
with open(f, 'rb') as file_:
|
||||
while pos < size:
|
||||
to_read = min(size - pos, piece_length)
|
||||
buffer = memoryview(file_.read(to_read))
|
||||
pos += to_read
|
||||
|
||||
if torrent_format.includes_v1():
|
||||
a = piece_length - done
|
||||
for sub_buffer in (buffer[:a], buffer[a:]):
|
||||
if sub_buffer:
|
||||
sh.update(sub_buffer)
|
||||
done += len(sub_buffer)
|
||||
|
||||
if done == piece_length:
|
||||
pieces.append(sh.digest())
|
||||
done = 0
|
||||
sh = sha()
|
||||
if torrent_format.includes_v2():
|
||||
block_hashes = _sha256_buffer_blocks(buffer, v2_block_len)
|
||||
num_leafs = v2_blocks_per_piece
|
||||
if size <= piece_length:
|
||||
# The special case when the file is smaller than a piece: only pad till the next power of 2
|
||||
num_leafs = _next_pow2(len(block_hashes))
|
||||
root = _sha256_merkle_root(
|
||||
block_hashes, num_leafs, v2_block_padding, in_place=True
|
||||
)
|
||||
file_pieces_v2.append(root)
|
||||
|
||||
totalhashed += to_read
|
||||
if totalhashed >= next_progress_event:
|
||||
next_progress_event = totalhashed + piece_length
|
||||
progress(totalhashed, totalsize)
|
||||
|
||||
if torrent_format == TorrentFormat.HYBRID and is_multi_file and done > 0:
|
||||
# Add padding file to force piece-alignment
|
||||
padding = piece_length - done
|
||||
sh.update(bytes(padding))
|
||||
files.append(
|
||||
{
|
||||
b'length': padding,
|
||||
b'attr': b'p',
|
||||
b'path': [b'.pad', str(padding).encode()],
|
||||
}
|
||||
return {
|
||||
'pieces': b''.join(pieces),
|
||||
'piece length': piece_length,
|
||||
'length': size,
|
||||
'name': name,
|
||||
'private': private,
|
||||
)
|
||||
pieces.append(sh.digest())
|
||||
done = 0
|
||||
sh = sha()
|
||||
|
||||
if torrent_format.includes_v2():
|
||||
# add file to the `file tree` and, if needed, to the `piece layers` structures
|
||||
pieces_root = _sha256_merkle_root(
|
||||
file_pieces_v2,
|
||||
_next_pow2(len(file_pieces_v2)),
|
||||
v2_piece_padding,
|
||||
in_place=False,
|
||||
)
|
||||
dst_directory = file_tree
|
||||
for directory in p2[:-1]:
|
||||
dst_directory = dst_directory.setdefault(directory, {})
|
||||
dst_directory[p2[-1]] = {
|
||||
b'': {
|
||||
b'length': size,
|
||||
b'pieces root': pieces_root,
|
||||
}
|
||||
}
|
||||
if len(file_pieces_v2) > 1:
|
||||
piece_layers[pieces_root] = b''.join(file_pieces_v2)
|
||||
|
||||
if done > 0:
|
||||
pieces.append(sh.digest())
|
||||
progress(totalsize, totalsize)
|
||||
|
||||
info = {
|
||||
b'piece length': piece_length,
|
||||
b'name': name.encode('utf8'),
|
||||
}
|
||||
if private:
|
||||
info[b'private'] = 1
|
||||
if content_type:
|
||||
info[b'content_type'] = content_type
|
||||
if torrent_format.includes_v1():
|
||||
info[b'pieces'] = b''.join(pieces)
|
||||
if is_multi_file:
|
||||
info[b'files'] = files
|
||||
else:
|
||||
info[b'length'] = length
|
||||
if torrent_format.includes_v2():
|
||||
info.update(
|
||||
{
|
||||
b'meta version': 2,
|
||||
b'file tree': file_tree,
|
||||
}
|
||||
)
|
||||
return info, piece_layers if torrent_format.includes_v2() else None
|
||||
|
||||
|
||||
def subfiles(d):
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
@ -9,10 +9,13 @@
|
|||
# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
|
||||
# the additional special exception to link portions of this program with the OpenSSL library.
|
||||
# See LICENSE for more details.
|
||||
#
|
||||
|
||||
import logging
|
||||
|
||||
import gi # isort:skip (Required before Gtk import).
|
||||
|
||||
gi.require_version('Gtk', '3.0')
|
||||
|
||||
from gi.repository import Gtk
|
||||
from gi.repository.Gdk import RGBA
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ def test_session_totals(self):
|
|||
|
||||
@pytest.mark.gtkui
|
||||
@defer.inlineCallbacks
|
||||
def test_write(self):
|
||||
def test_write(self, tmp_path):
|
||||
"""
|
||||
writing to a file-like object; need this for webui.
|
||||
|
||||
|
@ -102,5 +102,5 @@ def write(self, data):
|
|||
file_like = FakeFile()
|
||||
surface.write_to_png(file_like)
|
||||
data = b''.join(file_like.data)
|
||||
with open('file_like.png', 'wb') as _file:
|
||||
with open(tmp_path / 'file_like.png', 'wb') as _file:
|
||||
_file.write(data)
|
||||
|
|
|
@ -1,71 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# A script to convert the Deluge svg icons to png.
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
data_dir="$DIR/../ui/data"
|
||||
zopfli_iter="--iterations=100"
|
||||
zopflipng_bin="zopflipng --filters=01234mepb --lossy_8bit --lossy_transparent -y"
|
||||
|
||||
# Create deluge png icon pack for all sizes.
|
||||
for size in 16 22 24 32 36 48 64 72 96 128 192 256 512; do
|
||||
mkdir -p $data_dir/icons/hicolor/${size}x${size}/apps
|
||||
in_svg=$data_dir/pixmaps/deluge.svg
|
||||
out_png=$data_dir/icons/hicolor/${size}x${size}/apps/deluge.png
|
||||
rsvg-convert -w ${size} -h ${size} -o $out_png $in_svg
|
||||
if [ "$size" -gt 128 ]; then
|
||||
zopfli_iter=""
|
||||
fi
|
||||
echo $zopflipng_bin $zopfli_iter
|
||||
eval $zopflipng_bin $zopfli_iter $out_png $out_png
|
||||
done
|
||||
|
||||
# Create deluge-panel png for systray.
|
||||
for size in 16 22 24; do
|
||||
in_png=$data_dir/icons/hicolor/${size}x${size}/apps/deluge.png
|
||||
out_png=$data_dir/icons/hicolor/${size}x${size}/apps/deluge-panel.png
|
||||
cp $in_png $out_png
|
||||
done
|
||||
|
||||
# Create deluge.ico icon from pngs.
|
||||
for size in 16 32 48 64 128 256; do
|
||||
ico_infiles+="$data_dir/icons/hicolor/${size}x${size}/apps/deluge.png "
|
||||
done
|
||||
convert $ico_infiles $data_dir/pixmaps/deluge.ico
|
||||
|
||||
# Copy of deluge.svg to icon theme pack.
|
||||
mkdir -p $data_dir/icons/hicolor/scalable/apps/
|
||||
cp $data_dir/pixmaps/deluge.svg $data_dir/icons/hicolor/scalable/apps/deluge.svg
|
||||
|
||||
# Create 48px deluge.png.
|
||||
cp $data_dir/icons/hicolor/48x48/apps/deluge.png $data_dir/pixmaps/deluge.png
|
||||
|
||||
# Create 16px png from deluge and status svgs.
|
||||
for file in $data_dir/pixmaps/*.svg; do
|
||||
out_png=${file%.*}16.png
|
||||
rsvg-convert -w 16 -h 16 -o $out_png $file
|
||||
eval $zopflipng_bin $out_png $out_png
|
||||
done
|
||||
|
||||
# Copy 16px deluge and status pngs to webui icons folder.
|
||||
for icon in $data_dir/pixmaps/*16.png; do
|
||||
iconname=$(basename $icon)
|
||||
cp $icon $data_dir/../web/icons/${iconname::-6}.png
|
||||
done
|
||||
rm $data_dir/../web/icons/tracker*.png
|
||||
|
||||
for size in 32 192 512; do
|
||||
in_png=$data_dir/icons/hicolor/${size}x${size}/apps/deluge.png
|
||||
out_png=$data_dir/../web/icons/deluge-${size}.png
|
||||
cp $in_png $out_png
|
||||
|
||||
# Create apple and android touch icons with background colour.
|
||||
apple_icon=$data_dir/../web/icons/deluge-apple-180.png
|
||||
rsvg-convert -w 180 -h 180 -b '#599EEE' -o $apple_icon $data_dir/pixmaps/deluge.svg
|
||||
eval $zopflipng_bin $apple_icon $apple_icon
|
||||
|
||||
# Create favicon.ico icon from pngs.
|
||||
for size in 16 32 48; do
|
||||
web_ico_infiles+="$data_dir/icons/hicolor/${size}x${size}/apps/deluge.png "
|
||||
done
|
||||
convert $web_ico_infiles $data_dir/../web/icons/favicon.ico
|
201
deluge/scripts/create_icons.py
Executable file
201
deluge/scripts/create_icons.py
Executable file
|
@ -0,0 +1,201 @@
|
|||
#!/usr/bin/python3
|
||||
#
|
||||
# Create Deluge PNG icons from SVG
|
||||
#
|
||||
# Required image tools:
|
||||
# * rsvg-convert
|
||||
# * convert (ImageMagik)
|
||||
# * oxipng
|
||||
# * pngquant
|
||||
#
|
||||
import shutil
|
||||
import subprocess
|
||||
from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
@dataclass
|
||||
class IconPack:
|
||||
name: str
|
||||
dir: Path
|
||||
icon_sizes: list[int]
|
||||
panel_sizes: list[int]
|
||||
ico_sizes: list[int]
|
||||
pixmaps_dir: Path = field(init=False)
|
||||
theme_dir: Path = field(init=False)
|
||||
theme_svg: Path = field(init=False)
|
||||
theme_pngs: dict[int, Path] = field(init=False)
|
||||
logo_svg: Path = field(init=False)
|
||||
logo_ico: Path = field(init=False)
|
||||
logo_png: Path = field(init=False)
|
||||
|
||||
def __post_init__(self):
|
||||
self.pixmaps_dir = self.dir / 'pixmaps'
|
||||
self.logo_svg = self.pixmaps_dir / f'{self.name}.svg'
|
||||
self.logo_ico = self.pixmaps_dir / f'{self.name}.ico'
|
||||
self.logo_png = self.pixmaps_dir / f'{self.name}.png'
|
||||
|
||||
self.theme_dir = self.dir / 'icons' / 'hicolor'
|
||||
self.theme_svg = self.theme_dir / 'scalable' / 'apps' / f'{self.name}.svg'
|
||||
self.theme_pngs = self.create_theme_pngs_paths(
|
||||
self.name, self.icon_sizes, self.theme_dir
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def create_theme_pngs_paths(name, icon_sizes, out_dir):
|
||||
return {
|
||||
size: out_dir / f'{size}x{size}' / 'apps' / f'{name}.png'
|
||||
for size in icon_sizes
|
||||
}
|
||||
|
||||
|
||||
@dataclass
|
||||
class WebIconPack:
|
||||
name: str
|
||||
dir: Path
|
||||
icon_sizes: list[int]
|
||||
favicon_sizes: list[int]
|
||||
icons_dir: Path = field(init=False)
|
||||
touch: Path = field(init=False)
|
||||
favicon: Path = field(init=False)
|
||||
|
||||
def __post_init__(self):
|
||||
self.icons_dir = self.dir / 'icons'
|
||||
self.touch = self.icons_dir / f'{self.name}-apple-180.png'
|
||||
self.favicon = self.icons_dir / 'favicon.ico'
|
||||
|
||||
|
||||
def convert_svg_to_png(svg_file, png_file, size, background_color=None):
|
||||
rsvg_options = [
|
||||
'-w',
|
||||
str(size),
|
||||
'-h',
|
||||
str(size),
|
||||
'-o',
|
||||
png_file,
|
||||
]
|
||||
rsvg_options + ['-b', {background_color}] if background_color else []
|
||||
|
||||
subprocess.run(['rsvg-convert'] + rsvg_options + [svg_file], check=True)
|
||||
|
||||
|
||||
def compress_png(png_file):
|
||||
subprocess.run(
|
||||
['pngquant', '--quality=70-95', '--ext', '.png', '--force', png_file],
|
||||
check=True,
|
||||
)
|
||||
subprocess.run(['oxipng', png_file], check=True)
|
||||
|
||||
|
||||
def create_panel_icons(icon_pack, sizes):
|
||||
for size in sizes:
|
||||
app_png = icon_pack[size]
|
||||
panel_png = app_png.with_name(f'{app_png.stem}-panel.png')
|
||||
shutil.copyfile(app_png, panel_png)
|
||||
|
||||
|
||||
def create_hicolor_icons(svg_icon, icon_pack):
|
||||
"""Convert SVG icon to hicolor PNG icons."""
|
||||
for size, png_file in icon_pack.items():
|
||||
png_file.parent.mkdir(parents=True, exist_ok=True)
|
||||
convert_svg_to_png(svg_icon, png_file, size)
|
||||
compress_png(png_file)
|
||||
|
||||
|
||||
def create_ico_icon(icon_pack, sizes, ico_file):
|
||||
infiles = [icon_pack[size] for size in sizes]
|
||||
ico_file.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
subprocess.run(['convert', *infiles, ico_file], check=True)
|
||||
|
||||
|
||||
def create_hicolor_svg(src_svg, dest_svg):
|
||||
dest_svg.parent.mkdir(parents=True, exist_ok=True)
|
||||
shutil.copyfile(src_svg, dest_svg)
|
||||
|
||||
|
||||
def create_mini_icons(pixmaps_dir):
|
||||
pixmap_svgs = pixmaps_dir.glob('*.svg')
|
||||
|
||||
for svg_file in pixmap_svgs:
|
||||
png_file = pixmaps_dir / f'{svg_file.stem}16.png'
|
||||
convert_svg_to_png(svg_file, png_file, 16)
|
||||
compress_png(png_file)
|
||||
|
||||
|
||||
def create_logo(deluge_png, pixmap_png):
|
||||
pixmap_png.parent.mkdir(parents=True, exist_ok=True)
|
||||
shutil.copyfile(deluge_png, pixmap_png)
|
||||
|
||||
|
||||
def create_web_status_icons(src_dir: Path, dest_dir: Path):
|
||||
"""Web UI status icons from 16px icons."""
|
||||
pngs_16px = src_dir.glob('*16.png')
|
||||
dest_dir.mkdir(parents=True, exist_ok=True)
|
||||
for path in pngs_16px:
|
||||
if path.stem.startswith('tracker'):
|
||||
continue
|
||||
new_name = path.stem.replace('16', '') + '.png'
|
||||
shutil.copyfile(path, dest_dir / new_name)
|
||||
|
||||
|
||||
def create_touch_icon(svg_file, png_file, size):
|
||||
"""Web icons with background color for Apple or Android"""
|
||||
png_file.parent.mkdir(parents=True, exist_ok=True)
|
||||
convert_svg_to_png(svg_file, png_file, size, background_color='#599EEE')
|
||||
compress_png(png_file)
|
||||
|
||||
|
||||
def create_web_icons(app_pngs, sizes, dest_dir):
|
||||
dest_dir.mkdir(parents=True, exist_ok=True)
|
||||
for size in sizes:
|
||||
app_png = app_pngs[size]
|
||||
web_png = dest_dir / f'{app_png.stem}-{size}.png'
|
||||
shutil.copyfile(app_png, web_png)
|
||||
|
||||
|
||||
def main():
|
||||
data_dir = Path.cwd() / 'deluge' / 'ui' / 'data'
|
||||
if not data_dir.is_dir():
|
||||
exit(f'No path to UI data dir: {data_dir}')
|
||||
|
||||
# Create Deluge UI icons
|
||||
icon_pack_sizes = [16, 22, 24, 32, 36, 48, 64, 72, 96, 128, 192, 256, 512]
|
||||
panel_icon_sizes = [16, 22, 24]
|
||||
ico_icon_sizes = [16, 32, 48, 64, 128, 256]
|
||||
ui_icons = IconPack(
|
||||
name='deluge',
|
||||
dir=data_dir,
|
||||
icon_sizes=icon_pack_sizes,
|
||||
panel_sizes=panel_icon_sizes,
|
||||
ico_sizes=ico_icon_sizes,
|
||||
)
|
||||
|
||||
# Theme icons for GTK
|
||||
create_hicolor_icons(ui_icons.logo_svg, ui_icons.theme_pngs)
|
||||
create_hicolor_svg(ui_icons.logo_svg, ui_icons.theme_svg)
|
||||
create_mini_icons(ui_icons.pixmaps_dir)
|
||||
# Panel icon for systray
|
||||
create_panel_icons(ui_icons.theme_pngs, ui_icons.panel_sizes)
|
||||
|
||||
# Deluge logos
|
||||
create_ico_icon(ui_icons.theme_pngs, ui_icons.ico_sizes, ui_icons.logo_ico)
|
||||
create_logo(ui_icons.theme_pngs[48], ui_icons.logo_png)
|
||||
|
||||
# Web UI Icons
|
||||
web_icon_sizes = [32, 192, 512]
|
||||
favicon_sizes = [16, 32, 48]
|
||||
web_icons = WebIconPack(
|
||||
name='deluge',
|
||||
dir=data_dir / '..' / 'web',
|
||||
icon_sizes=web_icon_sizes,
|
||||
favicon_sizes=favicon_sizes,
|
||||
)
|
||||
create_web_icons(ui_icons.theme_pngs, web_icons.icon_sizes, web_icons.icons_dir)
|
||||
create_web_status_icons(ui_icons.pixmaps_dir, web_icons.icons_dir)
|
||||
create_touch_icon(ui_icons.logo_svg, web_icons.touch, 180)
|
||||
create_ico_icon(ui_icons.theme_pngs, web_icons.favicon_sizes, web_icons.favicon)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
|
@ -3,21 +3,61 @@
|
|||
# the additional special exception to link portions of this program with the OpenSSL library.
|
||||
# See LICENSE for more details.
|
||||
#
|
||||
from dataclasses import dataclass
|
||||
|
||||
import pytest
|
||||
|
||||
import deluge.component as component
|
||||
from deluge.conftest import BaseTestCase
|
||||
from deluge.core.core import Core
|
||||
|
||||
|
||||
class TestAlertManager(BaseTestCase):
|
||||
def set_up(self):
|
||||
class LtSessionMock:
|
||||
def __init__(self):
|
||||
self.alerts = []
|
||||
|
||||
def push_alerts(self, alerts):
|
||||
self.alerts = alerts
|
||||
|
||||
def wait_for_alert(self, timeout):
|
||||
return self.alerts[0] if len(self.alerts) > 0 else None
|
||||
|
||||
def pop_alerts(self):
|
||||
alerts = self.alerts
|
||||
self.alerts = []
|
||||
return alerts
|
||||
|
||||
|
||||
@dataclass
|
||||
class LtAlertMock:
|
||||
type: int
|
||||
name: str
|
||||
message: str
|
||||
|
||||
def message(self):
|
||||
return self.message
|
||||
|
||||
def what(self):
|
||||
return self.name
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_alert1():
|
||||
return LtAlertMock(type=1, name='mock_alert1', message='Alert 1')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_alert2():
|
||||
return LtAlertMock(type=2, name='mock_alert2', message='Alert 2')
|
||||
|
||||
|
||||
class TestAlertManager:
|
||||
@pytest.fixture(autouse=True)
|
||||
def set_up(self, component):
|
||||
self.core = Core()
|
||||
self.core.config.config['lsd'] = False
|
||||
self.am = component.get('AlertManager')
|
||||
return component.start(['AlertManager'])
|
||||
self.am.session = LtSessionMock()
|
||||
|
||||
def tear_down(self):
|
||||
return component.shutdown()
|
||||
component.start(['AlertManager'])
|
||||
|
||||
def test_register_handler(self):
|
||||
def handler(alert):
|
||||
|
@ -28,6 +68,29 @@ def handler(alert):
|
|||
assert self.am.handlers['dummy1'] == [handler]
|
||||
assert self.am.handlers['dummy2'] == [handler]
|
||||
|
||||
async def test_pop_alert(self, mock_callback, mock_alert1, mock_alert2):
|
||||
self.am.register_handler('mock_alert1', mock_callback)
|
||||
|
||||
self.am.session.push_alerts([mock_alert1, mock_alert2])
|
||||
|
||||
await mock_callback.deferred
|
||||
|
||||
mock_callback.assert_called_once_with(mock_alert1)
|
||||
|
||||
async def test_pause_not_pop_alert(
|
||||
self, component, mock_alert1, mock_alert2, mock_callback
|
||||
):
|
||||
await component.pause(['AlertManager'])
|
||||
|
||||
self.am.register_handler('mock_alert1', mock_callback)
|
||||
self.am.session.push_alerts([mock_alert1, mock_alert2])
|
||||
|
||||
await mock_callback.deferred
|
||||
|
||||
mock_callback.assert_not_called()
|
||||
assert not self.am._event.is_set()
|
||||
assert len(self.am.session.alerts) == 2
|
||||
|
||||
def test_deregister_handler(self):
|
||||
def handler(alert):
|
||||
...
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
from twisted.internet import defer
|
||||
|
||||
from deluge import error
|
||||
from deluge.common import AUTH_LEVEL_NORMAL, get_localhost_auth
|
||||
from deluge.common import AUTH_LEVEL_NORMAL, get_localhost_auth, get_version
|
||||
from deluge.core.authmanager import AUTH_LEVEL_ADMIN
|
||||
from deluge.ui.client import Client, DaemonSSLProxy, client
|
||||
|
||||
|
@ -170,3 +170,23 @@ def on_failure(failure):
|
|||
|
||||
d.addCallbacks(self.fail, on_failure)
|
||||
return d
|
||||
|
||||
@pytest_twisted.inlineCallbacks
|
||||
def test_daemon_version(self):
|
||||
username, password = get_localhost_auth()
|
||||
yield client.connect(
|
||||
'localhost', self.listen_port, username=username, password=password
|
||||
)
|
||||
|
||||
assert client.daemon_version == get_version()
|
||||
|
||||
@pytest_twisted.inlineCallbacks
|
||||
def test_daemon_version_check_min(self):
|
||||
username, password = get_localhost_auth()
|
||||
yield client.connect(
|
||||
'localhost', self.listen_port, username=username, password=password
|
||||
)
|
||||
|
||||
assert client.daemon_version_check_min(get_version())
|
||||
assert not client.daemon_version_check_min(f'{get_version()}1')
|
||||
assert client.daemon_version_check_min('0.1.0')
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# the additional special exception to link portions of this program with the OpenSSL library.
|
||||
# See LICENSE for more details.
|
||||
#
|
||||
|
||||
import base64
|
||||
import os
|
||||
from base64 import b64encode
|
||||
from hashlib import sha1 as sha
|
||||
|
@ -483,3 +483,29 @@ def test__create_peer_id(self):
|
|||
assert self.core._create_peer_id('2.0.1rc1') == '-DE201r-'
|
||||
assert self.core._create_peer_id('2.11.0b2') == '-DE2B0b-'
|
||||
assert self.core._create_peer_id('2.4.12b2.dev3') == '-DE24CD-'
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'path',
|
||||
[
|
||||
common.get_test_data_file('deluge.png'),
|
||||
os.path.dirname(common.get_test_data_file('deluge.png')),
|
||||
],
|
||||
)
|
||||
@pytest.mark.parametrize('piece_length', [2**14, 2**16])
|
||||
@pytest_twisted.inlineCallbacks
|
||||
def test_create_torrent(self, path, tmp_path, piece_length):
|
||||
target = tmp_path / 'test.torrent'
|
||||
|
||||
filename, filedump = yield self.core.create_torrent(
|
||||
path=path,
|
||||
tracker=None,
|
||||
piece_length=piece_length,
|
||||
target=target,
|
||||
add_to_session=False,
|
||||
)
|
||||
filecontent = base64.b64decode(filedump)
|
||||
|
||||
with open(target, 'rb') as f:
|
||||
assert f.read() == filecontent
|
||||
|
||||
lt.torrent_info(filecontent)
|
||||
|
|
|
@ -7,7 +7,13 @@
|
|||
import os
|
||||
import tempfile
|
||||
|
||||
import pytest
|
||||
|
||||
from deluge import metafile
|
||||
from deluge._libtorrent import LT_VERSION
|
||||
from deluge.common import VersionSplit
|
||||
|
||||
from . import common
|
||||
|
||||
|
||||
def check_torrent(filename):
|
||||
|
@ -55,3 +61,52 @@ def test_save_singlefile(self):
|
|||
metafile.make_meta_file(tmp_data, '', 32768, target=tmp_torrent)
|
||||
|
||||
check_torrent(tmp_torrent)
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'path',
|
||||
[
|
||||
common.get_test_data_file('deluge.png'),
|
||||
common.get_test_data_file('unicode_filenames.torrent'),
|
||||
os.path.dirname(common.get_test_data_file('deluge.png')),
|
||||
],
|
||||
)
|
||||
@pytest.mark.parametrize(
|
||||
'torrent_format',
|
||||
[
|
||||
metafile.TorrentFormat.V1,
|
||||
metafile.TorrentFormat.V2,
|
||||
metafile.TorrentFormat.HYBRID,
|
||||
],
|
||||
)
|
||||
@pytest.mark.parametrize('piece_length', [2**14, 2**15, 2**16])
|
||||
@pytest.mark.parametrize('private', [True, False])
|
||||
def test_create_info(self, path, torrent_format, piece_length, private):
|
||||
our_info, our_piece_layers = metafile.makeinfo(
|
||||
path,
|
||||
piece_length,
|
||||
metafile.dummy,
|
||||
private=private,
|
||||
torrent_format=torrent_format,
|
||||
)
|
||||
lt_info, lt_piece_layers = metafile.makeinfo_lt(
|
||||
path,
|
||||
piece_length,
|
||||
private=private,
|
||||
torrent_format=torrent_format,
|
||||
)
|
||||
|
||||
if (
|
||||
torrent_format == metafile.TorrentFormat.HYBRID
|
||||
and os.path.isdir(path)
|
||||
and VersionSplit(LT_VERSION) <= VersionSplit('2.0.7.0')
|
||||
):
|
||||
# Libtorrent didn't correctly follow the standard until version 2.0.7 included
|
||||
# https://github.com/arvidn/libtorrent/commit/74d82a0cd7c2e9e3c4294901d7eb65e247050df4
|
||||
# If last file is a padding, ignore that file and the last piece.
|
||||
if our_info[b'files'][-1][b'path'][0] == b'.pad':
|
||||
our_info[b'files'] = our_info[b'files'][:-1]
|
||||
our_info[b'pieces'] = our_info[b'pieces'][:-32]
|
||||
lt_info[b'pieces'] = lt_info[b'pieces'][:-32]
|
||||
|
||||
assert our_info == lt_info
|
||||
assert our_piece_layers == lt_piece_layers
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
from twisted.internet.protocol import ClientFactory
|
||||
|
||||
from deluge import error
|
||||
from deluge.common import get_localhost_auth, get_version
|
||||
from deluge.common import VersionSplit, get_localhost_auth, get_version
|
||||
from deluge.decorators import deprecated
|
||||
from deluge.transfer import DelugeTransferProtocol
|
||||
|
||||
|
@ -227,6 +227,7 @@ def clientConnectionLost(self, connector, reason): # NOQA: N802
|
|||
self.daemon.host = None
|
||||
self.daemon.port = None
|
||||
self.daemon.username = None
|
||||
self.daemon.daemon_version = None
|
||||
self.daemon.connected = False
|
||||
|
||||
if (
|
||||
|
@ -260,6 +261,7 @@ def __init__(self, event_handlers=None):
|
|||
self.host = None
|
||||
self.port = None
|
||||
self.username = None
|
||||
self.daemon_version = None
|
||||
self.authentication_level = 0
|
||||
|
||||
self.connected = False
|
||||
|
@ -389,7 +391,7 @@ def __on_connect(self, result):
|
|||
log.debug('__on_connect called')
|
||||
|
||||
def on_info(daemon_info):
|
||||
self.daemon_info = daemon_info
|
||||
self.daemon_version = daemon_info
|
||||
log.debug('Got info from daemon: %s', daemon_info)
|
||||
self.daemon_info_deferred.callback(daemon_info)
|
||||
|
||||
|
@ -741,6 +743,26 @@ def connection_info(self):
|
|||
|
||||
return None
|
||||
|
||||
@property
|
||||
def daemon_version(self) -> str:
|
||||
"""Get the connected daemon version
|
||||
|
||||
Returns:
|
||||
The daemon version
|
||||
"""
|
||||
return self._daemon_proxy.daemon_version if self.connected() else ''
|
||||
|
||||
def daemon_version_check_min(self, min_version=get_version()) -> bool:
|
||||
"""Check connected daemon against a minimum version.
|
||||
|
||||
Returns:
|
||||
If connected daemon meets minimum version requirement.
|
||||
"""
|
||||
if not (self.daemon_version and min_version):
|
||||
return False
|
||||
|
||||
return VersionSplit(self.daemon_version) >= VersionSplit(min_version)
|
||||
|
||||
def register_event_handler(self, event, handler):
|
||||
"""
|
||||
Registers a handler that will be called when an event is received from the daemon.
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 551 B After Width: | Height: | Size: 418 B |
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue